<?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>206431</bug_id>
          
          <creation_ts>2020-01-17 10:58:21 -0800</creation_ts>
          <short_desc>[JSC] Add support for private class fields</short_desc>
          <delta_ts>2022-02-10 16:31:34 -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>
          
          
          <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>174212</dependson>
    
    <dependson>214311</dependson>
          <blocked>206663</blocked>
    
    <blocked>212782</blocked>
    
    <blocked>212781</blocked>
    
    <blocked>212784</blocked>
    
    <blocked>213545</blocked>
    
    <blocked>214421</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>annulen</cc>
    
    <cc>ashvayka</cc>
    
    <cc>caitp</cc>
    
    <cc>chi187</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608094</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-17 10:58:21 -0800</bug_when>
    <thetext>A separate bug for the 2nd part of https://bugs.webkit.org/show_bug.cgi?id=174212.

This implements private instance (non-static) class fields, using the framework created for public class fields. Currently, this contains a single new opcode (op_get_by_val_direct), which handles Symbol cells with PrivateSymbolImpls specially. In addition, a new flag is added to PutByValDirect, in order to distinguish between definition and assignment of private names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608102</commentid>
    <comment_count>1</comment_count>
      <attachid>388066</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-17 11:12:19 -0800</bug_when>
    <thetext>Created attachment 388066
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608190</commentid>
    <comment_count>2</comment_count>
      <attachid>388066</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-01-17 13:49:40 -0800</bug_when>
    <thetext>Comment on attachment 388066
Patch v6

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

A handful of minor things from me.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1857
&gt; +            // FIXME: only do this if there is an eval() within a nested scope --- otherwise it isn&apos;t needed.

Do we need a bug for this?

&gt; Source/JavaScriptCore/parser/Parser.cpp:5016
&gt; +                if (Options::useClassFields() &amp;&amp; match(PRIVATENAME)) {

If we&apos;re ensuring that PRIVATENAME is only lexed with useClassFields, I don&apos;t think we should need to guard instances of `match(PRIVATENAME)`.

&gt; Source/JavaScriptCore/parser/Parser.h:1244
&gt; +            ASSERT(i &lt; m_scopeStack.size());

I think this assert should be moved before the while.

&gt; Source/JavaScriptCore/parser/Parser.h:2036
&gt; +    if (isEvalNode&lt;ParsedNode&gt;() &amp;&amp; variablesUnderTDZ) {
&gt; +        if (variablesUnderTDZ-&gt;privateNamesSize()) {

nit: Doesn&apos;t seem like these need to be two separate ifs.

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:165
&gt; +    typedef WTF::IteratorRange&lt;PrivateNames::iterator&gt; PrivateNamesRange;

nit: `using` is preferred over `typedef` in new code.
(Except when you&apos;re adding to an existing list of &apos;em, which is probably fine...)

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:190
&gt; +        ASSERT(privateNamesSize() &gt; 0);

Do you think this is better than an early out (kind of like what you&apos;ve got over in SymbolTable)? Seems unfortunate that you have to guard all the callsites.

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:261
&gt; +        auto it = m_rareData-&gt;m_privateNames.find(impl);
&gt; +        if (it == m_rareData-&gt;m_privateNames.end())
&gt; +            it = m_rareData-&gt;m_privateNames.add(impl, PrivateNameEntry(0)).iterator;
&gt; +        return it-&gt;value;

WTF::HashMap::add says &quot;Does nothing if the key is already present.&quot; so I don&apos;t think you need to perform the `find` here?

&gt; Source/JavaScriptCore/runtime/JSScope.cpp:343
&gt; +        if (symbolTable-&gt;hasPrivateNames()) {
&gt; +            for (auto name : symbolTable-&gt;privateNames())

Seems like this one should work without the guard? Unless it&apos;s known to be faster...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609670</commentid>
    <comment_count>3</comment_count>
      <attachid>388066</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-22 12:08:34 -0800</bug_when>
    <thetext>Comment on attachment 388066
Patch v6

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

I&apos;ve addressed the parsing comments and some of the runtime comments, the fixes should be in the next patch --- but I&apos;m not 100% sure about some of the runtime fixes, particularly getting rid of the guards in various methods.

If some questions are answered about that, I&apos;m happy to fix it.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:5016
&gt;&gt; +                if (Options::useClassFields() &amp;&amp; match(PRIVATENAME)) {
&gt; 
&gt; If we&apos;re ensuring that PRIVATENAME is only lexed with useClassFields, I don&apos;t think we should need to guard instances of `match(PRIVATENAME)`.

Done.

There are some other similar cases, like the above

```
if (Options::useClassFields())
    semanticFailIfTrue(match(PRIVATENAME), &quot;Cannot access private identifiers in an optional chain&quot;);
```

Do you think it&apos;s worth changing those too?

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1244
&gt;&gt; +            ASSERT(i &lt; m_scopeStack.size());
&gt; 
&gt; I think this assert should be moved before the while.

Done

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:2036
&gt;&gt; +        if (variablesUnderTDZ-&gt;privateNamesSize()) {
&gt; 
&gt; nit: Doesn&apos;t seem like these need to be two separate ifs.

Done

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:165
&gt;&gt; +    typedef WTF::IteratorRange&lt;PrivateNames::iterator&gt; PrivateNamesRange;
&gt; 
&gt; nit: `using` is preferred over `typedef` in new code.
&gt; (Except when you&apos;re adding to an existing list of &apos;em, which is probably fine...)

Done

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:190
&gt;&gt; +        ASSERT(privateNamesSize() &gt; 0);
&gt; 
&gt; Do you think this is better than an early out (kind of like what you&apos;ve got over in SymbolTable)? Seems unfortunate that you have to guard all the callsites.

The reason for the guard is that we need to have `m_rareData` to get valid iterators for the WTF::IteratorRange. The reason for this is because of assertions which fire in HashTableIterator::checkValidity(). It doesnt seem to be a problem for release builds, but for development builds we seem to need this to avoid assertion failures if an IteratorRange is created from invalid iterators.

There may be a way around this, but I&apos;m not certain what it is yet.

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:261
&gt;&gt; +        return it-&gt;value;
&gt; 
&gt; WTF::HashMap::add says &quot;Does nothing if the key is already present.&quot; so I don&apos;t think you need to perform the `find` here?

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1609727</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-01-22 13:45:19 -0800</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #3)
&gt; &gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:5016
&gt; &gt;&gt; +                if (Options::useClassFields() &amp;&amp; match(PRIVATENAME)) {
&gt; &gt; 
&gt; &gt; If we&apos;re ensuring that PRIVATENAME is only lexed with useClassFields, I don&apos;t think we should need to guard instances of `match(PRIVATENAME)`.
&gt; 
&gt; Done.
&gt; 
&gt; There are some other similar cases, like the above
&gt; 
&gt; ```
&gt; if (Options::useClassFields())
&gt;     semanticFailIfTrue(match(PRIVATENAME), &quot;Cannot access private
&gt; identifiers in an optional chain&quot;);
&gt; ```
&gt; 
&gt; Do you think it&apos;s worth changing those too?

Yeah, I&apos;d vote for doing so.

&gt; &gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:190
&gt; &gt;&gt; +        ASSERT(privateNamesSize() &gt; 0);
&gt; &gt; 
&gt; &gt; Do you think this is better than an early out (kind of like what you&apos;ve got over in SymbolTable)? Seems unfortunate that you have to guard all the callsites.
&gt; 
&gt; The reason for the guard is that we need to have `m_rareData` to get valid
&gt; iterators for the WTF::IteratorRange. The reason for this is because of
&gt; assertions which fire in HashTableIterator::checkValidity(). It doesnt seem
&gt; to be a problem for release builds, but for development builds we seem to
&gt; need this to avoid assertion failures if an IteratorRange is created from
&gt; invalid iterators.
&gt; 
&gt; There may be a way around this, but I&apos;m not certain what it is yet.

Sure -- I guess I was hoping `PrivateNamesRange(nullptr, nullptr)` would just work, like with PrivateNameIteratorRange, but if it&apos;s not that simple, then no worries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610098</commentid>
    <comment_count>5</comment_count>
      <attachid>388545</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-23 08:12:06 -0800</bug_when>
    <thetext>Created attachment 388545
Patch v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610099</commentid>
    <comment_count>6</comment_count>
      <attachid>388066</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-01-23 08:14:12 -0800</bug_when>
    <thetext>Comment on attachment 388066
Patch v6

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

Ready for the next round, imho

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1857
&gt;&gt; +            // FIXME: only do this if there is an eval() within a nested scope --- otherwise it isn&apos;t needed.
&gt; 
&gt; Do we need a bug for this?

Done

&gt;&gt; Source/JavaScriptCore/runtime/JSScope.cpp:343
&gt;&gt; +            for (auto name : symbolTable-&gt;privateNames())
&gt; 
&gt; Seems like this one should work without the guard? Unless it&apos;s known to be faster...

It doesn&apos;t, it&apos;s the same HashTable iterator as in the other case :( I&apos;ve simplified both instances of this and added a comment to explain why the guarded access is needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1610160</commentid>
    <comment_count>7</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-01-23 09:59:09 -0800</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #6)
&gt; &gt;&gt; Source/JavaScriptCore/runtime/JSScope.cpp:343
&gt; &gt;&gt; +            for (auto name : symbolTable-&gt;privateNames())
&gt; &gt; 
&gt; &gt; Seems like this one should work without the guard? Unless it&apos;s known to be faster...
&gt; 
&gt; It doesn&apos;t, it&apos;s the same HashTable iterator as in the other case :( I&apos;ve
&gt; simplified both instances of this and added a comment to explain why the
&gt; guarded access is needed

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611291</commentid>
    <comment_count>8</comment_count>
      <attachid>388545</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-26 21:45:17 -0800</bug_when>
    <thetext>Comment on attachment 388545
Patch v7

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

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:865
&gt; +        if (found == (bytecode.m_flags &amp; PutByValThrowIfExists)) {

Windows warns here:

JavaScriptCore\jit/JITOperations.cpp(865,64): warning C4805: &apos;==&apos;: unsafe mix of type &apos;bool&apos; and type &apos;int&apos; in operation

Could fix by adding !! prefix or != 0 suffix to the second half of the expression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1611914</commentid>
    <comment_count>9</comment_count>
      <attachid>388545</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-01-28 07:32:55 -0800</bug_when>
    <thetext>Comment on attachment 388545
Patch v7

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

I left some comments there.

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +        To illustrate, typical private field access will look like:

It would be nice have an explanation why we need to have this private symbol lookup on CL, otherwise we could simply use any `get_by_id` variant. It could be a short text explaining that different evaluations of class can&apos;t access private fields of each other.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:868
&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset, m_ident.length()));

I don&apos;t understand why we need `emitProfileType` here. I&apos;m having a hard time to see how this would be reported to the user, and how this would be relevant.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:896
&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset, m_ident.length()));

ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2032
&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset + ident.length(), -1));

ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4441
&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset + m_ident-&gt;length(), -1));

ditto.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:682
&gt; +{

We should add test cases for the PrivateName path

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:719
&gt; +void JIT_OPERATION operationPutByIdPutPrivateStrictOptimize(JSGlobalObject* globalObject, StructureStubInfo* stubInfo, EncodedJSValue encodedValue, EncodedJSValue encodedBase, UniquedStringImpl* uid)

Ditto.

&gt; Source/JavaScriptCore/parser/Parser.h:488
&gt; +    void copyPrivateNameUses(Scope&amp; other)

See comments on `VariableEnvironment.h`

&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt; +    bool copyPrivateNameUsesToOuterScope()

I think it is better name this as `copyUndeclaredPrivateNameUsesToOuterScope`.

&gt; Source/JavaScriptCore/parser/Parser.h:1249
&gt; +        current-&gt;copyPrivateNameUses(m_scopeStack[i]);

See comments on `VariableEnvironment.h`

&gt; Source/JavaScriptCore/parser/Parser.h:2034
&gt; +    if (isEvalNode&lt;ParsedNode&gt;() &amp;&amp; variablesUnderTDZ &amp;&amp; variablesUnderTDZ-&gt;privateNamesSize()) {

Maybe it is a good time to rename `variablesUnderTDZ` to `privateNamesAndVariablesUnderTDZ`?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:223
&gt; +    ALWAYS_INLINE void copyPrivateNameUses(VariableEnvironment&amp; outer) const {

I think this would be better to understand if called `copyUndeclaredPrivateNames`, given we don&apos;t copy declared private names.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1168
&gt; +        });

nit: fix spacing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615065</commentid>
    <comment_count>10</comment_count>
      <attachid>389815</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-02-05 09:00:17 -0800</bug_when>
    <thetext>Created attachment 389815
Patch v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615066</commentid>
    <comment_count>11</comment_count>
      <attachid>388545</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-02-05 09:01:22 -0800</bug_when>
    <thetext>Comment on attachment 388545
Patch v7

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

I&apos;ve tried to address each of these.

&gt;&gt; Source/JavaScriptCore/ChangeLog:24
&gt;&gt; +        To illustrate, typical private field access will look like:
&gt; 
&gt; It would be nice have an explanation why we need to have this private symbol lookup on CL, otherwise we could simply use any `get_by_id` variant. It could be a short text explaining that different evaluations of class can&apos;t access private fields of each other.

```
Private field names are loaded from scope before their use. This prevents multiple evaluations
of the same class source from accessing each other&apos;s private fields, because the values of the
symbols loaded from the class scope would be distinct. This is required by the proposal text,
and is the key reason why we use ByVal lookups rather than ById lookups.
```

hope that covers it 👍

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:868
&gt;&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset, m_ident.length()));
&gt; 
&gt; I don&apos;t understand why we need `emitProfileType` here. I&apos;m having a hard time to see how this would be reported to the user, and how this would be relevant.

Based on the comments from part1, it&apos;s not. I guess there were more instances of this added in part 2. Cleaning them up now.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:896
&gt;&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset, m_ident.length()));
&gt; 
&gt; ditto.

gone

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2032
&gt;&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset + ident.length(), -1));
&gt; 
&gt; ditto.

done

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:4441
&gt;&gt; +        generator.emitProfileType(privateName.get(), var, m_position, JSTextPosition(-1, m_position.offset + m_ident-&gt;length(), -1));
&gt; 
&gt; ditto.

gone

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:865
&gt;&gt; +        if (found == (bytecode.m_flags &amp; PutByValThrowIfExists)) {
&gt; 
&gt; Windows warns here:
&gt; 
&gt; JavaScriptCore\jit/JITOperations.cpp(865,64): warning C4805: &apos;==&apos;: unsafe mix of type &apos;bool&apos; and type &apos;int&apos; in operation
&gt; 
&gt; Could fix by adding !! prefix or != 0 suffix to the second half of the expression.

Done

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:488
&gt;&gt; +    void copyPrivateNameUses(Scope&amp; other)
&gt; 
&gt; See comments on `VariableEnvironment.h`

Done

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1238
&gt;&gt; +    bool copyPrivateNameUsesToOuterScope()
&gt; 
&gt; I think it is better name this as `copyUndeclaredPrivateNameUsesToOuterScope`.

Fair enough, done

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1249
&gt;&gt; +        current-&gt;copyPrivateNameUses(m_scopeStack[i]);
&gt; 
&gt; See comments on `VariableEnvironment.h`

Done

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:2034
&gt;&gt; +    if (isEvalNode&lt;ParsedNode&gt;() &amp;&amp; variablesUnderTDZ &amp;&amp; variablesUnderTDZ-&gt;privateNamesSize()) {
&gt; 
&gt; Maybe it is a good time to rename `variablesUnderTDZ` to `privateNamesAndVariablesUnderTDZ`?

I&apos;m not sure if the extra verbosity really adds much, especially since the private names are really just variables anyways. If everyone else feels it&apos;s worth it, then by all means.

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:223
&gt;&gt; +    ALWAYS_INLINE void copyPrivateNameUses(VariableEnvironment&amp; outer) const {
&gt; 
&gt; I think this would be better to understand if called `copyUndeclaredPrivateNames`, given we don&apos;t copy declared private names.

fair enough, done

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1168
&gt;&gt; +        });
&gt; 
&gt; nit: fix spacing.

I know check-webkit-style complains, but this is consistent with the style of the rest of the file, so I don&apos;t think changing it is a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615732</commentid>
    <comment_count>12</comment_count>
      <attachid>389815</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-02-06 12:15:21 -0800</bug_when>
    <thetext>Comment on attachment 389815
Patch v8

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

&gt; Source/JavaScriptCore/ChangeLog:27
&gt; +        and is the key reason why we use ByVal lookups rather than ById lookups.

@Saam and @Yusuke, We are interested in receive feedback from this approach of loading PrivateNames from class scope. We are following the same approach to store private methods/accessors and it would be good to know if we can keep working in that direction on those patches.

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:139
&gt; +    ECMAMode ecmaMode, PutKind putKind, PutByValFlags flags)

We need to change 32-bits as well. Right now it is causing compilation error on ARMv7 EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620631</commentid>
    <comment_count>13</comment_count>
      <attachid>389815</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-02-19 06:10:09 -0800</bug_when>
    <thetext>Comment on attachment 389815
Patch v8

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:1563
&gt; +        osrExitPoint(size, metadata, return)

We are missing proper support for OSR return location of `op_get_by_val_direct`, but I think this can be included in a followup when we add support for DFG.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:1666
&gt; +        getterSetterOSRExitReturnPoint(op_%opcodeName%, size)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620651</commentid>
    <comment_count>14</comment_count>
      <attachid>391161</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-02-19 07:59:53 -0800</bug_when>
    <thetext>Created attachment 391161
Patch v9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620725</commentid>
    <comment_count>15</comment_count>
      <attachid>389815</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-02-19 10:20:18 -0800</bug_when>
    <thetext>Comment on attachment 389815
Patch v8

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

&gt;&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:139
&gt;&gt; +    ECMAMode ecmaMode, PutKind putKind, PutByValFlags flags)
&gt; 
&gt; We need to change 32-bits as well. Right now it is causing compilation error on ARMv7 EWS.

Done, ARMv7 EWS is green now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621284</commentid>
    <comment_count>16</comment_count>
      <attachid>391161</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-02-20 10:31:42 -0800</bug_when>
    <thetext>Comment on attachment 391161
Patch v9

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

This already has my blessing, but here a couple final nits, of the nittiest variety. :P

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:731
&gt; +        RegisterID* symbol = generator.emitCall(generator.finalDestination(nullptr, createPrivateSymbol.get()), createPrivateSymbol.get(), NoExpectedFunction, arguments, position(), position(), position(), DebuggableCall::No);

nit: Here and below, I think new code should use RefPtr&lt;RegisterID&gt; instead of RegisterID* for locals.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1112
&gt; +        bool isIdentifierStart = isPrivateName ? m_buffer16.size() == 1: !m_buffer16.size();

style nit: missing space before colon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622163</commentid>
    <comment_count>17</comment_count>
      <attachid>391542</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-02-24 08:02:45 -0800</bug_when>
    <thetext>Created attachment 391542
Patch v10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624258</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-29 01:30:12 -0800</bug_when>
    <thetext>Will look in weekend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626663</commentid>
    <comment_count>19</comment_count>
      <attachid>392723</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-03-06 08:06:57 -0800</bug_when>
    <thetext>Created attachment 392723
Patch v11

periodic rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627733</commentid>
    <comment_count>20</comment_count>
      <attachid>393027</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-03-09 07:15:46 -0700</bug_when>
    <thetext>Created attachment 393027
Patch v12

Added a new feature flag (JSC::Options::usePrivateClassFields)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627849</commentid>
    <comment_count>21</comment_count>
      <attachid>393054</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-03-09 10:55:30 -0700</bug_when>
    <thetext>Created attachment 393054
Patch v13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632202</commentid>
    <comment_count>22</comment_count>
      <attachid>394108</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-03-20 12:12:59 -0700</bug_when>
    <thetext>Created attachment 394108
Patch v14

Periodic rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643659</commentid>
    <comment_count>23</comment_count>
      <attachid>397021</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-20 15:06:16 -0700</bug_when>
    <thetext>Created attachment 397021
Patch v15</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643737</commentid>
    <comment_count>24</comment_count>
      <attachid>397021</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-20 19:46:29 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        subtle, but revolve around whether or not an exception is thrown during certain accesses.

maybe it&apos;s best to enumerate those cases here so folks reading the changelog can understand them

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        Private field names are loaded from scope before their use. This prevents multiple evaluations
&gt; +        of the same class source from accessing each other&apos;s private fields, because the values of the
&gt; +        symbols loaded from the class scope would be distinct. This is required by the proposal text,
&gt; +        and is the key reason why we use ByVal lookups rather than ById lookups.

Maybe also worth saying that we create the symbols during class creation

&gt; Source/JavaScriptCore/ChangeLog:32
&gt; +        resolve_scope      &lt;scope=&gt;, &lt;currentScope&gt;, &quot;#x&quot;, GlobalProperty, 0
&gt; +        get_from_scope     &lt;symbol=&gt;, &lt;scope&gt;, &quot;#x&quot;, 1050624&lt;DoNotThrowIfNotFound|GlobalProperty|NotInitialization&gt;, 0, 0
&gt; +        get_by_val_direct  &lt;value=&gt;, &lt;receiver --- probably &apos;this&apos;&gt;, &lt;symbol&gt;

this is nice

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:3
&gt; + * Copyright (C) 2019 Igalia S.L.

a lot of these should be 2020 now. Sorry for taking so long to review :-(

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:33
&gt; +enum class PrivateFieldAccess : uint8_t {

name nit: This feels like the name should be something like PrivateFieldAccessKind

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:36
&gt; +    Create,

I prefer this name over &quot;add&quot;. I also like &quot;define&quot;. See other comments on the &quot;Add&quot; naming.

&gt; Source/JavaScriptCore/bytecode/PutKind.h:30
&gt; +enum PutKind { Direct, NotDirect, DirectAddPrivate, DirectPutPrivate };

nit: I&apos;m a fan of having the shared part of these names come before the non shared part, so I&apos;d do:
DirectPrivateAdd and DirectPrivatePut

Also, see another comment I made about &quot;add&quot; feels like the wrong name.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2714
&gt; +RegisterID* BytecodeGenerator::emitPrivateFieldAdd(RegisterID* base, RegisterID* property, RegisterID* value)

nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:557
&gt; +    for (; p; p = p-&gt;m_next) {

I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&quot;Iterate over the remaining properties in the list.&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:882
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

no need for &quot;newTemporary&quot; here. Also, this use is slightly wrong if we relied on it, as we have no +1 ref to it.
(Also, weirdly, that function doesn&apos;t actually seem to store into dst...)

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2140
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

same comment here on newTemporary. I&apos;m guessing this shows up in a few other places in this patch too.

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:300
&gt; +    case op_get_by_val_direct: // FIXME: op_get_by_val_direct will need DFG/FTL support to ship class fields.

link to a bug here

Also, does the new version of PutByValDirect work in DFG/FTL?

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:156
&gt; +    if (UNLIKELY(m_private != PrivateFieldAccess::None)) {

not a fan of this UNLIKELY here since once private fields are used who knows if this is unlikely or not

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:728
&gt; +    bool found = baseObject-&gt;isProxy() ? JSObject::getOwnPropertySlot(baseObject, globalObject, ident, slot)
&gt; +        : baseValue.getOwnPropertySlot(globalObject, ident, slot);

what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.

Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:732
&gt; +    if (putKind == DirectAddPrivate &amp;&amp; found)
&gt; +        throwException(globalObject, scope, createRedefinedPrivateNameError(globalObject));

What JS code reaches this?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:738
&gt; +    Structure* structure = 0;

nullptr

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:760
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:775
&gt; +    putPrivateField(vm, globalObject, callFrame, baseObject, identifier, value, DirectAddPrivate, [=](VM&amp; vm, CodeBlock* codeBlock, Structure* structure, PutPropertySlot&amp; putSlot, const Identifier&amp; ident) {

I&apos;d use a &quot;&amp;&quot; lambda for consistency w/ below

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:779
&gt; +        if (accessType != static_cast&lt;AccessType&gt;(stubInfo-&gt;accessType))
&gt; +            return;

can we actually call a setter here? Feels like maybe this should be an assert?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:784
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:798
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:822
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:922
&gt; +    if (property.isPrivateName()) {

Could this be conflated with a privateName from a builtin?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:926
&gt; +        PropertySlot slot(baseObject, PropertySlot::InternalMethodType::VMInquiry);

VMInquiry feels wrong here. Is this also to skip over proxy?

I feel like the invariant here is that private fields must end up in normal property storage. If my understanding is correct, maybe just add a helper for get/set private field on JSObject?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1155
&gt; +            if (found == bool(bytecode.m_flags.isPrivateFieldAdd()))

bool(...) not needed

&gt; Source/JavaScriptCore/parser/Parser.cpp:3057
&gt; +        semanticFailIfFalse(copyUndeclaredPrivateNamesToOuterScope(), &quot;Cannot reference undeclared private names&quot;);

nit: maybe we can provide at least one of the names for a better error message? (Could be a follow-up)

&gt; Source/JavaScriptCore/parser/Parser.cpp:4828
&gt; +bool Parser&lt;LexerType&gt;::ensurePrivateNameUsed(const Identifier* ident)

name nit: this feels like the slightly wrong name given a boolean returns if it&apos;s valid or not, and the name contains &quot;ensure&quot; as a verb

Maybe just &quot;usePrivateName&quot;?

&gt; Source/JavaScriptCore/parser/Parser.cpp:4836
&gt; +    ScopeRef current = currentPrivateNameScope(&amp;found);
&gt; +    if (!found)
&gt; +        return false;

nit: maybe just have this be &quot;hasPrivateNameScope&quot;?

&gt; Source/JavaScriptCore/parser/Parser.h:887
&gt; +    bool m_isPrivateNameScope;

do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.

&gt; Source/JavaScriptCore/parser/Parser.h:1232
&gt; +    ScopeRef currentPrivateNameScope(bool *found = 0)

&quot;bool *found&quot; =&gt; &quot;bool* found&quot;
&quot;= 0&quot; =&gt; &quot;= nullptr&quot;

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:108
&gt; +    enum Traits : uint16_t {

why uint16_t?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:172
&gt; +        auto&amp; meta = getOrAddPrivateName(identifier.get());

what is meta?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:185
&gt; +            find(identifier)-&gt;value.setIsCaptured();

couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:209
&gt; +    ALWAYS_INLINE void copyPrivateNames(VariableEnvironment&amp; other) const

name nit: maybe &quot;copyPrivateNamesTo&quot;?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:223
&gt; +    ALWAYS_INLINE void copyUndeclaredPrivateNames(VariableEnvironment&amp; outer) const {

style nit: brace goes on following line
name nit: maybe also suffix of &quot;To&quot; here to method name?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:316
&gt; +static EncodedJSValue JSC_HOST_CALL createPrivateSymbol(JSGlobalObject* globalObject, CallFrame*)
&gt; +{
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    return JSValue::encode(Symbol::create(vm, PrivateSymbolImpl::createNullSymbol().get()));
&gt; +}

Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?

(A follow-up is ok for that.)

That should speed up class creation w/ private fields by some amount.

Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1205
&gt; +            init.set(JSFunction::create(init.vm, jsCast&lt;JSGlobalObject*&gt;(init.owner), 0, String(), createPrivateSymbol));
&gt; +        });

style nit: spacing is off here

&gt; JSTests/stress/put-by-val-direct-putprivate.js:1
&gt; +// TODO: //@ requireOptions(&quot;--usePrivateClassFields=1&quot;)

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643738</commentid>
    <comment_count>25</comment_count>
      <attachid>397021</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-20 19:46:35 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        subtle, but revolve around whether or not an exception is thrown during certain accesses.

maybe it&apos;s best to enumerate those cases here so folks reading the changelog can understand them

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        Private field names are loaded from scope before their use. This prevents multiple evaluations
&gt; +        of the same class source from accessing each other&apos;s private fields, because the values of the
&gt; +        symbols loaded from the class scope would be distinct. This is required by the proposal text,
&gt; +        and is the key reason why we use ByVal lookups rather than ById lookups.

Maybe also worth saying that we create the symbols during class creation

&gt; Source/JavaScriptCore/ChangeLog:32
&gt; +        resolve_scope      &lt;scope=&gt;, &lt;currentScope&gt;, &quot;#x&quot;, GlobalProperty, 0
&gt; +        get_from_scope     &lt;symbol=&gt;, &lt;scope&gt;, &quot;#x&quot;, 1050624&lt;DoNotThrowIfNotFound|GlobalProperty|NotInitialization&gt;, 0, 0
&gt; +        get_by_val_direct  &lt;value=&gt;, &lt;receiver --- probably &apos;this&apos;&gt;, &lt;symbol&gt;

this is nice

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:3
&gt; + * Copyright (C) 2019 Igalia S.L.

a lot of these should be 2020 now. Sorry for taking so long to review :-(

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:33
&gt; +enum class PrivateFieldAccess : uint8_t {

name nit: This feels like the name should be something like PrivateFieldAccessKind

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:36
&gt; +    Create,

I prefer this name over &quot;add&quot;. I also like &quot;define&quot;. See other comments on the &quot;Add&quot; naming.

&gt; Source/JavaScriptCore/bytecode/PutKind.h:30
&gt; +enum PutKind { Direct, NotDirect, DirectAddPrivate, DirectPutPrivate };

nit: I&apos;m a fan of having the shared part of these names come before the non shared part, so I&apos;d do:
DirectPrivateAdd and DirectPrivatePut

Also, see another comment I made about &quot;add&quot; feels like the wrong name.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2714
&gt; +RegisterID* BytecodeGenerator::emitPrivateFieldAdd(RegisterID* base, RegisterID* property, RegisterID* value)

nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:557
&gt; +    for (; p; p = p-&gt;m_next) {

I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&quot;Iterate over the remaining properties in the list.&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:882
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

no need for &quot;newTemporary&quot; here. Also, this use is slightly wrong if we relied on it, as we have no +1 ref to it.
(Also, weirdly, that function doesn&apos;t actually seem to store into dst...)

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2140
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

same comment here on newTemporary. I&apos;m guessing this shows up in a few other places in this patch too.

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:300
&gt; +    case op_get_by_val_direct: // FIXME: op_get_by_val_direct will need DFG/FTL support to ship class fields.

link to a bug here

Also, does the new version of PutByValDirect work in DFG/FTL?

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:156
&gt; +    if (UNLIKELY(m_private != PrivateFieldAccess::None)) {

not a fan of this UNLIKELY here since once private fields are used who knows if this is unlikely or not

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:728
&gt; +    bool found = baseObject-&gt;isProxy() ? JSObject::getOwnPropertySlot(baseObject, globalObject, ident, slot)
&gt; +        : baseValue.getOwnPropertySlot(globalObject, ident, slot);

what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.

Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:732
&gt; +    if (putKind == DirectAddPrivate &amp;&amp; found)
&gt; +        throwException(globalObject, scope, createRedefinedPrivateNameError(globalObject));

What JS code reaches this?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:738
&gt; +    Structure* structure = 0;

nullptr

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:760
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:775
&gt; +    putPrivateField(vm, globalObject, callFrame, baseObject, identifier, value, DirectAddPrivate, [=](VM&amp; vm, CodeBlock* codeBlock, Structure* structure, PutPropertySlot&amp; putSlot, const Identifier&amp; ident) {

I&apos;d use a &quot;&amp;&quot; lambda for consistency w/ below

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:779
&gt; +        if (accessType != static_cast&lt;AccessType&gt;(stubInfo-&gt;accessType))
&gt; +            return;

can we actually call a setter here? Feels like maybe this should be an assert?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:784
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:798
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:822
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:922
&gt; +    if (property.isPrivateName()) {

Could this be conflated with a privateName from a builtin?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:926
&gt; +        PropertySlot slot(baseObject, PropertySlot::InternalMethodType::VMInquiry);

VMInquiry feels wrong here. Is this also to skip over proxy?

I feel like the invariant here is that private fields must end up in normal property storage. If my understanding is correct, maybe just add a helper for get/set private field on JSObject?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1155
&gt; +            if (found == bool(bytecode.m_flags.isPrivateFieldAdd()))

bool(...) not needed

&gt; Source/JavaScriptCore/parser/Parser.cpp:3057
&gt; +        semanticFailIfFalse(copyUndeclaredPrivateNamesToOuterScope(), &quot;Cannot reference undeclared private names&quot;);

nit: maybe we can provide at least one of the names for a better error message? (Could be a follow-up)

&gt; Source/JavaScriptCore/parser/Parser.cpp:4828
&gt; +bool Parser&lt;LexerType&gt;::ensurePrivateNameUsed(const Identifier* ident)

name nit: this feels like the slightly wrong name given a boolean returns if it&apos;s valid or not, and the name contains &quot;ensure&quot; as a verb

Maybe just &quot;usePrivateName&quot;?

&gt; Source/JavaScriptCore/parser/Parser.cpp:4836
&gt; +    ScopeRef current = currentPrivateNameScope(&amp;found);
&gt; +    if (!found)
&gt; +        return false;

nit: maybe just have this be &quot;hasPrivateNameScope&quot;?

&gt; Source/JavaScriptCore/parser/Parser.h:887
&gt; +    bool m_isPrivateNameScope;

do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.

&gt; Source/JavaScriptCore/parser/Parser.h:1232
&gt; +    ScopeRef currentPrivateNameScope(bool *found = 0)

&quot;bool *found&quot; =&gt; &quot;bool* found&quot;
&quot;= 0&quot; =&gt; &quot;= nullptr&quot;

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:108
&gt; +    enum Traits : uint16_t {

why uint16_t?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:172
&gt; +        auto&amp; meta = getOrAddPrivateName(identifier.get());

what is meta?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:185
&gt; +            find(identifier)-&gt;value.setIsCaptured();

couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:209
&gt; +    ALWAYS_INLINE void copyPrivateNames(VariableEnvironment&amp; other) const

name nit: maybe &quot;copyPrivateNamesTo&quot;?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:223
&gt; +    ALWAYS_INLINE void copyUndeclaredPrivateNames(VariableEnvironment&amp; outer) const {

style nit: brace goes on following line
name nit: maybe also suffix of &quot;To&quot; here to method name?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:316
&gt; +static EncodedJSValue JSC_HOST_CALL createPrivateSymbol(JSGlobalObject* globalObject, CallFrame*)
&gt; +{
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    return JSValue::encode(Symbol::create(vm, PrivateSymbolImpl::createNullSymbol().get()));
&gt; +}

Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?

(A follow-up is ok for that.)

That should speed up class creation w/ private fields by some amount.

Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1205
&gt; +            init.set(JSFunction::create(init.vm, jsCast&lt;JSGlobalObject*&gt;(init.owner), 0, String(), createPrivateSymbol));
&gt; +        });

style nit: spacing is off here

&gt; JSTests/stress/put-by-val-direct-putprivate.js:1
&gt; +// TODO: //@ requireOptions(&quot;--usePrivateClassFields=1&quot;)

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643739</commentid>
    <comment_count>26</comment_count>
      <attachid>397021</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-20 19:46:43 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        subtle, but revolve around whether or not an exception is thrown during certain accesses.

maybe it&apos;s best to enumerate those cases here so folks reading the changelog can understand them

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        Private field names are loaded from scope before their use. This prevents multiple evaluations
&gt; +        of the same class source from accessing each other&apos;s private fields, because the values of the
&gt; +        symbols loaded from the class scope would be distinct. This is required by the proposal text,
&gt; +        and is the key reason why we use ByVal lookups rather than ById lookups.

Maybe also worth saying that we create the symbols during class creation

&gt; Source/JavaScriptCore/ChangeLog:32
&gt; +        resolve_scope      &lt;scope=&gt;, &lt;currentScope&gt;, &quot;#x&quot;, GlobalProperty, 0
&gt; +        get_from_scope     &lt;symbol=&gt;, &lt;scope&gt;, &quot;#x&quot;, 1050624&lt;DoNotThrowIfNotFound|GlobalProperty|NotInitialization&gt;, 0, 0
&gt; +        get_by_val_direct  &lt;value=&gt;, &lt;receiver --- probably &apos;this&apos;&gt;, &lt;symbol&gt;

this is nice

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:3
&gt; + * Copyright (C) 2019 Igalia S.L.

a lot of these should be 2020 now. Sorry for taking so long to review :-(

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:33
&gt; +enum class PrivateFieldAccess : uint8_t {

name nit: This feels like the name should be something like PrivateFieldAccessKind

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:36
&gt; +    Create,

I prefer this name over &quot;add&quot;. I also like &quot;define&quot;. See other comments on the &quot;Add&quot; naming.

&gt; Source/JavaScriptCore/bytecode/PutKind.h:30
&gt; +enum PutKind { Direct, NotDirect, DirectAddPrivate, DirectPutPrivate };

nit: I&apos;m a fan of having the shared part of these names come before the non shared part, so I&apos;d do:
DirectPrivateAdd and DirectPrivatePut

Also, see another comment I made about &quot;add&quot; feels like the wrong name.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2714
&gt; +RegisterID* BytecodeGenerator::emitPrivateFieldAdd(RegisterID* base, RegisterID* property, RegisterID* value)

nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:557
&gt; +    for (; p; p = p-&gt;m_next) {

I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&quot;Iterate over the remaining properties in the list.&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:882
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

no need for &quot;newTemporary&quot; here. Also, this use is slightly wrong if we relied on it, as we have no +1 ref to it.
(Also, weirdly, that function doesn&apos;t actually seem to store into dst...)

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2140
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

same comment here on newTemporary. I&apos;m guessing this shows up in a few other places in this patch too.

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:300
&gt; +    case op_get_by_val_direct: // FIXME: op_get_by_val_direct will need DFG/FTL support to ship class fields.

link to a bug here

Also, does the new version of PutByValDirect work in DFG/FTL?

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:156
&gt; +    if (UNLIKELY(m_private != PrivateFieldAccess::None)) {

not a fan of this UNLIKELY here since once private fields are used who knows if this is unlikely or not

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:728
&gt; +    bool found = baseObject-&gt;isProxy() ? JSObject::getOwnPropertySlot(baseObject, globalObject, ident, slot)
&gt; +        : baseValue.getOwnPropertySlot(globalObject, ident, slot);

what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.

Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:732
&gt; +    if (putKind == DirectAddPrivate &amp;&amp; found)
&gt; +        throwException(globalObject, scope, createRedefinedPrivateNameError(globalObject));

What JS code reaches this?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:738
&gt; +    Structure* structure = 0;

nullptr

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:760
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:775
&gt; +    putPrivateField(vm, globalObject, callFrame, baseObject, identifier, value, DirectAddPrivate, [=](VM&amp; vm, CodeBlock* codeBlock, Structure* structure, PutPropertySlot&amp; putSlot, const Identifier&amp; ident) {

I&apos;d use a &quot;&amp;&quot; lambda for consistency w/ below

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:779
&gt; +        if (accessType != static_cast&lt;AccessType&gt;(stubInfo-&gt;accessType))
&gt; +            return;

can we actually call a setter here? Feels like maybe this should be an assert?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:784
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:798
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:822
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:922
&gt; +    if (property.isPrivateName()) {

Could this be conflated with a privateName from a builtin?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:926
&gt; +        PropertySlot slot(baseObject, PropertySlot::InternalMethodType::VMInquiry);

VMInquiry feels wrong here. Is this also to skip over proxy?

I feel like the invariant here is that private fields must end up in normal property storage. If my understanding is correct, maybe just add a helper for get/set private field on JSObject?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1155
&gt; +            if (found == bool(bytecode.m_flags.isPrivateFieldAdd()))

bool(...) not needed

&gt; Source/JavaScriptCore/parser/Parser.cpp:3057
&gt; +        semanticFailIfFalse(copyUndeclaredPrivateNamesToOuterScope(), &quot;Cannot reference undeclared private names&quot;);

nit: maybe we can provide at least one of the names for a better error message? (Could be a follow-up)

&gt; Source/JavaScriptCore/parser/Parser.cpp:4828
&gt; +bool Parser&lt;LexerType&gt;::ensurePrivateNameUsed(const Identifier* ident)

name nit: this feels like the slightly wrong name given a boolean returns if it&apos;s valid or not, and the name contains &quot;ensure&quot; as a verb

Maybe just &quot;usePrivateName&quot;?

&gt; Source/JavaScriptCore/parser/Parser.cpp:4836
&gt; +    ScopeRef current = currentPrivateNameScope(&amp;found);
&gt; +    if (!found)
&gt; +        return false;

nit: maybe just have this be &quot;hasPrivateNameScope&quot;?

&gt; Source/JavaScriptCore/parser/Parser.h:887
&gt; +    bool m_isPrivateNameScope;

do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.

&gt; Source/JavaScriptCore/parser/Parser.h:1232
&gt; +    ScopeRef currentPrivateNameScope(bool *found = 0)

&quot;bool *found&quot; =&gt; &quot;bool* found&quot;
&quot;= 0&quot; =&gt; &quot;= nullptr&quot;

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:108
&gt; +    enum Traits : uint16_t {

why uint16_t?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:172
&gt; +        auto&amp; meta = getOrAddPrivateName(identifier.get());

what is meta?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:185
&gt; +            find(identifier)-&gt;value.setIsCaptured();

couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:209
&gt; +    ALWAYS_INLINE void copyPrivateNames(VariableEnvironment&amp; other) const

name nit: maybe &quot;copyPrivateNamesTo&quot;?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:223
&gt; +    ALWAYS_INLINE void copyUndeclaredPrivateNames(VariableEnvironment&amp; outer) const {

style nit: brace goes on following line
name nit: maybe also suffix of &quot;To&quot; here to method name?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:316
&gt; +static EncodedJSValue JSC_HOST_CALL createPrivateSymbol(JSGlobalObject* globalObject, CallFrame*)
&gt; +{
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    return JSValue::encode(Symbol::create(vm, PrivateSymbolImpl::createNullSymbol().get()));
&gt; +}

Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?

(A follow-up is ok for that.)

That should speed up class creation w/ private fields by some amount.

Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1205
&gt; +            init.set(JSFunction::create(init.vm, jsCast&lt;JSGlobalObject*&gt;(init.owner), 0, String(), createPrivateSymbol));
&gt; +        });

style nit: spacing is off here

&gt; JSTests/stress/put-by-val-direct-putprivate.js:1
&gt; +// TODO: //@ requireOptions(&quot;--usePrivateClassFields=1&quot;)

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643740</commentid>
    <comment_count>27</comment_count>
      <attachid>397021</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-20 19:46:45 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

&gt; Source/JavaScriptCore/ChangeLog:20
&gt; +        subtle, but revolve around whether or not an exception is thrown during certain accesses.

maybe it&apos;s best to enumerate those cases here so folks reading the changelog can understand them

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        Private field names are loaded from scope before their use. This prevents multiple evaluations
&gt; +        of the same class source from accessing each other&apos;s private fields, because the values of the
&gt; +        symbols loaded from the class scope would be distinct. This is required by the proposal text,
&gt; +        and is the key reason why we use ByVal lookups rather than ById lookups.

Maybe also worth saying that we create the symbols during class creation

&gt; Source/JavaScriptCore/ChangeLog:32
&gt; +        resolve_scope      &lt;scope=&gt;, &lt;currentScope&gt;, &quot;#x&quot;, GlobalProperty, 0
&gt; +        get_from_scope     &lt;symbol=&gt;, &lt;scope&gt;, &quot;#x&quot;, 1050624&lt;DoNotThrowIfNotFound|GlobalProperty|NotInitialization&gt;, 0, 0
&gt; +        get_by_val_direct  &lt;value=&gt;, &lt;receiver --- probably &apos;this&apos;&gt;, &lt;symbol&gt;

this is nice

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:3
&gt; + * Copyright (C) 2019 Igalia S.L.

a lot of these should be 2020 now. Sorry for taking so long to review :-(

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:33
&gt; +enum class PrivateFieldAccess : uint8_t {

name nit: This feels like the name should be something like PrivateFieldAccessKind

&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:36
&gt; +    Create,

I prefer this name over &quot;add&quot;. I also like &quot;define&quot;. See other comments on the &quot;Add&quot; naming.

&gt; Source/JavaScriptCore/bytecode/PutKind.h:30
&gt; +enum PutKind { Direct, NotDirect, DirectAddPrivate, DirectPutPrivate };

nit: I&apos;m a fan of having the shared part of these names come before the non shared part, so I&apos;d do:
DirectPrivateAdd and DirectPrivatePut

Also, see another comment I made about &quot;add&quot; feels like the wrong name.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2714
&gt; +RegisterID* BytecodeGenerator::emitPrivateFieldAdd(RegisterID* base, RegisterID* property, RegisterID* value)

nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:557
&gt; +    for (; p; p = p-&gt;m_next) {

I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&quot;Iterate over the remaining properties in the list.&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:882
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

no need for &quot;newTemporary&quot; here. Also, this use is slightly wrong if we relied on it, as we have no +1 ref to it.
(Also, weirdly, that function doesn&apos;t actually seem to store into dst...)

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2140
&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);

same comment here on newTemporary. I&apos;m guessing this shows up in a few other places in this patch too.

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:300
&gt; +    case op_get_by_val_direct: // FIXME: op_get_by_val_direct will need DFG/FTL support to ship class fields.

link to a bug here

Also, does the new version of PutByValDirect work in DFG/FTL?

&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:156
&gt; +    if (UNLIKELY(m_private != PrivateFieldAccess::None)) {

not a fan of this UNLIKELY here since once private fields are used who knows if this is unlikely or not

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:728
&gt; +    bool found = baseObject-&gt;isProxy() ? JSObject::getOwnPropertySlot(baseObject, globalObject, ident, slot)
&gt; +        : baseValue.getOwnPropertySlot(globalObject, ident, slot);

what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.

Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:732
&gt; +    if (putKind == DirectAddPrivate &amp;&amp; found)
&gt; +        throwException(globalObject, scope, createRedefinedPrivateNameError(globalObject));

What JS code reaches this?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:738
&gt; +    Structure* structure = 0;

nullptr

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:760
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:775
&gt; +    putPrivateField(vm, globalObject, callFrame, baseObject, identifier, value, DirectAddPrivate, [=](VM&amp; vm, CodeBlock* codeBlock, Structure* structure, PutPropertySlot&amp; putSlot, const Identifier&amp; ident) {

I&apos;d use a &quot;&amp;&quot; lambda for consistency w/ below

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:779
&gt; +        if (accessType != static_cast&lt;AccessType&gt;(stubInfo-&gt;accessType))
&gt; +            return;

can we actually call a setter here? Feels like maybe this should be an assert?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:784
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:798
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:822
&gt; +    RETURN_IF_EXCEPTION(scope, void());

can you just release the scope before calling putPrivateField?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:922
&gt; +    if (property.isPrivateName()) {

Could this be conflated with a privateName from a builtin?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:926
&gt; +        PropertySlot slot(baseObject, PropertySlot::InternalMethodType::VMInquiry);

VMInquiry feels wrong here. Is this also to skip over proxy?

I feel like the invariant here is that private fields must end up in normal property storage. If my understanding is correct, maybe just add a helper for get/set private field on JSObject?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1155
&gt; +            if (found == bool(bytecode.m_flags.isPrivateFieldAdd()))

bool(...) not needed

&gt; Source/JavaScriptCore/parser/Parser.cpp:3057
&gt; +        semanticFailIfFalse(copyUndeclaredPrivateNamesToOuterScope(), &quot;Cannot reference undeclared private names&quot;);

nit: maybe we can provide at least one of the names for a better error message? (Could be a follow-up)

&gt; Source/JavaScriptCore/parser/Parser.cpp:4828
&gt; +bool Parser&lt;LexerType&gt;::ensurePrivateNameUsed(const Identifier* ident)

name nit: this feels like the slightly wrong name given a boolean returns if it&apos;s valid or not, and the name contains &quot;ensure&quot; as a verb

Maybe just &quot;usePrivateName&quot;?

&gt; Source/JavaScriptCore/parser/Parser.cpp:4836
&gt; +    ScopeRef current = currentPrivateNameScope(&amp;found);
&gt; +    if (!found)
&gt; +        return false;

nit: maybe just have this be &quot;hasPrivateNameScope&quot;?

&gt; Source/JavaScriptCore/parser/Parser.h:887
&gt; +    bool m_isPrivateNameScope;

do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.

&gt; Source/JavaScriptCore/parser/Parser.h:1232
&gt; +    ScopeRef currentPrivateNameScope(bool *found = 0)

&quot;bool *found&quot; =&gt; &quot;bool* found&quot;
&quot;= 0&quot; =&gt; &quot;= nullptr&quot;

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:108
&gt; +    enum Traits : uint16_t {

why uint16_t?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:172
&gt; +        auto&amp; meta = getOrAddPrivateName(identifier.get());

what is meta?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:185
&gt; +            find(identifier)-&gt;value.setIsCaptured();

couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:209
&gt; +    ALWAYS_INLINE void copyPrivateNames(VariableEnvironment&amp; other) const

name nit: maybe &quot;copyPrivateNamesTo&quot;?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:223
&gt; +    ALWAYS_INLINE void copyUndeclaredPrivateNames(VariableEnvironment&amp; outer) const {

style nit: brace goes on following line
name nit: maybe also suffix of &quot;To&quot; here to method name?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:316
&gt; +static EncodedJSValue JSC_HOST_CALL createPrivateSymbol(JSGlobalObject* globalObject, CallFrame*)
&gt; +{
&gt; +    VM&amp; vm = globalObject-&gt;vm();
&gt; +    return JSValue::encode(Symbol::create(vm, PrivateSymbolImpl::createNullSymbol().get()));
&gt; +}

Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?

(A follow-up is ok for that.)

That should speed up class creation w/ private fields by some amount.

Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1205
&gt; +            init.set(JSFunction::create(init.vm, jsCast&lt;JSGlobalObject*&gt;(init.owner), 0, String(), createPrivateSymbol));
&gt; +        });

style nit: spacing is off here

&gt; JSTests/stress/put-by-val-direct-putprivate.js:1
&gt; +// TODO: //@ requireOptions(&quot;--usePrivateClassFields=1&quot;)

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643742</commentid>
    <comment_count>28</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-04-20 19:47:35 -0700</bug_when>
    <thetext>Ughhh, sorry for the repeated duplicate comments. Not sure how that happened. They&apos;re all the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643769</commentid>
    <comment_count>29</comment_count>
      <attachid>397021</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-20 21:42:14 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

Thanks for the look, I&apos;ve gone over a bunch of these to answer some questions --- I&apos;ll start working on technical changes and nits and making sure all the testing that I think we have is actually in the branch this week.

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:557
&gt;&gt;&gt;&gt;&gt; +    for (; p; p = p-&gt;m_next) {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt;&gt;&gt;&gt; &quot;Iterate over the remaining properties in the list.&quot;
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt;&gt;&gt; &quot;Iterate over the remaining properties in the list.&quot;
&gt;&gt; 
&gt;&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt;&gt; &quot;Iterate over the remaining properties in the list.&quot;
&gt; 
&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt; &quot;Iterate over the remaining properties in the list.&quot;

It should probably have a better comment.

This is essentially:

```
propertyNames.forEach(name =&gt; {
  if (name.isPrivate())
    lexicalScope[name.toString() /* &quot;#foo&quot; or whatever */] = intrinsicCreatePrivateSymbol();
});
```

This allows them to be referenced by computed property expressions. There&apos;s a test262 test which verifies this.

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:300
&gt;&gt;&gt;&gt;&gt; +    case op_get_by_val_direct: // FIXME: op_get_by_val_direct will need DFG/FTL support to ship class fields.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; link to a bug here
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Also, does the new version of PutByValDirect work in DFG/FTL?
&gt;&gt;&gt; 
&gt;&gt;&gt; link to a bug here
&gt;&gt;&gt; 
&gt;&gt;&gt; Also, does the new version of PutByValDirect work in DFG/FTL?
&gt;&gt; 
&gt;&gt; link to a bug here
&gt;&gt; 
&gt;&gt; Also, does the new version of PutByValDirect work in DFG/FTL?
&gt; 
&gt; link to a bug here
&gt; 
&gt; Also, does the new version of PutByValDirect work in DFG/FTL?

At least to some extent, it does. I thought we had more stress tests in this branch, but there are so many branches at this point it&apos;s hard to keep track. I&apos;ll see about bringing in more of them this week.

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:728
&gt;&gt;&gt;&gt;&gt; +        : baseValue.getOwnPropertySlot(globalObject, ident, slot);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?
&gt;&gt;&gt; 
&gt;&gt;&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt;&gt;&gt; 
&gt;&gt;&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?
&gt;&gt; 
&gt;&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt;&gt; 
&gt;&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?
&gt; 
&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt; 
&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?

In the current spec, skipping DOMWindow shouldn&apos;t be relevant as it will never be a possible private field recipient (I think myself and Caio have discussed this possibility in past months).
An alternative that was considered was to add a method to find if something is specifically a ProxyObject or not, and base the test on that --- we&apos;re of course happy to do that if preferred.

I&apos;m not clear on what you mean by leaking the symbol using `with` statements, because private fields are never resolve nodes, so there should be no way to get one from a proxy. Is that the sort of test you&apos;re referring to, or something I am missing?

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:732
&gt;&gt;&gt;&gt;&gt; +        throwException(globalObject, scope, createRedefinedPrivateNameError(globalObject));
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; What JS code reaches this?
&gt;&gt;&gt; 
&gt;&gt;&gt; What JS code reaches this?
&gt;&gt; 
&gt;&gt; What JS code reaches this?
&gt; 
&gt; What JS code reaches this?

For instance:

```
class Base {
  constructor(a) { return a ? a : new Proxy(this, {}); }
}

let i = 0;
class Child {
  #x = i++;
  constructor(a) { super(a); }
}

let c = new Child(new Child());
```

We&apos;re trying to create the private #x (with the same UniuedStringImpl) twice, on the same object. I believe this case is covered in one of the tests, if not locally, then in test262.

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:922
&gt;&gt;&gt;&gt;&gt; +    if (property.isPrivateName()) {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Could this be conflated with a privateName from a builtin?
&gt;&gt;&gt; 
&gt;&gt;&gt; Could this be conflated with a privateName from a builtin?
&gt;&gt; 
&gt;&gt; Could this be conflated with a privateName from a builtin?
&gt; 
&gt; Could this be conflated with a privateName from a builtin?

Yes. We can work around this by going by the PrivateFieldAccessKind instead

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:887
&gt;&gt;&gt;&gt;&gt; +    bool m_isPrivateNameScope;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.
&gt;&gt;&gt; 
&gt;&gt;&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.
&gt;&gt; 
&gt;&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.
&gt; 
&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.

works either way for me. I like being clear that it&apos;s a private name scope (and theoretically, could be a non-class scope, in some future version of the language), but it&apos;s fine to worry about that later.

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:108
&gt;&gt;&gt;&gt;&gt; +    enum Traits : uint16_t {
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; why uint16_t?
&gt;&gt;&gt; 
&gt;&gt;&gt; why uint16_t?
&gt;&gt; 
&gt;&gt; why uint16_t?
&gt; 
&gt; why uint16_t?

cargo culted from VariableEnvironmentEntry

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:172
&gt;&gt;&gt;&gt;&gt; +        auto&amp; meta = getOrAddPrivateName(identifier.get());
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; what is meta?
&gt;&gt;&gt; 
&gt;&gt;&gt; what is meta?
&gt;&gt; 
&gt;&gt; what is meta?
&gt; 
&gt; what is meta?

It&apos;s a PrivateNameEntry, or metadata about a private name. We also work with a VariableEnvironmentEntry here, so I guess using a distinct name made sense.

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:316
&gt;&gt;&gt;&gt;&gt; +}
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; (A follow-up is ok for that.)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; That should speed up class creation w/ private fields by some amount.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.
&gt;&gt;&gt; 
&gt;&gt;&gt; Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?
&gt;&gt;&gt; 
&gt;&gt;&gt; (A follow-up is ok for that.)
&gt;&gt;&gt; 
&gt;&gt;&gt; That should speed up class creation w/ private fields by some amount.
&gt;&gt;&gt; 
&gt;&gt;&gt; Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.
&gt;&gt; 
&gt;&gt; Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?
&gt;&gt; 
&gt;&gt; (A follow-up is ok for that.)
&gt;&gt; 
&gt;&gt; That should speed up class creation w/ private fields by some amount.
&gt;&gt; 
&gt;&gt; Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.
&gt; 
&gt; Should we make this a bytecode instead of a host call? Maybe we can make it even define all the things in one go instead of repeated bytecode &quot;invocations&quot;?
&gt; 
&gt; (A follow-up is ok for that.)
&gt; 
&gt; That should speed up class creation w/ private fields by some amount.
&gt; 
&gt; Ideally, we&apos;d inline this into the compiler, but it might be tricky to inline PrivateSymbolImpl::createNullSymbol, but I haven&apos;t checked exactly what that&apos;s doing.

Agreed

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1205
&gt;&gt;&gt;&gt;&gt; +        });
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; style nit: spacing is off here
&gt;&gt;&gt; 
&gt;&gt;&gt; style nit: spacing is off here
&gt;&gt; 
&gt;&gt; style nit: spacing is off here
&gt; 
&gt; style nit: spacing is off here

I know check-webkit-style thinks so, but to me it looks to be formatted exactly the same as the rest of the file.

check-webkit-style is happy when it looks like this:

```
    // PrivateSymbols / PrivateNames
    m_linkTimeConstants[static_cast&lt;unsigned&gt;(LinkTimeConstant::createPrivateSymbol)].initLater([] (const Initializer&lt;JSCell&gt;&amp; init) {
        init.set(JSFunction::create(init.vm, jsCast&lt;JSGlobalObject*&gt;(init.owner), 0, String(), createPrivateSymbol));
        });
```

but it doesn&apos;t look very good

&gt;&gt;&gt;&gt;&gt; JSTests/stress/put-by-val-direct-putprivate.js:1
&gt;&gt;&gt;&gt;&gt; +// TODO: //@ requireOptions(&quot;--usePrivateClassFields=1&quot;)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; ?
&gt;&gt;&gt; 
&gt;&gt;&gt; ?
&gt;&gt; 
&gt;&gt; ?
&gt; 
&gt; ?

I haven&apos;t looked at this in the past few months, but at some point this was failing some DFG/FTL variants. It may still be, I&apos;ll check tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643809</commentid>
    <comment_count>30</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-04-21 01:58:40 -0700</bug_when>
    <thetext>(In reply to Caitlin Potter (:caitp) from comment #29)
&gt; In the current spec, skipping DOMWindow shouldn&apos;t be relevant as it will
&gt; never be a possible private field recipient (I think myself and Caio have
&gt; discussed this possibility in past months).
&gt; An alternative that was considered was to add a method to find if something
&gt; is specifically a ProxyObject or not, and base the test on that --- we&apos;re of
&gt; course happy to do that if preferred.

ProxyObject::getOwnPropertySlot() returns `false` for private names before doing anything observable. Am I missing something or we can just drop the checks?

Also, do we need to account for `baseValue` being a DebuggerScope? If so, DebuggerScope::getOwnPropertySlot() might require a tweak for private names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643867</commentid>
    <comment_count>31</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-21 07:30:15 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #30)
&gt; (In reply to Caitlin Potter (:caitp) from comment #29)
&gt; &gt; In the current spec, skipping DOMWindow shouldn&apos;t be relevant as it will
&gt; &gt; never be a possible private field recipient (I think myself and Caio have
&gt; &gt; discussed this possibility in past months).
&gt; &gt; An alternative that was considered was to add a method to find if something
&gt; &gt; is specifically a ProxyObject or not, and base the test on that --- we&apos;re of
&gt; &gt; course happy to do that if preferred.
&gt; 
&gt; ProxyObject::getOwnPropertySlot() returns `false` for private names before
&gt; doing anything observable. Am I missing something or we can just drop the
&gt; checks?

In the case of private fields, a Proxy can “have” private fields, attached directly to the Proxy. Because of that behaviour in the internal method, we avoid using it and use JSObject’s instead.

&gt; Also, do we need to account for `baseValue` being a DebuggerScope? If so,
&gt; DebuggerScope::getOwnPropertySlot() might require a tweak for private names.

I’m not sure exactly how we’ll want this to look in the inspector, but probably will involve some of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644016</commentid>
    <comment_count>32</comment_count>
      <attachid>397121</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-21 14:34:09 -0700</bug_when>
    <thetext>Created attachment 397121
Patch v16</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644025</commentid>
    <comment_count>33</comment_count>
      <attachid>397021</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-21 14:42:21 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

I&apos;ve addressed a bunch of these comments, a summary can be found in https://github.com/caitp/webkit/commit/f45d251b43f7f2e65e0350ab5af26b455146551e

Still working on coming up with more JIT stress tests.

&gt;&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:3
&gt;&gt; + * Copyright (C) 2019 Igalia S.L.
&gt; 
&gt; a lot of these should be 2020 now. Sorry for taking so long to review :-(

Done

&gt;&gt; Source/JavaScriptCore/bytecode/PutByValFlags.h:33
&gt;&gt; +enum class PrivateFieldAccess : uint8_t {
&gt; 
&gt; name nit: This feels like the name should be something like PrivateFieldAccessKind

sgtm, done

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2714
&gt;&gt; +RegisterID* BytecodeGenerator::emitPrivateFieldAdd(RegisterID* base, RegisterID* property, RegisterID* value)
&gt; 
&gt; nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?

I went with the spec algorithm naming convention, but yeah, sgtm. `emitDefinePrivateField` for now, maybe?

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:557
&gt;&gt; +    for (; p; p = p-&gt;m_next) {
&gt; 
&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt; &quot;Iterate over the remaining properties in the list.&quot;

I&apos;ve moved these declarations to a separate function, so this shouldn&apos;t affect cases like ObjectLiterals anymore, and the function name should be less confusing about what it&apos;s doing.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:882
&gt;&gt; +        RefPtr&lt;RegisterID&gt; scope = generator.emitResolveScope(generator.newTemporary(), var);
&gt; 
&gt; no need for &quot;newTemporary&quot; here. Also, this use is slightly wrong if we relied on it, as we have no +1 ref to it.
&gt; (Also, weirdly, that function doesn&apos;t actually seem to store into dst...)

I&apos;ve replaced `emitResolveScope(generator.newTemporary(),` with `emitResolveScope(nullptr,` which hopefully covers most of these comments.

&gt;&gt; Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:156
&gt;&gt; +    if (UNLIKELY(m_private != PrivateFieldAccess::None)) {
&gt; 
&gt; not a fan of this UNLIKELY here since once private fields are used who knows if this is unlikely or not

I&apos;ve removed it

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:760
&gt;&gt; +    RETURN_IF_EXCEPTION(scope, void());
&gt; 
&gt; can you just release the scope before calling putPrivateField?

I guess the rule for that is if it&apos;s called by C++ code or not? It looks like it works fine, so done.

Does this mean I can get rid of the ThrowScope for these JITOperations? They don&apos;t seem to be needed.

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:775
&gt;&gt; +    putPrivateField(vm, globalObject, callFrame, baseObject, identifier, value, DirectAddPrivate, [=](VM&amp; vm, CodeBlock* codeBlock, Structure* structure, PutPropertySlot&amp; putSlot, const Identifier&amp; ident) {
&gt; 
&gt; I&apos;d use a &quot;&amp;&quot; lambda for consistency w/ below

Done

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:779
&gt;&gt; +            return;
&gt; 
&gt; can we actually call a setter here? Feels like maybe this should be an assert?

Is it actually possible for StubInfo::accessType to change here? i must be missing how. But, changed to an ASSERT.

&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:922
&gt;&gt;&gt; +    if (property.isPrivateName()) {
&gt;&gt; 
&gt;&gt; Could this be conflated with a privateName from a builtin?
&gt; 
&gt; Yes. We can work around this by going by the PrivateFieldAccessKind instead

Actually, it looks like this code isn&apos;t reachable anymore at all, so I&apos;ve just deleted it.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1155
&gt;&gt; +            if (found == bool(bytecode.m_flags.isPrivateFieldAdd()))
&gt; 
&gt; bool(...) not needed

done

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3057
&gt;&gt; +        semanticFailIfFalse(copyUndeclaredPrivateNamesToOuterScope(), &quot;Cannot reference undeclared private names&quot;);
&gt; 
&gt; nit: maybe we can provide at least one of the names for a better error message? (Could be a follow-up)

I agree, keeping it simple for now though

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:4828
&gt;&gt; +bool Parser&lt;LexerType&gt;::ensurePrivateNameUsed(const Identifier* ident)
&gt; 
&gt; name nit: this feels like the slightly wrong name given a boolean returns if it&apos;s valid or not, and the name contains &quot;ensure&quot; as a verb
&gt; 
&gt; Maybe just &quot;usePrivateName&quot;?

Done

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:4836
&gt;&gt; +        return false;
&gt; 
&gt; nit: maybe just have this be &quot;hasPrivateNameScope&quot;?

How do we feel about something like `Optional&lt;ScopeRef&gt; privateNameScope()` and `ScopeRef expectPrivateNameScope()`? The latter would ASSERT, the former would return nullopt if the scope is not a PrivateNameScope.

I&apos;m open. In this case, just querying whether there is a scope or not isn&apos;t enough, since we need to affect the found scope if it&apos;s present.

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:185
&gt;&gt; +            find(identifier)-&gt;value.setIsCaptured();
&gt; 
&gt; couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?

class-fields-stress-instance.js fails if I add that assertion here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644423</commentid>
    <comment_count>34</comment_count>
      <attachid>397231</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-22 12:12:09 -0700</bug_when>
    <thetext>Created attachment 397231
Patch v17

Fixing 32bit builds (hopefully)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647355</commentid>
    <comment_count>35</comment_count>
      <attachid>397021</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-04-30 06:50:45 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:779
&gt;&gt;&gt;&gt;&gt;&gt; +            return;
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt;&gt;&gt; 
&gt;&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt;&gt; 
&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt; 
&gt; Is it actually possible for StubInfo::accessType to change here? i must be missing how. But, changed to an ASSERT.

I don&apos;t think it is possible to call setter when doing `putPrivateField`. This operation observable spec-wise.

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:185
&gt;&gt;&gt;&gt;&gt;&gt; +            find(identifier)-&gt;value.setIsCaptured();
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?
&gt;&gt;&gt; 
&gt;&gt;&gt; couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?
&gt;&gt; 
&gt;&gt; couldn&apos;t this be an assert that it&apos;s captured already? Maybe I&apos;m missing something?
&gt; 
&gt; class-fields-stress-instance.js fails if I add that assertion here

Do you mind share which JS code makes this assertion fail?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647358</commentid>
    <comment_count>36</comment_count>
      <attachid>397231</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-04-30 06:57:55 -0700</bug_when>
    <thetext>Comment on attachment 397231
Patch v17

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:3056
&gt; +        // Fail if there are no parent private name scopes and any used-but-undeclared private names.

Could you create a bug and add a FIXME here to improve this error message?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647521</commentid>
    <comment_count>37</comment_count>
      <attachid>398086</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-30 13:13:33 -0700</bug_when>
    <thetext>Created attachment 398086
Patch v18

Added a bunch of new stress tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647527</commentid>
    <comment_count>38</comment_count>
      <attachid>397021</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-04-30 13:26:33 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:20
&gt;&gt; +        subtle, but revolve around whether or not an exception is thrown during certain accesses.
&gt;
&gt; maybe it&apos;s best to enumerate those cases here so folks reading the changelog can understand them

Done (this will be in Patch v19)

&gt;&gt; Source/JavaScriptCore/ChangeLog:25
&gt;&gt; +        and is the key reason why we use ByVal lookups rather than ById lookups.
&gt; 
&gt; Maybe also worth saying that we create the symbols during class creation

Done (this will be in Patch v19)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648074</commentid>
    <comment_count>39</comment_count>
      <attachid>397021</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-01 14:51:38 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2714
&gt;&gt;&gt;&gt;&gt;&gt; +RegisterID* BytecodeGenerator::emitPrivateFieldAdd(RegisterID* base, RegisterID* property, RegisterID* value)
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?
&gt;&gt;&gt; 
&gt;&gt;&gt; nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?
&gt;&gt; 
&gt;&gt; nit on naming: I feel like &quot;add&quot; is the less idiomatic way of doing this. Maybe &quot;define&quot; somehow is better to incorporate?
&gt; 
&gt; I went with the spec algorithm naming convention, but yeah, sgtm. `emitDefinePrivateField` for now, maybe?

Gotcha. I didn&apos;t know it&apos;s the spec naming. I&apos;ll leave it up to you what to use, but I&apos;d just try to be consistent everywhere.

&gt;&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:557
&gt;&gt;&gt;&gt;&gt;&gt;&gt; +    for (; p; p = p-&gt;m_next) {
&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt;&gt;&gt;&gt;&gt;&gt; &quot;Iterate over the remaining properties in the list.&quot;
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt;&gt;&gt;&gt;&gt; &quot;Iterate over the remaining properties in the list.&quot;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt;&gt;&gt;&gt; &quot;Iterate over the remaining properties in the list.&quot;
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m a bit confused, if we&apos;re defining these properties first, what do we do in the loop that has this comment:
&gt;&gt;&gt; &quot;Iterate over the remaining properties in the list.&quot;
&gt;&gt; 
&gt;&gt; It should probably have a better comment.
&gt;&gt; 
&gt;&gt; This is essentially:
&gt;&gt; 
&gt;&gt; ```
&gt;&gt; propertyNames.forEach(name =&gt; {
&gt;&gt;   if (name.isPrivate())
&gt;&gt;     lexicalScope[name.toString() /* &quot;#foo&quot; or whatever */] = intrinsicCreatePrivateSymbol();
&gt;&gt; });
&gt;&gt; ```
&gt;&gt; 
&gt;&gt; This allows them to be referenced by computed property expressions. There&apos;s a test262 test which verifies this.
&gt; 
&gt; I&apos;ve moved these declarations to a separate function, so this shouldn&apos;t affect cases like ObjectLiterals anymore, and the function name should be less confusing about what it&apos;s doing.

👍

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:728
&gt;&gt;&gt;&gt;&gt;&gt; +        : baseValue.getOwnPropertySlot(globalObject, ident, slot);
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?
&gt;&gt;&gt; 
&gt;&gt;&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt;&gt;&gt; 
&gt;&gt;&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?
&gt;&gt; 
&gt;&gt; what&apos;s up with this proxy check? My guess is you don&apos;t want to call the Proxy hook, right? But this also skips DOMwindow.
&gt;&gt; 
&gt;&gt; Also worth thinking about and testing, what happens with &quot;with&quot; and walking the prototype chain w/ one of these symbols? Will we accidentally leak it to a proxy that way?
&gt; 
&gt; In the current spec, skipping DOMWindow shouldn&apos;t be relevant as it will never be a possible private field recipient (I think myself and Caio have discussed this possibility in past months).
&gt; An alternative that was considered was to add a method to find if something is specifically a ProxyObject or not, and base the test on that --- we&apos;re of course happy to do that if preferred.
&gt; 
&gt; I&apos;m not clear on what you mean by leaking the symbol using `with` statements, because private fields are never resolve nodes, so there should be no way to get one from a proxy. Is that the sort of test you&apos;re referring to, or something I am missing?

You&apos;re not missing anything. That&apos;s a good point that they&apos;re never resolve nodes.

For some reason, I just expected that &quot;#foo&quot; was valid

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:732
&gt;&gt;&gt;&gt;&gt;&gt; +        throwException(globalObject, scope, createRedefinedPrivateNameError(globalObject));
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; What JS code reaches this?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; What JS code reaches this?
&gt;&gt;&gt; 
&gt;&gt;&gt; What JS code reaches this?
&gt;&gt; 
&gt;&gt; What JS code reaches this?
&gt; 
&gt; For instance:
&gt; 
&gt; ```
&gt; class Base {
&gt;   constructor(a) { return a ? a : new Proxy(this, {}); }
&gt; }
&gt; 
&gt; let i = 0;
&gt; class Child {
&gt;   #x = i++;
&gt;   constructor(a) { super(a); }
&gt; }
&gt; 
&gt; let c = new Child(new Child());
&gt; ```
&gt; 
&gt; We&apos;re trying to create the private #x (with the same UniuedStringImpl) twice, on the same object. I believe this case is covered in one of the tests, if not locally, then in test262.

👍

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:760
&gt;&gt;&gt;&gt;&gt;&gt; +    RETURN_IF_EXCEPTION(scope, void());
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; can you just release the scope before calling putPrivateField?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; can you just release the scope before calling putPrivateField?
&gt;&gt;&gt; 
&gt;&gt;&gt; can you just release the scope before calling putPrivateField?
&gt;&gt; 
&gt;&gt; can you just release the scope before calling putPrivateField?
&gt; 
&gt; I guess the rule for that is if it&apos;s called by C++ code or not? It looks like it works fine, so done.
&gt; 
&gt; Does this mean I can get rid of the ThrowScope for these JITOperations? They don&apos;t seem to be needed.

This one doesn&apos;t seem to need the throw scope.

&gt;&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:779
&gt;&gt;&gt;&gt;&gt;&gt;&gt; +            return;
&gt;&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt;&gt;&gt; 
&gt;&gt;&gt; can we actually call a setter here? Feels like maybe this should be an assert?
&gt;&gt; 
&gt;&gt; Is it actually possible for StubInfo::accessType to change here? i must be missing how. But, changed to an ASSERT.
&gt; 
&gt; I don&apos;t think it is possible to call setter when doing `putPrivateField`. This operation observable spec-wise.

I think it&apos;s only possible via a setter call (or something that has arbitrary side effects), which shouldn&apos;t be possible here.

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:4836
&gt;&gt;&gt;&gt;&gt;&gt; +        return false;
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; nit: maybe just have this be &quot;hasPrivateNameScope&quot;?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; nit: maybe just have this be &quot;hasPrivateNameScope&quot;?
&gt;&gt;&gt; 
&gt;&gt;&gt; nit: maybe just have this be &quot;hasPrivateNameScope&quot;?
&gt;&gt; 
&gt;&gt; nit: maybe just have this be &quot;hasPrivateNameScope&quot;?
&gt; 
&gt; How do we feel about something like `Optional&lt;ScopeRef&gt; privateNameScope()` and `ScopeRef expectPrivateNameScope()`? The latter would ASSERT, the former would return nullopt if the scope is not a PrivateNameScope.
&gt; 
&gt; I&apos;m open. In this case, just querying whether there is a scope or not isn&apos;t enough, since we need to affect the found scope if it&apos;s present.

I think having an Optional version is fine. I&apos;d maybe have the default one assert &quot;privateNameScope&quot; and add a qualifier for the Optional one, like &quot;findPrivateNameScope&quot; or perhaps some better name.

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:887
&gt;&gt;&gt;&gt;&gt;&gt; +    bool m_isPrivateNameScope;
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.
&gt;&gt;&gt; 
&gt;&gt;&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.
&gt;&gt; 
&gt;&gt; do we really need this if we have m_isClassScope? AFAICT, they&apos;re always equal to each other.
&gt; 
&gt; works either way for me. I like being clear that it&apos;s a private name scope (and theoretically, could be a non-class scope, in some future version of the language), but it&apos;s fine to worry about that later.

I think it&apos;s good to keep the abstraction, but maybe we could do it via just the method call (isPrivateNameScope()) instead of the field.

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1205
&gt;&gt;&gt;&gt;&gt;&gt; +        });
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; style nit: spacing is off here
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; style nit: spacing is off here
&gt;&gt;&gt; 
&gt;&gt;&gt; style nit: spacing is off here
&gt;&gt; 
&gt;&gt; style nit: spacing is off here
&gt; 
&gt; I know check-webkit-style thinks so, but to me it looks to be formatted exactly the same as the rest of the file.
&gt; 
&gt; check-webkit-style is happy when it looks like this:
&gt; 
&gt; ```
&gt;     // PrivateSymbols / PrivateNames
&gt;     m_linkTimeConstants[static_cast&lt;unsigned&gt;(LinkTimeConstant::createPrivateSymbol)].initLater([] (const Initializer&lt;JSCell&gt;&amp; init) {
&gt;         init.set(JSFunction::create(init.vm, jsCast&lt;JSGlobalObject*&gt;(init.owner), 0, String(), createPrivateSymbol));
&gt;         });
&gt; ```
&gt; 
&gt; but it doesn&apos;t look very good

Gotcha. I didn&apos;t realize they were also mis-formatted. I&apos;d vote for just using the better formatting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649917</commentid>
    <comment_count>40</comment_count>
      <attachid>398691</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-06 18:27:09 -0700</bug_when>
    <thetext>Created attachment 398691
Patch v19</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649919</commentid>
    <comment_count>41</comment_count>
      <attachid>397021</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-06 18:38:38 -0700</bug_when>
    <thetext>Comment on attachment 397021
Patch v15

I&apos;ve added the helpers in JSObject.h that were discussed offline, added new tests, renamed some stuff. Hopefully this is looking pretty good for the initial patch, so that we can start working on landing all of the followups.

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:760
&gt;&gt;&gt;&gt; +    RETURN_IF_EXCEPTION(scope, void());
&gt;&gt;&gt; 
&gt;&gt;&gt; can you just release the scope before calling putPrivateField?
&gt;&gt; 
&gt;&gt; I guess the rule for that is if it&apos;s called by C++ code or not? It looks like it works fine, so done.
&gt;&gt; 
&gt;&gt; Does this mean I can get rid of the ThrowScope for these JITOperations? They don&apos;t seem to be needed.
&gt; 
&gt; This one doesn&apos;t seem to need the throw scope.

It seems to be safe to remove them for all the added JITOperations here, so I&apos;ve done that

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:926
&gt;&gt; +        PropertySlot slot(baseObject, PropertySlot::InternalMethodType::VMInquiry);
&gt; 
&gt; VMInquiry feels wrong here. Is this also to skip over proxy?
&gt; 
&gt; I feel like the invariant here is that private fields must end up in normal property storage. If my understanding is correct, maybe just add a helper for get/set private field on JSObject?

I&apos;ve added helpers in JSObject: &quot;getPrivateFieldSlot&quot; which fills in a PropertySlot and returns true or false depending on if the field is found or not, without throwing any exceptions,
&quot;getPrivateField&quot; which performs &quot;getPrivateFieldSlot&quot;, but throws a TypeError if the field is not present, &quot;putPrivateField&quot; which performs &quot;getPrivateFieldSlot&quot;, throws if the field does not exist,
and then delegates to &quot;putDirect&quot; to overwrite the field. Lastly, &quot;definePrivateField&quot;, which acts similar to &quot;putPrivateField&quot;, but throws if the field already exists. Any code which had been doing
these things before, has been changed to invoke those helpers instead.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:4836
&gt;&gt;&gt;&gt; +        return false;
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt; 
&gt;&gt;&gt; nit: maybe just have this be &quot;hasPrivateNameScope&quot;?
&gt;&gt; 
&gt;&gt; How do we feel about something like `Optional&lt;ScopeRef&gt; privateNameScope()` and `ScopeRef expectPrivateNameScope()`? The latter would ASSERT, the former would return nullopt if the scope is not a PrivateNameScope.
&gt;&gt; 
&gt;&gt; I&apos;m open. In this case, just querying whether there is a scope or not isn&apos;t enough, since we need to affect the found scope if it&apos;s present.
&gt; 
&gt; I think having an Optional version is fine. I&apos;d maybe have the default one assert &quot;privateNameScope&quot; and add a qualifier for the Optional one, like &quot;findPrivateNameScope&quot; or perhaps some better name.

I like &quot;findPrivateNameScope&quot;, done

&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:887
&gt;&gt;&gt; +    bool m_isPrivateNameScope;
&gt;&gt; 
&gt;&gt; works either way for me. I like being clear that it&apos;s a private name scope (and theoretically, could be a non-class scope, in some future version of the language), but it&apos;s fine to worry about that later.
&gt; 
&gt; I think it&apos;s good to keep the abstraction, but maybe we could do it via just the method call (isPrivateNameScope()) instead of the field.

Done. However, it is potentially incorrect/misleading in the case of direct eval, but I don&apos;t think it should break anything. At this point, I don&apos;t think it&apos;s worth changing it back, we can always fix it later on if needed. It shouldn&apos;t break anything.

&gt;&gt;&gt; JSTests/stress/put-by-val-direct-putprivate.js:1
&gt;&gt;&gt; +// TODO: //@ requireOptions(&quot;--usePrivateClassFields=1&quot;)
&gt;&gt; 
&gt;&gt; ?
&gt; 
&gt; I haven&apos;t looked at this in the past few months, but at some point this was failing some DFG/FTL variants. It may still be, I&apos;ll check tomorrow.

We&apos;ve investigated this a bit further, eager tier-up for private field access is broken (does not follow correct semantics for private field accesses) at the moment, as it depends too much on profiling data. I think we can do better at this, but it will be a bit messy to do it in this patch, so I&apos;d prefer to hold off on this for now.

I have updated the tests relating to this to have a clearer explanation of what they&apos;re doing and why they only run a couple variants without eager tier-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649920</commentid>
    <comment_count>42</comment_count>
      <attachid>398693</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-06 18:47:22 -0700</bug_when>
    <thetext>Created attachment 398693
Patch v19

Oops, not sure what happened there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656468</commentid>
    <comment_count>43</comment_count>
      <attachid>400357</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-27 11:38:12 -0700</bug_when>
    <thetext>Created attachment 400357
Patch v20

This version changes get_by_val_direct to get_private_name, adds get_by_id style LLInt caching in metadata, and removes parts of the opcode that aren&apos;t used (non-Symbol keyed operands). The rest of the patch is the same as it has been since last week, as I&apos;ve been told it had been under review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656851</commentid>
    <comment_count>44</comment_count>
      <attachid>400458</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-28 07:54:44 -0700</bug_when>
    <thetext>Created attachment 400458
Patch v21

Fix cloop &amp; cached property access, in theory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656853</commentid>
    <comment_count>45</comment_count>
      <attachid>400459</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-28 08:09:38 -0700</bug_when>
    <thetext>Created attachment 400459
Patch v21</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656877</commentid>
    <comment_count>46</comment_count>
      <attachid>400469</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-28 09:05:44 -0700</bug_when>
    <thetext>Created attachment 400469
Patch v21</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656964</commentid>
    <comment_count>47</comment_count>
      <attachid>400495</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-28 12:38:13 -0700</bug_when>
    <thetext>Created attachment 400495
Patch v21</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657247</commentid>
    <comment_count>48</comment_count>
      <attachid>400579</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-05-29 07:53:18 -0700</bug_when>
    <thetext>Created attachment 400579
Patch v21.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659048</commentid>
    <comment_count>49</comment_count>
      <attachid>400579</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-06-04 04:50:54 -0700</bug_when>
    <thetext>Comment on attachment 400579
Patch v21.6

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

I&apos;m setting r- because I&apos;ve found a bug into Baseline JIT for PutByValDirect changes. It is also necessary to include DFG changes to take in consideration `PrivateFieldAccessKind` of `put_by_val_direct`. The patch as it is will compile a `put_by_val_direct &lt;receiver, probably &apos;this&apos;&gt;, &lt;symbol&gt;, &lt;value&gt;, &lt;PutByValPrivateName&gt;`  as it is `put_by_val_direct &lt;receiver, probably &apos;this&apos;&gt;, &lt;symbol&gt;, &lt;value&gt;, &lt;None&gt;`.

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:305
&gt;          base = bytecode.m_base;

We are missing here changes to consider new added flags for Private fields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659050</commentid>
    <comment_count>50</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-06-04 04:56:31 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #49)
&gt; Comment on attachment 400579 [details]
&gt; Patch v21.6
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=400579&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:305
&gt; &gt;          base = bytecode.m_base;
&gt; 
&gt; We are missing here changes to consider new added flags for Private fields.

Here is an example of a program that is evaluated wrongly:

```
let shouldStore = false;

function foo() {
  class C {
    #field = this.init();
    #foo;

    init() {
      if (shouldStore)
        this.#foo = 12;
    }
  }

  return new C();
}
noInline(foo);

for (let i = 0; i &lt; 10000; i++) {
  if (i &gt; 1000) {
    shouldStore = true;
    shouldThrow(TypeError, () =&gt; {
      foo();
    });
  } else {
    foo();
  }
}
```

I recommend setting `--useConcurrentJIT=false` to reproduce this failure deterministically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659234</commentid>
    <comment_count>51</comment_count>
      <attachid>400579</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-04 12:04:31 -0700</bug_when>
    <thetext>Comment on attachment 400579
Patch v21.6

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

r=me

I think it&apos;s more beneficial at this point that we land this, turned off behind the runtime flag, so we can improve upon it in ToT, than continue to review it in its entirety as we are now. It&apos;s a lot easier to make things better incrementally instead of repeatedly rebasing such a huge patch. This provides a good foundation for us to work off of.

I think you should fix Caio&apos;s bug first before landing. It seems IC related. I&apos;d be totally fine with just turning off ICs for private fields in this patch, and doing IC work in a follow-up patch(es), since there is still a lot of IC work to do.

I also have a few comments in this patch, but they can be fixed later if they have bugs open to address them.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:553
&gt; +            RefPtr&lt;RegisterID&gt; createPrivateSymbol = generator.moveLinkTimeConstant(nullptr, LinkTimeConstant::createPrivateSymbol);

nit: let&apos;s just do this move once. We can hoist the variable out of the loop and just check if it&apos;s non-null.

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:301
&gt; +    case op_get_private_name: // FIXME: op_get_private_name will need DFG/FTL support to ship class fields.

let&apos;s link to a bug here

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1088
&gt; +    PropertySlot slot(baseValue, PropertySlot::InternalMethodType::GetOwnProperty);

nit: you use HasOwnProperty vs GeteOwnProperty in various calls to getPrivateField. I think VMInquiry is probably more correct, since we&apos;re not actually doing any of the different spec methods here. We&apos;re just using PropertySlot to aid us in ICs.

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1114
&gt; +            if (structure-&gt;propertyAccessesAreCacheable() &amp;&amp; !structure-&gt;needImpurePropertyWatchpoint()) {

for private names, I don&apos;t see why this would be needed. They&apos;re not something that can be overridden.

It might make sense to do all the IC work in a follow-up, so the rules can be seen both here, and in the JITs, when they&apos;re implemented to do ICs

the &quot;structure-&gt;propertyAccessesAreCacheable&quot; is probably more conservative than we need to be here. I think the only thing we care about is not being an uncacheable dictionary.

Private fields are notable in that they&apos;re not behavior that can be augmented by the runtime like normal properties.

&gt; Source/JavaScriptCore/parser/Nodes.h:835
&gt; +        bool isPrivateName() const { return m_type == DotType::PrivateName; }

nit: I think using isPrivateField is less ambiguous since isPrivateName is used slightly differently in other contexts.

&gt; Source/JavaScriptCore/parser/VariableEnvironment.cpp:39
&gt; +    m_map = other.m_map;
&gt; +    m_isEverythingCaptured = other.m_isEverythingCaptured;
&gt; +    m_rareData.reset();
&gt; +    if (other.m_rareData)
&gt; +        m_rareData = WTF::makeUnique&lt;VariableEnvironment::RareData&gt;(*other.m_rareData);
&gt; +    return *this;

nit:
```
            VariableEnvironment env(other);
            swap(env);
            return *this;
```
is the no thinking version of this function that also works if you assign into yourself.

&gt; Source/JavaScriptCore/parser/VariableEnvironment.h:259
&gt; +        return m_rareData-&gt;m_privateNames.add(impl, PrivateNameEntry(0)).iterator-&gt;value;

nit: you can drop the 0 argument from PrivateNameEntry(0)

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:297
&gt; +static EncodedJSValue JSC_HOST_CALL createPrivateSymbol(JSGlobalObject* globalObject, CallFrame*)

let&apos;s open a bugzilla &amp; fixme here where we turn this into a bytecode.

&gt; Source/JavaScriptCore/runtime/JSObject.h:1455
&gt; +ALWAYS_INLINE bool JSObject::getPrivateFieldSlot(JSObject* object, JSGlobalObject* globalObject, PropertyName propertyName, PropertySlot&amp; slot)

let&apos;s put this and functions below in JSObjectInlines.h instead of here

&gt; JSTests/stress/get-private-field.js:5
&gt; +// GetByValDirect should throw when the receiver does not have the requested private property

nit: get_private_name or GetPrivateName

&gt; JSTests/stress/put-by-val-direct-putprivate.js:1
&gt; +// TODO: //@ requireOptions(&quot;--usePrivateClassFields=1&quot;) -- Currently, eager JIT is not supported for private field access.

nit: TODO =&gt; FIXME

do we have a bugzilla to address this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659353</commentid>
    <comment_count>52</comment_count>
      <attachid>401081</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-06-04 15:17:42 -0700</bug_when>
    <thetext>Created attachment 401081
Patch for landing

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659450</commentid>
    <comment_count>53</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-04 19:21:19 -0700</bug_when>
    <thetext>caitp@igalia.com does not have reviewer permissions according to https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

Rejecting attachment 401081 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659544</commentid>
    <comment_count>54</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-06-05 03:43:18 -0700</bug_when>
    <thetext>(In reply to EWS from comment #53)
&gt; caitp@igalia.com does not have reviewer permissions according to
&gt; https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/
&gt; config/contributors.json.
&gt; 
&gt; Rejecting attachment 401081 [details] from commit queue.

It is a joke, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659545</commentid>
    <comment_count>55</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-05 03:45:38 -0700</bug_when>
    <thetext>caitp@igalia.com does not have reviewer permissions according to https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

Rejecting attachment 401081 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659550</commentid>
    <comment_count>56</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-06-05 04:07:14 -0700</bug_when>
    <thetext>(In reply to Caio Lima from comment #54)
&gt; (In reply to EWS from comment #53)
&gt; &gt; caitp@igalia.com does not have reviewer permissions according to
&gt; &gt; https://trac.webkit.org/browser/webkit/trunk/Tools/Scripts/webkitpy/common/
&gt; &gt; config/contributors.json.
&gt; &gt; 
&gt; &gt; Rejecting attachment 401081 [details] from commit queue.
&gt; 
&gt; It is a joke, right?

It was indeed not a joke! I though you meant that caitp@igalia.com does not have commiter permissions. Sorry for doubting you =O.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659553</commentid>
    <comment_count>57</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-05 04:25:48 -0700</bug_when>
    <thetext>Committed r262613: &lt;https://trac.webkit.org/changeset/262613&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401081.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659636</commentid>
    <comment_count>58</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-05 09:56:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/64033223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659637</commentid>
    <comment_count>59</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-05 09:56:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/64033227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662410</commentid>
    <comment_count>60</comment_count>
      <attachid>401081</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2020-06-13 13:25:15 -0700</bug_when>
    <thetext>Comment on attachment 401081
Patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGCapabilities.cpp:301
&gt; +    case op_get_private_name: // FIXME: op_get_private_name will need DFG/FTL support to ship class fields. (https://bugs.webkit.org/show_bug.cgi?id=212781)

I don&apos;t think we should add features to JSC if those features don&apos;t come with at least a basic DFG and FTL implementation.  We worked super hard to get the DFG and FTL to 100% language coverage relative to the rest of the engine, and this is a huge regression in that department.  I get that from your standpoint it&apos;s probably fine because you&apos;re adding support for a language feature we didn&apos;t support previously.  But the risk of adding stuff like this to DFGCapabilities is that we&apos;ll just forget about it.  The worst thing that can happen is that people will optimize for the fact that get_private_name only makes it up to baseline, and then adding DFG/FTL support for it will be a perf regression, and you&apos;ll have a really bad time trying to land the DFG/FTL support patch. 

It should be a goal to remove the DFGCapabilities.cpp file and the FTLCapabilities.cpp one.

Since this is behind a flag anyway, it seem like it would have been possible to keep working on this patch (so that it does add the DFG and FTL support as part of it) and only land it once that is done.

I recommend that we roll this patch out of trunk.  I&apos;m OK with it being in a branch.  I&apos;m also super OK with you continuing to post WIP versions of this patch to this bug while you add basic DFG/FTL support.  WIP patches on bugzilla until ready is my preference for this kind of work.

It&apos;s OK for the initial DFG/FTL support in this patch to be super basic, for example just calling the same snippet code generator that the baseline calls, and modeling it as a clobber-the-world event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1662678</commentid>
    <comment_count>61</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-15 09:47:11 -0700</bug_when>
    <thetext>*** Bug 183793 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388066</attachid>
            <date>2020-01-17 11:12:19 -0800</date>
            <delta_ts>2020-01-23 08:12:03 -0800</delta_ts>
            <desc>Patch v6</desc>
            <filename>bug-206431-20200117141218.patch</filename>
            <type>text/plain</type>
            <size>172284</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0NzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NjIwYzE5YjMzZjBkZGE4YWIwNDNjMjdlYzYxZGU0MTQwYzVhNTExLi44OWQ5MTMxZWViYzI0ZDNm
Y2Q2MjZiMGRiZDhkMTM1MGJmNGUyZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjAgQEAKKzIwMjAtMDEtMTcgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZGlu
ZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMgcGF0Y2gsIHdlIGltcGxlbWVu
dCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNhbnQgcGFydHMpIG9mIHRoZSBp
bnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvKS4K
KworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBjaGFuZ2VzIGhlcmU6CisKKyAg
ICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUgY29uY2VwdCBvZiBwcml2YXRl
IG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAgICAtIDEgbmV3IG9wY29kZSAo
b3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNvZGUgKG9wX3B1dF9ieV92YWxf
ZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNyZWF0aW5nIFN5bWJvbCBvYmpl
Y3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4cG9zZWQgYXMgYQorICAgICAg
ICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0ZVN5bWJvbCkuCisgICAgICAg
ICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQgYnkgbmFtZSAobm90IGEgdmFs
aWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAgICAgICAgICAgYXJlIGxvYWRl
ZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBtb2Rp
ZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIG9wX3B1dF9ieV92YWxfZGly
ZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0QnlWYWxGbGFncykgd2hpY2gg
YXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBvdmVyd3JpdGluZyBvciBk
ZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVyZW5jZXMgYXJlCisgICAgICAg
IHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAgICAgICAgVG8gaWxsdXN0cmF0
ZSwgdHlwaWNhbCBwcml2YXRlIGZpZWxkIGFjY2VzcyB3aWxsIGxvb2sgbGlrZToKKworICAgICAg
ICA8RmllbGQgUmVhZHM+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1
cnJlbnRTY29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Nj
b3BlICAgICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90
Rm91bmR8R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIGdl
dF9ieV92YWxfZGlyZWN0ICA8dmFsdWU9PiwgPHJlY2VpdmVyIC0tLSBwcm9iYWJseSAndGhpcyc+
LCA8c3ltYm9sPgorCisgICAgICAgIDxGaWVsZCBXcml0ZXM+CisgICAgICAgIHJlc29sdmVfc2Nv
cGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRTY29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAw
CisgICAgICAgIGdldF9mcm9tX3Njb3BlICAgICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEw
NTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRp
b24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5
ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+LCA8UHV0QnlWYWxQcml2YXRlTmFtZT4KKworICAg
ICAgICA8RmllbGQgRGVmaW5pdGlvbj4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29w
ZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0
X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRo
cm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAg
ICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5
bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lfFB1dEJ5VmFsVGhyb3dJZkV4aXN0
cz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToK
KyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlW
YWxGbGFncy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxl
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRBZGQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRQ
dXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFs
dWUpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6UG9zdGZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0
RG90KToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkRlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0
QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKiBnZW5l
cmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9u
KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBq
aXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnB1dEJ5VmFsRmxhZ3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3B1dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoK
KyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
OgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzUHJpdmF0
ZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZSk6CisgICAgICAg
ICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENoYXI+OjpwYXJzZUlk
ZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6
CisgICAgICAgIChKU0M6OkxleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXhXaXRob3V0Q2xlYXJpbmdMaW5lVGVy
bWluYXRvcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAg
KEpTQzo6QmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNz
b3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3RO
b2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1v
ZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
Y3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2Fs
U2NvcGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6
OkV4cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6
OkJhc2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6Omlk
ZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6dHlwZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29w
ZTo6c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1ByaXZhdGVOYW1l
KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlQcml2YXRlTmFtZVVzZXMpOgorICAgICAgICAo
SlNDOjpTY29wZTo6aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpTY29wZTo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6
ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjdXJyZW50UHJpdmF0
ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y29weVByaXZhdGVOYW1lVXNlc1Rv
T3V0ZXJTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bWF0Y2hBbmRVcGRhdGUpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpwYXJz
ZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHBhcnNlci9T
eW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFj
Y2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgor
ICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6c3dhcCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
Ojppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5OjpzZXRJc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRy
eTo6UHJpdmF0ZU5hbWVFbnRyeSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6Omlz
VXNlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzRGVjbGFyZWQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc1VzZWQpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc0RlY2xhcmVkKToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZU5hbWVFbnRyeTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVO
YW1lRW50cnk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZp
cm9ubWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6
Om1hcFNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojp1c2VQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVO
YW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVO
YW1lc1NpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlQcml2
YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpjb3B5
UHJpdmF0ZU5hbWVVc2VzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6Z2V0T3JBZGRQcml2YXRlTmFtZSk6CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5j
cHA6CisgICAgICAgIChKU0M6OkNhY2hlZE9wdGlvbmFsOjpkZWNvZGVBc1B0ciBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZW5jb2RlKToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjpkZWNvZGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50OjplbmNvZGUp
OgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50OjpkZWNvZGUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGU6OmRlY29kZSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2Fj
aGUuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAg
ICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbFRhYmxl
OjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5oOgorCiAy
MDIwLTAxLTE3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBC
eXRlY29kZSBjaGVja3BvaW50cyBicmVhayAzMmJpdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2ZDQyZjk1ZTA5ZDAyYmU5
YzQuLjg2NzcyZmE2YzYyODE5OTZhZTQyMjJkNDgzMzRiZDg2ZjlkYjk5ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUyOSw2ICs1MjksNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgK
ICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZs
YWdzLmgKKyAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxh
dGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBl
clNhbXBsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NmY5MzVkZGIxOTI5
ZWNhMzJkNmZjZTExMmIzOTExNjYxMjc3MzlhLi44NmJiZWMyOTI2ZGFhMWIxNjRhYzhmNGQzMDE1
OWI5ZTBkNTRiYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0Myw2ICsx
MjQzLDcgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFG
RjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZC
MDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2
YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2
IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEz
NzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MDk1LDYgKzQwOTYsOCBAQAogCQk4NjcwNEI4
MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0
ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIv
WWFyclBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxG
bGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBG
QUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZs
YWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAw
QjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTgzMzIsNiArODMzNSw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RD
MTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAx
NzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3
OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZG
MyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQ
dXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3Rh
dHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0
YXR1c2VzLmggKi8sCkBAIC0xMDA2OCw2ICsxMDA3Myw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4
NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQx
NENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
OTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRL
aW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0
UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCAzY2JmNDg3MDA3NzFkMTcwMjcwM2E3YTA3N2U1ZjQwYWVhZmY0NmZjLi4yN2NkYjdlODYy
YzY4M2U2ZDgwOWYxM2NmMDRjM2ZiYjRjNjlmODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yNjQsNiArMjY0LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAK
IGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBi
eXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKK2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBi
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5j
cHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDEwODMwN2YzNjVkODk5OGE1MTI0MDBiNjdl
NmZiMDFjMTQwMDc4YzEuLjg0NDA5MjRiYTUxNDA2YzcwMDZlMzA4ODlkZmViZTBhMjhhNTUyNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAg
LTE2Nyw3ICsxNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAg
bWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3
ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0
YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXpl
cikgXAorICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVzcGFjZSBTeW1ib2xz
IHsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5hbWUpIGV4dGVybiBK
U19FWFBPUlRfUFJJVkFURSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIG5hbWUjI1N5bWJv
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
Y3BwCmluZGV4IDgzNjUxMTVmNDIxNzkxYTVjNjY0ODNhNWE3OTA1Y2FlNWMwZWUzZTEuLjA4OGUy
ZmZiZDk4MjVlOGYyNjA2YThjMjk5YzY2ZWI2Y2RkYmMyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGlj
QWNjZXNzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxG
bGFncy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNT
dGF0dXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0
NjgwYzEyNmEwZjcyNzUzNmYxYmUzN2M0ZS4uOWE3NDQzYTVkNTc1NTVmYTdjMTA2ZGRiYmJjNmVm
MzE0NTgzM2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCkBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRl
Y29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAg
OlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAg
OlN0cnVjdHVyZUlELApAQCAtNTQzLDYgKzU0NCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAg
ICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5
X3ZhbF9kaXJlY3QsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVh
bFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFs
dWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisK
IG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lz
dGVyLApAQCAtNTY2LDYgKzU3OCw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAg
YmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBmbGFnczogUHV0QnlW
YWxGbGFncywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYy
NmMxMy4uMTVjMTNiZjdhODlmNjdkMjg1OWNiY2Y2MTYxYzMzOTA3ODM0YTc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0y
MTEsNiArMjExLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1
YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVy
YXRvclN0cnVjdHVyZVBuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wRW51bWVy
YXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFs
LCBiYXNlLCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wR2V0QnlWYWxEaXJlY3QsIGJhc2UsIHByb3Bl
cnR5KQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3Zl
cnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVT
RVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtNDE5LDYgKzQyMCw3IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25z
dCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRzdCkKICAgICBE
RUZTKE9wSW5zdGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZhbCwgZHN0KQor
ICAgIERFRlMoT3BHZXRCeVZhbERpcmVjdCwgZHN0KQogICAgIERFRlMoT3BUeXBlb2YsIGRzdCkK
ICAgICBERUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERFRlMoT3BJc0Vt
cHR5LCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJj
MmM2NjlmN2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi5kNjM4NWIzYmZhZjE4MTE3ZGVlNjIw
YzFjMWE3MzRlNTcxMzNmNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJv
ZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUg
IlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
aAppbmRleCAxYjZlNzI2MjQwOWM4NTc0MzJkNGIyZmNmYWNmMTdjNzYwZDE3YjY0Li4wMmE2Y2Yw
NDhkMTI0YTJlOWVlMGI1MzQwMmJkZmJkODI0ZTBjNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEwMCw2ICsxMDAsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KEFycmF5LCBudWxscHRyKSBcCiAgICAgdihh
cHBseUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxsRnVuY3Rpb24sIG51bGxwdHIpIFwK
KyAgICB2KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpCiAKIAogI2RlZmluZSBERUNMQVJF
X0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNzc2YThj
Y2E4MTExMTg0NzI4ZWZhNjAyNTc1MTZhOWVkMDQ0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKQEAgLTAsMCArMSw0
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Cisj
aW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3Ry
ZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lk
IHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKK3sK
KyAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBpZiAoZmxhZ3MgJiBQdXRCeVZhbFBy
aXZhdGVOYW1lKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlTmFtZSIpOworICAg
IGlmIChmbGFncyAmIFB1dEJ5VmFsVGhyb3dJZkV4aXN0cykKKyAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiVGhyb3dJZkV4aXN0cyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTI4OTViNjc4NjA3YzlhMzA5MDkzMzcyODE4YzBlOGZmMzdmYWFkOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBQdXRC
eVZhbEZsYWdzIDogaW50MzJfdCB7CisgICAgUHV0QnlWYWxOb25lID0gMCwKKworICAgIFB1dEJ5
VmFsUHJpdmF0ZU5hbWUgPSAxLAorCisgICAgUHV0QnlWYWxUaHJvd0lmRXhpc3RzID0gMiwKKwor
ICAgIC8vIFRoZSBQcml2YXRlRmllbGRBZGQgb3BlcmF0aW9uIG11c3QgdGhyb3cgaWYgYW4gZW50
cnkgZm9yIHRoZSBwcml2YXRlIHJlY29yZCBkb2VzIG5vdCBleGlzdAorICAgIFB1dEJ5VmFsUHJp
dmF0ZUZpZWxkQWRkID0gUHV0QnlWYWxQcml2YXRlTmFtZSB8IFB1dEJ5VmFsVGhyb3dJZkV4aXN0
cywKKyAgICBQdXRCeVZhbFByaXZhdGVGaWVsZFB1dCA9IFB1dEJ5VmFsUHJpdmF0ZU5hbWUsCit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50
U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFs
RmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmlu
ZGV4IDRkYzBlOTE1YmMzODIzMTlhOTJhOTY3MWI2M2IyOGI0NzBkZTgxM2QuLmUzZmFkZGNiYTk2
NjI1ZTlkZTczMmFkYTQ4MTdjYjAxNWU5NTRjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNw
cApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2Vu
ZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFy
c2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7CiAgICAgVmVjdG9yPEpTVGV4dFBvc2l0
aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IGV4ZWN1dGFibGUtPmluc3RhbmNlRmllbGRM
b2NhdGlvbnMoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9
IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5h
bWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4
dFR5cGU6Ok5vbmUsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAgICB2
bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5k
aW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2ZWRDb250
ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBudWxscHRyLCBp
bnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAg
QVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGUzMjIyMDVkZWU3
OTU0MWNjNTA1ZWYwMzZmZmI5YTkzMTM0MjJkZmYuLmM2YWExMjRkZjQ5MjAzZGM3MGI3MjQzZmQ0
YTMxNGUyN2RiZGMwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xODUzLDYgKzE4NTMsMTAgQEAg
Ym9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGwKIAogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBu
ZXdFbnRyeSh2YXJPZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbnRyeS52YWx1ZS5pc0Nv
bnN0KCkgPyBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgOiBQcm9wZXJ0eUF0dHJpYnV0ZTo6
Tm9uZSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZChOb0xvY2tpbmdOZWNlc3Nhcnks
IGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkpOworCisgICAgICAgICAgICAvLyBGSVhNRTogb25s
eSBkbyB0aGlzIGlmIHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0t
IG90aGVyd2lzZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUu
aXNQcml2YXRlTmFtZSgpKQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRl
TmFtZShlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYXND
YXB0dXJlZFZhcmlhYmxlczsKQEAgLTI2NDAsOSArMjY0NCwxNSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHRoaXNWYQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAgIE9wR2V0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQ
dXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIE9w
UHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZh
bE5vbmUpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjY2NCw2ICsyNjc0LDE4IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3Rl
cklEKiBiYXNlLCB1bnNpZ25lZCBpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZEFkZChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgT3BQdXRC
eVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsUHJp
dmF0ZUZpZWxkQWRkKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGly
ZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxQcml2YXRlRmll
bGRQdXQpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVyU2FtcGxlckJlZ2luOjplbWl0
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDQyYzYzMDI2MGVlNmViOGRiNjE2MzM4MmY2MGY2N2M1
ZTg0MGY3ZjAuLjIyOGVkOTdjYzE0MTdkYmMxMzA4Y2NiYmM5OGNhMjhmNzgyZDU1ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKQEAgLTc4MiwxMSArNzgyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRE
aXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5VmFsKFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIAogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEludGVybmFs
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZEFkZChSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAgICAgICAgdm9pZCBlbWl0U3Vw
ZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyRW5kKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggYWI5NmQ5NTA2M2U3NzRkNTdmZDg0ZTM1MjMyYTA2ZTU5MGM3MmQ0YS4uN2YxMjIx
NmI0OWI0ZGIyYzFhOThhNTAzNDFjMjJkZDgxYzg5ZGI4NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTQ5LDkgKzU0
OSwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3QoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogCiBSZWdpc3RlcklEKiBQcm9wZXJ0eUxp
c3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogcHJvdG90eXBlLCBWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewotICAgIC8vIEZhc3QgY2Fz
ZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCisgICAg
Ly8gUHJpdmF0ZU5hbWVzIGFyZSBob2lzdGVkIGFuZCB3ZSBuZWVkIHRvIGRlY2xhcmUgdGhlbSBi
ZWZvcmUgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgaGFuZGxlZC4KICAgICBQcm9wZXJ0eUxpc3RO
b2RlKiBwID0gdGhpczsKICAgICBSZWdpc3RlcklEKiBkc3QgPSBudWxscHRyOworICAgIGZvciAo
OyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGlmICghKHAtPm1fbm9kZS0+bV90eXBlICYg
UHJvcGVydHlOb2RlOjpQcml2YXRlKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6
IGRzdE9yQ29uc3RydWN0b3I7CisgICAgICAgIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KGdlbmVy
YXRvciwgZHN0LCAqcC0+bV9ub2RlKTsKKyAgICB9CisKKyAgICAvLyBGYXN0IGNhc2U6IHRoaXMg
bG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgorICAgIHAgPSB0aGlz
OwogICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29u
c3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0
YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CiAKQEAg
LTcxMCw2ICs3MjAsMTggQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKIAogdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKKyAgICBp
ZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1l
Q29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7
CisKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAw
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwg
anNVbmRlZmluZWQoKSk7CisgICAgICAgIFJlZ2lzdGVySUQqIHN5bWJvbCA9IGdlbmVyYXRvci5l
bWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQcml2YXRl
U3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBhcmd1bWVudHMsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIERlYnVn
Z2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlh
YmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShnZW5l
cmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHN5bWJvbCwgRG9Ob3RUaHJvd0lmTm90Rm91bmQs
IEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dE5vZGUobm9kZS5tX2Fzc2lnbik7CiAgICAgaWYgKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSkK
ICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgbmV3T2Jq
KTsKQEAgLTgyOCwxNiArODUwLDY4IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAgICAgfQog
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBpZiAoYmFzZUlzU3VwZXIp
IHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1
cmVUaGlzKCk7Ci0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3Qu
Z2V0KCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIGJh
c2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGVtaXRHZXRQcm9wZXJ0
eVZhbHVlKGdlbmVyYXRvciwgZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpKTsKKwogICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJhc2VEb3ROb2Rl
OjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1Zh
bHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4g
Y2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2
YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZh
dGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwg
bV9wb3NpdGlvbiwgSlNUZXh0UG9zaXRpb24oLTEsIG1fcG9zaXRpb24ub2Zmc2V0LCBtX2lkZW50
Lmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFs
KGRzdCwgYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0
aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgbV9pZGVu
dCk7Cit9CisKK1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4g
ZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBkc3QsIGJhc2UsIHRoaXNWYWx1ZSk7Cit9
CisKK1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJl
ZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkp
IHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwor
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQg
bmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBE
b05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
cHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9wb3NpdGlvbiwgSlNUZXh0UG9zaXRpb24oLTEsIG1f
cG9zaXRpb24ub2Zmc2V0LCBtX2lkZW50Lmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUp
OworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgaWYg
KCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhp
cygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIHRoaXNWYWx1
ZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZSwgbV9pZGVudCwgdmFsdWUpOworfQorCitSZWdpc3RlcklEKiBCYXNl
RG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJh
c2UsIHZhbHVlLCB0aGlzVmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQXJndW1lbnRMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBS
ZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMTYyNSwxMSArMTY5OSw5IEBAIFJl
Z2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE9wdGlvbmFs
Q2hlY2soY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7CiAgICAgfQogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25T
dGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJCYXNlID0gZW1pdFN1cGVyQmFzZUZvckNhbGxl
ZShnZW5lcmF0b3IpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0
KCksIHN1cGVyQmFzZS5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVu
dCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CisKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNhbGxl
ZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKTsKKyAgICBlbWl0R2V0
UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZ1bmN0aW9uLmdldCgpLCBiYXNlLmdldCgpKTsKIAog
ICAgIGlmIChpc09wdGlvbmFsQ2hhaW5CYXNlKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0T3B0
aW9uYWxDaGVjayhmdW5jdGlvbi5nZXQoKSk7CkBAIC0xOTUwLDYgKzIwMjIsMjMgQEAgUmVnaXN0
ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlKGJhc2VOb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vz
c29yLT5kaXZvdEVuZCgpKTsKKworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTmFtZSgp
KSB7CisgICAgICAgIEFTU0VSVCghYmFzZUlzU3VwZXIpOworICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
cHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5k
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwg
dmFyLCBtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBp
ZGVudC5sZW5ndGgoKSwgLTEpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
YmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWdpc3RlcklEKiBvbGRW
YWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFt
ZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KHZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLm1vdmUoZHN0LCBvbGRWYWx1ZSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYg
KGJhc2VJc1N1cGVyKSB7CkBAIC0yMTczLDYgKzIyNjIsMjIgQEAgUmVnaXN0ZXJJRCogUHJlZml4
Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZv
dCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7
CiAgICAgUmVnaXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVO
YW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBy
aXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9O
b3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHBy
aXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRpb24sIEpTVGV4dFBvc2l0aW9uKC0xLCBtX3Bv
c2l0aW9uLm9mZnNldCArIGlkZW50Lmxlbmd0aCgpLCAtMSkpOworCisgICAgICAgIHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBw
cml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVl
LCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
aXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgp
KTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChi
YXNlTm9kZS0+aXNTdXBlck5vZGUoKSkgewogICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOwpAQCAtMjkwOSwxMSArMzAxNCw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRv
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklECiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2
YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJl
c3VsdC5nZXQoKSA6IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVz
dWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgp
KSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5z
dXJlVGhpcygpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgdGhp
c1ZhbHVlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKLSAgICB9IGVsc2UK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndh
cmRSZXN1bHQuZ2V0KCkpOworICAgIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0
KCksIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
Zm9yd2FyZFJlc3VsdC5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKIH0KQEAgLTI5MjUs
MjEgKzMwMjYsMTMgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhw
cmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7Ci0gICAgaWYgKG1f
YmFzZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5z
dXJlVGhpcygpOwotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9p
ZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJh
dG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1
ZSk7CisKICAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2ln
bm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdl
dCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1f
b3BlcmF0b3IpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdo
dC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCog
cmV0OwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVw
ZGF0ZWRWYWx1ZSk7Ci0gICAgZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWdpc3RlcklEKiBy
ZXQgPSBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLmdldCgpLCB1cGRhdGVkVmFsdWUs
IHRoaXNWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUs
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTQzMzcs
NiArNDQzMCwxOCBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRh
YmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3NpdGlvbik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6
UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KCptX2lkZW50KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQ
cml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIp
OworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9z
aXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQtPmxlbmd0aCgpKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0
ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRo
cm93SWZOb3RGb3VuZCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0
ZU5hbWUuZ2V0KCksIHZhciwgbV9wb3NpdGlvbiwgSlNUZXh0UG9zaXRpb24oLTEsIG1fcG9zaXRp
b24ub2Zmc2V0ICsgbV9pZGVudC0+bGVuZ3RoKCksIC0xKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJpdmF0ZUZpZWxkQWRkKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJpdmF0ZU5hbWUu
Z2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgRGVm
aW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU6IHsKICAgICAgICAgLy8gRklYTUU6IElt
cHJvdmUgcGVyZm9ybWFuY2Ugb2YgcHVibGljIGNsYXNzIGZpZWxkcwogICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MzMwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGJjMDFjZmIxNzY3
MDg3OTcxOTY5NTg3NDY3NGFiNGYzMGI3MTkwNWMuLjczMTA3NDdiY2VhZGQxY2NlMjdkYzBiNGFj
MWJiYWQ3MjIyZGIxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBU
YXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ0Nv
bnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKaW5kZXggY2U1ZjZhYWE2ODgyNzNkOWJlNzBlZDQ4YWIxOWY1NjI2MWNkZmFjNC4uMzJi
ZDE0NTAwNGIwM2I0ZGI4YmQ2ODZiMGI3NjYyYTNkNDI5M2Y5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjkzLDcgKzI5Myw4IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJCiAKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bf
Y3JlYXRlX2dlbmVyYXRvcl9mcmFtZV9lbnZpcm9ubWVudDoKLSAgICBjYXNlIG9wX3RvX3Byb3Bl
cnR5X2tleTogLy8gRklYTUU6IG9wX3RvX3Byb3BlcnR5X2tleSB3aWxsIG5lZWQgREZHL0ZUTCBz
dXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRzLgorICAgIGNhc2Ugb3BfdG9fcHJvcGVydHlfa2V5
OiAvLyBGSVhNRTogb3BfdG9fcHJvcGVydHlfa2V5IGFuZCBvcF9nZXRfYnlfdmFsX2RpcmVjdCB3
aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRzLgorICAgIGNhc2Ug
b3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlOgog
ICAgIGNhc2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVsZV9wcm9n
cmFtX3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA2OGY1MjNmZTk4NTdiZGZmOWE0OTkyZmFkNDlmNDA1NGQ2ZWZmZTUz
Li5jYWMxZDMzYjhmODdkODM3NGRmZmFlZDEyMTcxODRkMjBiMjA3ZWU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTM4MDAsNyAr
MTM4MDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUs
IHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShiYXNlR1BS
KSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2Rl
T3JpZ2luKSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIG1faml0LmVjbWFNb2RlRm9y
KGNvZGVPcmlnaW4pLCBwdXRLaW5kLCBQdXRCeVZhbE5vbmUpOwogCiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKaW5kZXggNTgzOTBkMzY5ODIxMWYzMjRjYmQyYzk0MmJkMGIxYjIwMDYyNjNh
My4uZjBhZmIxMGEyNTNhNGU4ZmRjMmYyNmEzNWM0Y2E4M2ZiNmZjY2FjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzk4MCw3ICszOTgw
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBh
cmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkp
LAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJ
bmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsK
KyAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0
IDogTm90RGlyZWN0LCBQdXRCeVZhbE5vbmUpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBkb25lID0gaml0LmxhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNM
LnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQuLjUzMGY5
N2E3NTdiYmExYTI2ZWVlYzk5MDNmOWM1N2RiMGVhNTcwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDAsNiArMTQwLDcgQEAgbW9kdWxlIERTTAogI2luY2x1
ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRC
eUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiVG9UaGlz
U3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aAppbmRleCA1ZDMwOTI4ZjRhODViNGFkZTQ0NGM0M2Y1YWRkZjIzMTdmNDI2NWI3Li5jYjQ4YWRm
ZmYxNmRiNjMyNDFjMjUwZDk3MjgyZGRhNjU1NDQ5NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0lDU3RhdHMuaApAQCAtNjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKKyAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlk
QWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25QdXRC
eUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKICAgICBtYWNybyhQdXRCeUlkQWRk
QWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXApIFwKICAgICBt
YWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
ZTQyNDhmMjIyM2EzMDk0MTZhNzg4ZWU3OTkyMjRlZDViMjFiOGY0Ni4uMjQxMjRlOTcxY2Q1NGE3
OWUwYjUwM2E2NzhiNGE2ZGJhYzRlYjRhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjkwLDYgKzI5MCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xP
V19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
Z2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxf
ZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfaWRfd2l0aF90aGlzKQogICAg
ICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5F
X1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBmNmYwOWI5MmEwY2NmMjY3MGVhN2Y2YzBlZmIwYmQx
NzE1MjA3NTUxLi40MTE3YzZhMzIwNDViMzI2ZTQ1NjQyYTJiYTUxNzZmZWJkNTIyNTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTM5Niw2ICszOTYsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9h
dFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJh
eVR5cGUpOwogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAgICBQdXRCeVZh
bEZsYWdzIHB1dEJ5VmFsRmxhZ3MoT3ApOworCiAgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sg
aGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFs
SWRlbnRpZmllckNoZWNrKEJ5VmFsSW5mbyosIFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBz
Y3JhdGNoLCBjb25zdCBJZGVudGlmaWVyJiwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKaW5kZXggOTIwYjcyMDNlM2NmNGJmMDZlZWQ0NTczYTM5Y2I1NmJjY2E2NWQ1YS4uNWJjMGZh
YTQyMzk2MTUyYjU3ZDBiMTc5Y2JmNjE2OThlM2RjNjUxZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNiwx
MSArMTM2LDEyIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRC
eUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVn
aXN0ZXJzLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcg
c2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKKyAgICBF
Q01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQdXRCeVZhbEZsYWdzIGZsYWdzKQog
ICAgIDogSklUQnlJZEdlbmVyYXRvcigKICAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKICAg
ICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkKKyAgICAs
IG1fZmxhZ3MoZmxhZ3MpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihz
Y3JhdGNoKTsKIH0KQEAgLTE1Miw2ICsxNTMsMTQgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0aW9u
X0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7CisgICAg
aWYgKFVOTElLRUxZKG1fZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVOYW1lKSkgeworICAgICAgICBB
U1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlID09
IFN0cmljdE1vZGUpOworICAgICAgICBpZiAobV9mbGFncyAmIFB1dEJ5VmFsVGhyb3dJZkV4aXN0
cykKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdE9w
dGltaXplOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3RP
cHRpbWl6ZTsKKyAgICB9CisKICAgICBpZiAobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKSB7CiAg
ICAgICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBiZmI5MDIxNmIyOWMy
N2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li4xNDhmMWJjOWJmMGQzYjYxMjMyOWMzNDU0ZTQw
OGNkNjFlMDIzZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtpbmQuaCIKICNp
bmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsNyArMTMyLDcgQEAgcHVibGljOgogCiAg
ICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Q2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVS
ZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNN
QU1vZGUsIFB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0
Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQdXRCeVZhbEZsYWdzKTsKICAgICAKICAgICB2b2lkIGdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0MCw2ICsxNDEsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAgUHV0S2lu
ZCBtX3B1dEtpbmQ7CisgICAgUHV0QnlWYWxGbGFncyBtX2ZsYWdzOwogfTsKIAogY2xhc3MgSklU
SW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA5YzExNzM0MzQwYzM2NDcyMWIzNThiOTUxNmY2
ODcwOTMzNGM1YTA0Li41NzljOGM5M2Q4Yjk2ODVlNmY5MmEwNjk3MGYzYmE2OTgzMmU0MzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjk1LDYgKzY5NSwxOCBA
QCBBTFdBWVNfSU5MSU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmls
ZShCaW5hcnlPcCBieXRlY29kZSkKICAgICByZXR1cm4gYXJpdGhQcm9maWxlOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KK0FMV0FZU19JTkxJTkUgUHV0QnlWYWxGbGFncyBKSVQ6OnB1dEJ5
VmFsRmxhZ3MoT3ApCit7CisgICAgcmV0dXJuIFB1dEJ5VmFsTm9uZTsKK30KKwordGVtcGxhdGU8
PgorQUxXQVlTX0lOTElORSBQdXRCeVZhbEZsYWdzIEpJVDo6cHV0QnlWYWxGbGFnczxPcFB1dEJ5
VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQoreworICAgIHJldHVybiBvcC5tX2ZsYWdz
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBhZjFmYWNkZmVi
ZjZhNTc4YzVjMjUxMWM3ZTcyOGIxZDk2ODZkOWMxLi4yOTQ1NzM0NWQyMTg0ZTlmYTQxNWY4NWE1
MTUzNzYxMmNjZjg4YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKQEAgLTY3OCw2ICs2NzgsODIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAg
ICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3Qs
IHN0cnVjdHVyZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKKworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFt
ZSgpKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBl
PihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVj
dChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisKKyAgICAvLyBUaHJvdyBhIFR5cGVFcnJvciBp
ZiBhdHRlbXB0aW5nIHRvIHN0b3JlIHRvIGEgbm9uLWV4aXN0ZW50IHByaXZhdGUgZmllbGQuIFRo
aXMgaXMgc2ltaWxhciB0byBhIFREWi1saWtlIGJlaGF2aW91ci4KKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKKyAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBn
bG9iYWxPYmplY3QsIGlkZW50LCBzbG90KSkKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmpl
Y3QpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgUHV0
UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlk
Q29udGV4dCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG51bGxwdHI7CisgICAgQ29t
bW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9i
amVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90LCAmc3RydWN0dXJlKTsKKworICAgIExPR19JQygo
SUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCBi
YXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9i
amVjdCkpOworCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkKKyAgICAgICAgcmVwYXRjaFB1dEJ5SUQo
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHB1
dFNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
KworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBBY2Nlc3NU
eXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CisKKyAgICAvLyBUaHJvdyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5nIHRvIHN0
b3JlIHRvIGEgbm9uLWV4aXN0ZW50IHByaXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxhciB0byBh
IFREWi1saWtlIGJlaGF2aW91ci4KKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBpZiAoIUpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVu
dCwgc2xvdCkpCisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xv
dChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBpZGVudCwgdmFsdWUs
IHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworCisgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5m
byh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGFjY2Vzc1R5cGUgIT0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2Nr
LCBzdHJ1Y3R1cmUpKQorICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBE
aXJlY3QpOworfQorCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU3RyaW5nT3JTeW1ib2wo
SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUuaXNTdHJpbmcoKSB8fCB2YWx1ZS5p
c1N5bWJvbCgpOwpAQCAtNzgxLDYgKzg1NywxNiBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgog
CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmpl
Y3QsIGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSkgewor
ICAgICAgICAvLyBUaHJvdyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5nIHRvIHN0b3JlIHRvIGEg
bm9uLWV4aXN0ZW50IHByaXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxhciB0byBhIFREWi1saWtl
IGJlaGF2aW91ci4KKyAgICAgICAgYXV0byBieXRlY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS0+YXM8T3BQdXRCeVZhbERpcmVjdD4o
KTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJ
bnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOworICAgICAgICBpZiAoZm91bmQgPT0gKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRC
eVZhbFRocm93SWZFeGlzdHMpKSB7CisgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBmb3VuZCA/IGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xv
YmFsT2JqZWN0KSA6IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogICAgIENvbW1vblNsb3dQ
YXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHBy
b3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggNjIxMGM1YTA3MzQxOTY4M2Q2MGVhOGM0OGNkNDNlZWZmODJhMzAw
Yy4uMTdmYzhiMTJlODFkZDQ5YWJiYjVjZTE1YmViNzU0M2MxYmQwOWI3NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRT
dHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVT
dHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJO
QUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CmluZGV4IGFiZjUyZjcxM2U4YWEwYWZiNWU4MDVjN2NmM2YxZDM4ODM3MWMyZjYuLjJiM2I5OWUz
ZjVjNDQ3ZTg4YjMzOGM3YmE2ODYyMjU4MjMwNzY2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgSklU
UHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8q
IGJ5VmFsSW5mbywgT3AgYnl0ZWMKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFN
b2RlKCksIHB1dEtpbmQsIHB1dEJ5VmFsRmxhZ3MoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCB2YWx1ZSwgU2hv
dWxkRmlsdGVyQmFzZSk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwpAQCAtNTg2LDcg
KzU4Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0KTsKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQdXRCeVZhbE5v
bmUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93
Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA3MTI1YmQ0ZjUxYWY4MTVi
OWQ1MDY2MWViN2EzYzI0MWE1YWQ2MDNiLi43NTY4ZDIzNmQzYWZiNWZjMTRhNjM4NzQ1MTg3NmY4
OTkyZjk0NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIk5hdGl2
ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQcm90
b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFk
b3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
Q2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCmluZGV4IDRiZmRkN2JjNmRhMzA2YWJhZjVjOWE2NTI1YjAwYmRmY2I5YTRkN2UuLjhlZGUw
NmRhOGRhYmViZDg2N2JkODdjYjg1NWZjNTQyMzY0MDEwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA0NywxNCArMTA0NywxNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAg
UkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNl
T2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lQWNjZXNzID0g
Ynl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5VmFsUHJpdmF0ZU5hbWU7CiAgICAgaWYgKExJS0VMWShz
dWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNW
YWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBp
bnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAg
ICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOworICAgICAgICBBU1NFUlQo
IWlzUHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRl
eChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwgaXNTdHJpY3RN
b2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90
VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0
LmlzRG91YmxlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lQWNjZXNzKTsKICAg
ICAgICAgZG91YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CiAg
ICAgICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHN1YnNjcmlwdEFzRG91YmxlKTsKICAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1
YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7CkBAIC0xMDY4
LDkgKzEwNzEsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxf
ZGlyZWN0KQogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAg
ICAgTExJTlRfRU5EKCk7CiAKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09
IGlzUHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXgg
PSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8g
UHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cp
OwogICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQcml2YXRlTmFtZUFjY2VzcykgeworICAgICAg
ICAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAvLyBU
aHJvdyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5nIHRvIHN0b3JlIHRvIGEgbm9uLWV4aXN0ZW50
IHByaXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxhciB0byBhIFREWi1saWtlIGJlaGF2aW91ci4K
KyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eSwgc2xvdCk7CisgICAgICAgICAgICBpZiAoZm91bmQgPT0gYm9vbChieXRlY29kZS5t
X2ZsYWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3RzKSkKKyAgICAgICAgICAgICAgICBMTElOVF9U
SFJPVyhmb3VuZCA/IGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0
KSA6IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAg
ICB9CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9k
ZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9i
YWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQppbmRleCA5M2MyOTAyNWIwZDkzMDVkOTk1NzEwM2UxNjViN2FhODkxNGNiYjFk
Li4zNGFlZDJiOTQ3NGY0MGUzYTRkYWM1ODYxMDYxOWNjMjFlMzE5Mzg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQpAQCAtMTUwOSw2NCArMTUwOSw2OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9i
eV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBl
bmQpCiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0
aE5hbWUsIG9zckV4aXRQb2ludCkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVO
YW1lJSwgJW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2Us
IHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2Vs
bFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAg
YXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQy
LCB0NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxT
bG93KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MworICAgICAg
ICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBl
LCAub3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1No
YXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1
b3VzOgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5n
SGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAg
ICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAg
IC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBl
LCAub3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9w
R2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRu
ZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgICMgRklYTUU6IFRoaXMgY291
bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAgZmQyaWkgZnQwLCB0MSwgdDIKKyAg
ICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKKwor
ICAgIC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBl
LCB0MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3Rv
cmFnZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5k
ZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10s
IC5vcEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisKKyAgICAub3BHZXRCeVZhbERv
bmU6CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVU
YWcsIC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFsTm90RW1wdHk6CisgICAgICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUs
IHQ1LCB0MiwgdDEpCisgICAgICAgIGRpc3BhdGNoKCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgZ2V0KG1fYmFzZSwgdDIp
Ci0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQw
LCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BH
ZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotICAgIGdldCht
X3Byb3BlcnR5LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0
MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1f
YnV0dGVyZmx5W3QwXSwgdDMKLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJp
ZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIs
IENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFs
SXNDb250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5k
ZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cK
LSAgICBsb2FkaSBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZh
bE5vdENvbnRpZ3VvdXM6Ci0gICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5v
dERvdWJsZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdI
ZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBs
b2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxT
bG93Ci0gICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgotICAg
IGZkMmlpIGZ0MCwgdDEsIHQyCi0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBqbXAgLm9wR2V0QnlW
YWxOb3RFbXB0eQotCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFn
ZVNoYXBlLCB0MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlT
dG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdwotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAu
b3BHZXRCeVZhbFNsb3cKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zm
c2V0W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBh
eWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLQotLm9wR2V0QnlWYWxEb25lOgotICAgIGdldCht
X2RzdCwgdDApCi0gICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93Ci0u
b3BHZXRCeVZhbE5vdEVtcHR5OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
Ci0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goKQorICAgIC5vcEdldEJ5
VmFsU2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlz
cGF0Y2goKQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCgpCisgICAgLm9zclJldHVyblBvaW50Ogor
ICAgICAgICBvc3JFeGl0UG9pbnQoc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBlbmQpCitl
bmQKIAotLm9zclJldHVyblBvaW50OgorZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFs
LCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwsIG1hY3JvKHNpemUsIG1ldGFkYXRhLCByZXR1
cm4pCiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNp
emUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQogICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0
MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlWYWxPcChnZXRf
YnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2Rp
cmVjdCwgbWFjcm8oYSwgYiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
JW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBiNmVlOTllMzYzYWYxZmZkNDFiOTEyNTQ0
YzUwZGU5MmYxYTRmMmQzLi44M2RkZWQyZDdkMTM1YjY3ZmEwNTdiYzc0NzA1YjQ2NDVkOGZjNTA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQpAQCAtMTQ5MiwxODQgKzE0OTIsMTg3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIHNsb3dQYXRoTmFtZSkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgJW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisg
ICAgICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBzdG9yZXEgcmVzdWx0
LCBbY2ZyLCBzY3JhdGNoLCA4XQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1
Y3QlLCB0NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAot
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hHZXRC
eVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKLSAgICAg
ICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQKKyAg
ICAgICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAg
ICAgb3JxIG51bWJlclRhZywgcmVzdWx0CisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1
bHQsIHNjcmF0Y2gpCisgICAgICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwo
cmVzdWx0LCBzY3JhdGNoKQotICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKLSAgICAgICAg
ZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQotICAgIGVuZAorICAgICAgICBtYWNybyBm
aW5pc2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAg
ICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICAgICAgc3VicSBudW1iZXJUYWcsIHNj
cmF0Y2gxCisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCisg
ICAgICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3Jh
dGNoMSwgc2NyYXRjaDIpCi0gICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBz
dWJxIG51bWJlclRhZywgc2NyYXRjaDEKLSAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEs
IHNjcmF0Y2gyKQotICAgIGVuZAorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRh
ZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAotICAgIGdl
dChtX2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0
MCwgLm9wR2V0QnlWYWxTbG93KQotCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUo
T3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotCi0gICAg
Z2V0KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXpl
LCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKLQotICAgIGxvYWRD
YWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKLSAg
ICBtb3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCi0KLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNr
LCB0MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0g
ICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0K
LS5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BH
ZXRCeVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0
MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotICAgIGptcCAub3BHZXRCeVZhbERvbmUK
LQotLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwg
Lm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRl
ciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlW
YWxTbG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0g
ICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmQycSBmdDAsIHQyCi0g
ICAgc3VicSBudW1iZXJUYWcsIHQyCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotICAgIAotLm9w
R2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBi
aWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdl
dEJ5VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEgQXJyYXlTdG9yYWdlOjpt
X3ZlY3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotCi0u
b3BHZXRCeVZhbERvbmU6Ci0gICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgbW92ZSB0
MCwgdDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCiAKLS5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6
Ci0gICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBU
aGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KLSAgICBsb2FkYiBKU0Nl
bGw6Om1fdHlwZVt0MF0sIHQyCi0gICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgotICAg
IGJpYWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BH
ZXRCeVZhbFNsb3cKLSAgICAKLSAgICAjIFN3ZWV0LCBub3cgd2Uga25vdyB0aGF0IHdlIGhhdmUg
YSB0eXBlZCBhcnJheS4gRG8gc29tZSBiYXNpYyB0aGluZ3Mgbm93LgorICAgICAgICBnZXQobV9w
cm9wZXJ0eSwgdDMpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0
MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBpZiBB
Uk02NEUKLSAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKLSAgICAgICAgY29uc3Qgc2NyYXRjaCA9
IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIGxlbmd0
aAotICAgICAgICBiaWFlcSB0MSwgbGVuZ3RoLCAub3BHZXRCeVZhbFNsb3cKLSAgICBlbHNlCi0g
ICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBv
biB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jt
cy4KLSAgICAgICAgYmlhZXEgdDEsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIC5v
cEdldEJ5VmFsU2xvdwotICAgIGVuZAorICAgICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCisgICAgICAgIG1vdmUgVGFnTnVtYmVy
LCBudW1iZXJUYWcKIAotICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0s
IHQzCi0gICAgY2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgdDAsIHNjcmF0Y2gpCi0KLSAgICAj
IE5vdyBiaXNlY3QgdGhyb3VnaCB0aGUgdmFyaW91cyB0eXBlczoKLSAgICAjICAgIEludDhBcnJh
eVR5cGUsCi0gICAgIyAgICBVaW50OEFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQ4Q2xhbXBlZEFy
cmF5VHlwZSwKLSAgICAjICAgIEludDE2QXJyYXlUeXBlLAotICAgICMgICAgVWludDE2QXJyYXlU
eXBlLAotICAgICMgICAgSW50MzJBcnJheVR5cGUsCi0gICAgIyAgICBVaW50MzJBcnJheVR5cGUs
Ci0gICAgIyAgICBGbG9hdDMyQXJyYXlUeXBlLAotICAgICMgICAgRmxvYXQ2NEFycmF5VHlwZSwK
LQotICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9w
R2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJh
eVR5cGUgLi4gVWludDE2QXJyYXlUeXBlLgotICAgIGJpYSB0MiwgVWludDhDbGFtcGVkQXJyYXlU
eXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZB
cnJheQotCi0gICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1w
ZWRBcnJheVR5cGUKLSAgICBiaWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlU
eXBlLCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5Ci0KLSAgICAjIFdl
IGhhdmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAotICAgIGZpbmlz
aEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1w
ZWRBcnJheToKLSAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlw
ZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQotCi0gICAgIyBXZSBoYXZlIFVpbnQ4QXJy
YXlUeXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQw
LCB0MSkKLQotLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheToKLSAgICAjIFdlIGhhdmUgVWlu
dDhDbGFtcGVkQXJyYXlUeXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJheToK
LSAgICAjIFdlIGhhdmUgZWl0aGVyIEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJh
eVR5cGUuCi0gICAgYmlhIHQyLCBJbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUs
IC5vcEdldEJ5VmFsVWludDE2QXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4K
LSAgICBsb2FkaHNpIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKLQotLm9wR2V0QnlWYWxVaW50MTZBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlU
eXBlLgotICAgIGxvYWRoIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQw
LCB0MSkKLQotLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUg
b2YgSW50MzJBcnJheVR5cGUgLi4gRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBiaWEgdDIsIFVpbnQz
MkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5
T3JGbG9hdDY0QXJyYXkKLQotICAgICMgV2UgaGF2ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3Ig
VWludDMyQXJyYXlUeXBlCi0gICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRB
cnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQzMkFy
cmF5VHlwZS4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZh
bCh0MCwgdDEpCi0KLS5vcEdldEJ5VmFsVWludDMyQXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQz
MkFycmF5VHlwZS4KLSAgICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCBiZWNhdXNlIG9mIGxh
cmdlIHVuc2lnbmVkIHZhbHVlcy4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBiaWx0
IHQwLCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBp
bXBsZW1lbnQgaW4gTExJbnQuCi0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BH
ZXRCeVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2Yg
RmxvYXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBTYWRseSwgd2UgY2Fubm90IGhh
bmRsZSBGbG9hdDMyQXJyYXkKLSAgICAjIGlubGluZSB5ZXQuIFRoYXQgd291bGQgcmVxdWlyZSBz
b21lIG9mZmxpbmVhc20gY2hhbmdlcy4KLSAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0g
Rmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxTbG93Ci0KLSAgICAjIFdlIGhhdmUgRmxv
YXQ2NEFycmF5VHlwZS4KLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBm
dDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0
MCwgdDEpCi0KLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgYW5kaSBJbmRleGluZ1No
YXBlTWFzaywgdDIKKyAgICAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0Nv
bnRpZ3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxO
b3RDb250aWd1b3VzCisKKyAgICAub3BHZXRCeVZhbElzQ29udGlndW91czoKKyAgICAgICAgYmlh
ZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQw
KQorICAgICAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0
QnlWYWxTbG93CisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFs
Tm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZh
bE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93
CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAK
KyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGZkMnEg
ZnQwLCB0MgorICAgICAgICBzdWJxIG51bWJlclRhZywgdDIKKyAgICAgICAgam1wIC5vcEdldEJ5
VmFsRG9uZQorICAgICAgICAKKyAgICAub3BHZXRCeVZhbE5vdERvdWJsZToKKyAgICAgICAgc3Vi
aSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9y
YWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFn
ZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
IGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMs
IHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CisKKyAgICAub3BH
ZXRCeVZhbERvbmU6CisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCisgICAgICAgIHZh
bHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgdDUsIHQyKQorICAgICAgICBkaXNwYXRjaCgpCiAK
LS5vc3JSZXR1cm5Qb2ludDoKLSAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3Bf
Z2V0X2J5X3ZhbCwgc2l6ZSkKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQ1LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgLm9wR2V0QnlWYWxOb3RJ
bmRleGVkU3RvcmFnZToKKyAgICAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2
ZSBhIHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9u
dC4KKyAgICAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbdDBdLCB0MgorICAgICAgICBzdWJpIEZp
cnN0VHlwZWRBcnJheVR5cGUsIHQyCisgICAgICAgIGJpYWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJy
YXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgCisgICAg
ICAgICMgU3dlZXQsIG5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBz
b21lIGJhc2ljIHRoaW5ncyBub3cuCiAKLWVuZCkKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAg
ICAgICBjb25zdCBsZW5ndGggPSB0NgorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3Cisg
ICAgICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCBsZW5ndGgK
KyAgICAgICAgICAgIGJpYWVxIHQxLCBsZW5ndGgsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBl
bHNlCisgICAgICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1
bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhl
ciBwbGF0Zm9ybXMuCisgICAgICAgICAgICBiaWFlcSB0MSwgSlNBcnJheUJ1ZmZlclZpZXc6Om1f
bGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGVuZAorCisgICAgICAgIGxvYWRw
IEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzCisgICAgICAgIGNhZ2VkUHJpbWl0
aXZlKHQzLCBsZW5ndGgsIHQwLCBzY3JhdGNoKQorCisgICAgICAgICMgTm93IGJpc2VjdCB0aHJv
dWdoIHRoZSB2YXJpb3VzIHR5cGVzOgorICAgICAgICAjICAgIEludDhBcnJheVR5cGUsCisgICAg
ICAgICMgICAgVWludDhBcnJheVR5cGUsCisgICAgICAgICMgICAgVWludDhDbGFtcGVkQXJyYXlU
eXBlLAorICAgICAgICAjICAgIEludDE2QXJyYXlUeXBlLAorICAgICAgICAjICAgIFVpbnQxNkFy
cmF5VHlwZSwKKyAgICAgICAgIyAgICBJbnQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50
MzJBcnJheVR5cGUsCisgICAgICAgICMgICAgRmxvYXQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAg
ICBGbG9hdDY0QXJyYXlUeXBlLAorCisgICAgICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0g
Rmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5CisKKyAgICAg
ICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uIFVpbnQxNkFycmF5VHlwZS4KKyAg
ICAgICAgYmlhIHQyLCBVaW50OENsYW1wZWRBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBl
LCAub3BHZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZl
IG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRBcnJheVR5cGUKKyAgICAgICAg
YmlhIHQyLCBJbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxV
aW50OEFycmF5T3JVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBJbnQ4QXJy
YXlUeXBlLgorICAgICAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRH
ZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBl
ZEFycmF5OgorICAgICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5
VHlwZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBV
aW50OEFycmF5VHlwZS4KKyAgICAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCisgICAgICAgIGZpbmlz
aEludEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXk6
CisgICAgICAgICMgV2UgaGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGxvYWRi
IFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAu
b3BHZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgZWl0
aGVyIEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGJp
YSB0MiwgSW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVp
bnQxNkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDE2QXJyYXlUeXBlLgorICAgICAgICBs
b2FkaHNpIFt0MywgdDEsIDJdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEp
CisKKyAgICAub3BHZXRCeVZhbFVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgVWludDE2
QXJyYXlUeXBlLgorICAgICAgICBsb2FkaCBbdDMsIHQxLCAyXSwgdDAKKyAgICAgICAgZmluaXNo
SW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5Ogor
ICAgICAgICAjIFdlIGhhdmUgb25lIG9mIEludDMyQXJyYXlUeXBlIC4uIEZsb2F0NjRBcnJheVR5
cGUuCisgICAgICAgIGJpYSB0MiwgVWludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlw
ZSwgLm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlPckZsb2F0NjRBcnJheQorCisgICAgICAgICMgV2Ug
aGF2ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWludDMyQXJyYXlUeXBlCisgICAgICAgIGJp
YSB0MiwgSW50MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVp
bnQzMkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDMyQXJyYXlUeXBlLgorICAgICAgICBs
b2FkaSBbdDMsIHQxLCA0XSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQor
CisgICAgLm9wR2V0QnlWYWxVaW50MzJBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQzMkFy
cmF5VHlwZS4KKyAgICAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBs
YXJnZSB1bnNpZ25lZCB2YWx1ZXMuCisgICAgICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAorICAg
ICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdr
d2FyZCB0byBpbXBsZW1lbnQgaW4gTExJbnQuCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQw
LCB0MSkKKworICAgIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXk6CisgICAg
ICAgICMgV2UgaGF2ZSBvbmUgb2YgRmxvYXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBl
LiBTYWRseSwgd2UgY2Fubm90IGhhbmRsZSBGbG9hdDMyQXJyYXkKKyAgICAgICAgIyBpbmxpbmUg
eWV0LiBUaGF0IHdvdWxkIHJlcXVpcmUgc29tZSBvZmZsaW5lYXNtIGNoYW5nZXMuCisgICAgICAg
IGJpZXEgdDIsIEZsb2F0MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRC
eVZhbFNsb3cKKworICAgICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KKyAgICAgICAg
bG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRC
eVZhbFNsb3cKKyAgICAgICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwgdDEpCisKKyAg
ICAub3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisg
ICAgICAgIGRpc3BhdGNoKCkKKworICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgZ2V0dGVy
U2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wXyVvcGNvZGVOYW1lJSwgc2l6ZSkKKyAgICAgICAg
bWV0YWRhdGEodDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1
LCByMCkKKyAgICAgICAgcmV0dXJuKHIwKQorICAgIGVuZCkKK2VuZAorCitnZXRCeVZhbE9wKGdl
dF9ieV92YWwsIE9wR2V0QnlWYWwsIF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIAorZ2V0
QnlWYWxPcChnZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9n
ZXRfYnlfdmFsX2RpcmVjdCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVO
YW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXgg
ZGJkNTNhZTc2MDg0ZjJkYTliNzVlNzRmNjFmOGE3MDRjNzhkMzk2MC4uOWE3OTZiNTlmYjZhZmUz
NWE5ZDUyZWZkOThjYjJjNjU5ZTMzODUxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciogcHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5
LCBEb3RUeXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAg
ICAgaWYgKGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAgICAgICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0
eSgpOwogICAgICAgICAKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7Cisg
ICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNj
ZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHksIHR5cGUpOwogICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbm9kZS0+aXNBc3NpZ25tZW50TG9jYXRpb24oKTsKICAgICB9CiAKKyAgICBib29sIGlzUHJp
dmF0ZUxvY2F0aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCisgICAgeworICAgICAgICByZXR1
cm4gbm9kZS0+aXNQcml2YXRlTG9jYXRpb24oKTsKKyAgICB9CisKICAgICBib29sIGlzT2JqZWN0
TGl0ZXJhbChjb25zdCBFeHByZXNzaW9uJiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5v
ZGUtPmlzT2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQyOCwxNSArMTQzMywxNSBAQCBFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90
QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZSA9IG51
bGxwdHI7CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgp
IHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuY2FsbFByaXZhdGVOYW1lKCkpKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5
Q2hpbGREZXB0aCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFw
cGx5Q2hpbGREZXB0aCk7CiAgICAgZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFw
cGx5UHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAvLyBGSVhN
RTogVGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRo
ZSBieXRlY29kZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkg
eWV0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4K
ICAgICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQot
ICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAg
ICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwg
YXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgp
OwogICAgIH0KICAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgbm9k
ZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3Qt
PmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpA
QCAtMTU2MSw5ICsxNTY2LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3Np
Z25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAgICBBU1NFUlQo
bG9jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0
YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAgICAgaWYgKG9wID09IE9wRXF1YWwp
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRp
b24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2
b3QoKSwgc3RhcnQsIGVuZCk7CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0
YXJ0LCBlbmQpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBkb3QtPnR5cGUoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IHN0YXJ0LCBlbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3Qo
KSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGMzNDFmNDkyNzgyNTRlMjc3N2QwYjJj
ZDczYmQ1NWMyZDIzYWE3ZTEuLjNiNzU0ZmM5MmQzNmE2ODdmMTgyODViZGE2ODAxNzk5OTIxZDlj
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzgsMTQgKzkz
OCwxOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdv
cmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3Jk
OwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3Vy
cmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwotICAgIGlmIChpc1ByaXZh
dGVOYW1lKQorCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAg
ICBib29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNCdWlsdGluTmFtZSkKICAgICAgICAgc2hpZnQoKTsKICAg
ICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigp
OwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zm
c2V0KCk7Ci0gICAgCisKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsK
KwogICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKQogICAgICAgICBzaGlmdCgpOwog
ICAgIApAQCAtOTYwLDExICs5NjQsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAg
ICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVy
U3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikg
ewotICAgICAgICAgICAgaWYgKCFpc1NhZmVCdWlsdGluSWRlbnRpZmllcihtX3ZtLCBpZGVudCkg
JiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlQnVpbHRpbklkZW50
aWZpZXIobV92bSwgaWRlbnQpICYmICFpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3Ry
aW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICBpZiAoaXNCdWlsdGluTmFtZSkKICAgICAgICAg
ICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllcihtX3ZtLCBtX3ZtLnByb3Bl
cnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVudCkpOwogICAgICAgICAgICAgZWxzZSBp
ZiAoKmlkZW50ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKICAgICAg
ICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZp
bmVkUHJpdmF0ZU5hbWU7CkBAIC05NzUsMjAgKzk3OSwyMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFy
Pjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKIAot
ICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZs
YWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2
YXRlTmFtZSkgeworICAgIGF1dG8gaWRlbnRUeXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVO
QU1FIDogSURFTlQ7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0
aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jk
cykpICYmICFpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVu
dGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAg
ICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRy
eSgqaWRlbnQpOwogICAgICAgICAgICAgQVNTRVJUKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0
aCkgfHwgIWVudHJ5KTsKICAgICAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIElERU5UOworICAgICAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAg
ICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+
bGV4ZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZf
U1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsKKyAgICAgICAgICAgIHJldHVy
biAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBp
ZGVudFR5cGU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICByZXR1
cm4gaWRlbnRUeXBlOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRl
bnRUeXBlOwogfQogCiB0ZW1wbGF0ZSA8PgpAQCAtMTAwMywyMyArMTAwOCwyNyBAQCB0ZW1wbGF0
ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBl
IExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURf
SUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAg
ICAgfQotICAgIAotICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwotICAgIGlmIChpc1ByaXZhdGVOYW1lKQorCisgICAg
Ym9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAgICBib29sIGlzQnVpbHRp
bk5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAg
ICBpZiAoaXNCdWlsdGluTmFtZSkKICAgICAgICAgc2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFy
KiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZp
ZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAKICAgICBVQ2hhciBvckFs
bENoYXJzID0gMDsKLSAgICAKKworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlm
dCgpOworCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpIHsKICAgICAgICAgb3JB
bGxDaGFycyB8PSBtX2N1cnJlbnQ7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgfQogICAgIAogICAg
IGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xcJykpIHsKLSAgICAgICAgQVNTRVJUKCFpc1By
aXZhdGVOYW1lKTsKKyAgICAgICAgQVNTRVJUKCFpc0J1aWx0aW5OYW1lKTsKICAgICAgICAgc2V0
T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQp
OwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlmaWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC0x
MDM4LDExICsxMDQ3LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVu
dGlmaWVyTGVuZ3RoKTsKICAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewot
ICAgICAgICAgICAgaWYgKCFpc1NhZmVCdWlsdGluSWRlbnRpZmllcihtX3ZtLCBpZGVudCkgJiYg
IWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAgIGlmICghaXNTYWZlQnVpbHRpbklkZW50aWZp
ZXIobV92bSwgaWRlbnQpICYmICFpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgICAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5n
KCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRpbiBmdW5jdGlvbnMuIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEVSUk9SVE9LOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlz
UHJpdmF0ZU5hbWUpCisgICAgICAgICAgICBpZiAoaXNCdWlsdGluTmFtZSkKICAgICAgICAgICAg
ICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllcihtX3ZtLCBtX3ZtLnByb3BlcnR5
TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVudCkpOwogICAgICAgICAgICAgZWxzZSBpZiAo
KmlkZW50ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAg
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVk
UHJpdmF0ZU5hbWU7CkBAIC0xMDUzLDcgKzEwNjIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6
cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKICAgICAK
LSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJG
bGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJp
dmF0ZU5hbWUpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3Ro
KSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRz
KSkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50
aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAg
ICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5
KCppZGVudCk7CkBAIC0xMDczLDggKzEwODIsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKU1Rva2VuVHkK
IHsKICAgICB0b2tlbkRhdGEtPmVzY2FwZWQgPSB0cnVlOwogICAgIGF1dG8gaWRlbnRpZmllclN0
YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9ICppZGVu
dGlmaWVyU3RhcnQgPT0gJyMnOworICAgIGF1dG8gaWRlbnRUeXBlID0gaXNQcml2YXRlTmFtZSA/
IFBSSVZBVEVOQU1FIDogSURFTlQ7CiAgICAgYm9vbCBidWZmZXJSZXF1aXJlZCA9IGZhbHNlOwog
CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAgICB3aGlsZSAo
dHJ1ZSkgewogICAgICAgICBpZiAoTElLRUxZKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpKSB7CiAg
ICAgICAgICAgICBzaGlmdCgpOwpAQCAtMTA5NCw3ICsxMTA4LDggQEAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBK
U1Rva2VuVHkKICAgICAgICAgYXV0byBjaGFyYWN0ZXIgPSBwYXJzZVVuaWNvZGVFc2NhcGUoKTsK
ICAgICAgICAgaWYgKFVOTElLRUxZKCFjaGFyYWN0ZXIuaXNWYWxpZCgpKSkKICAgICAgICAgICAg
IHJldHVybiBjaGFyYWN0ZXIuaXNJbmNvbXBsZXRlKCkgPyBVTlRFUk1JTkFURURfSURFTlRJRklF
Ul9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSyA6IElOVkFMSURfSURFTlRJRklFUl9VTklDT0RFX0VT
Q0FQRV9FUlJPUlRPSzsKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fYnVmZmVyMTYuc2l6ZSgpID8g
IWlzSWRlbnRQYXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSA6ICFpc0lkZW50U3RhcnQoY2hhcmFjdGVy
LnZhbHVlKCkpKSkKKyAgICAgICAgYm9vbCBpc0lkZW50aWZpZXJTdGFydCA9IGlzUHJpdmF0ZU5h
bWUgPyBtX2J1ZmZlcjE2LnNpemUoKSA9PSAxOiAhbV9idWZmZXIxNi5zaXplKCk7CisgICAgICAg
IGlmIChVTkxJS0VMWShpc0lkZW50aWZpZXJTdGFydCA/ICFpc0lkZW50U3RhcnQoY2hhcmFjdGVy
LnZhbHVlKCkpIDogIWlzSWRlbnRQYXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSkpCiAgICAgICAgICAg
ICByZXR1cm4gSU5WQUxJRF9JREVOVElGSUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LOwogICAg
ICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJlY29yZFVuaWNv
ZGVDb2RlUG9pbnQoY2hhcmFjdGVyLnZhbHVlKCkpOwpAQCAtMTEyMywxMyArMTEzOCwxMyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+IEpTVG9rZW5UeQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRh
YmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICByZXR1
cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBKU1Rva2Vu
VHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgp
KTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1v
ZGUpCiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyUmVxdWlyZWQgPyBVTkVYUEVDVEVEX0VTQ0FQ
RV9FUlJPUlRPSyA6IHRva2VuOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1
cm4gaWRlbnRUeXBlOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNoYXJhY3RlclJl
cXVpcmVzUGFyc2VTdHJpbmdTbG93Q2FzZShMQ2hhciBjaGFyYWN0ZXIpCkBAIC0yNDA3LDE0ICsy
NDIyLDIxIEBAIHN0YXJ0OgogICAgICAgICBtX2hhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4g
PSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFy
dDsKLSAgICBjYXNlIENoYXJhY3Rlckhhc2g6CisgICAgY2FzZSBDaGFyYWN0ZXJIYXNoOiB7CiAg
ICAgICAgIC8vIEhhc2hiYW5nIGlzIG9ubHkgcGVybWl0dGVkIGF0IHRoZSBzdGFydCBvZiB0aGUg
c291cmNlIHRleHQuCi0gICAgICAgIGlmIChwZWVrKDEpID09ICchJyAmJiAhY3VycmVudE9mZnNl
dCgpKSB7CisgICAgICAgIGF1dG8gbmV4dCA9IHBlZWsoMSk7CisgICAgICAgIGlmIChuZXh0ID09
ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKICAg
ICAgICAgfQorICAgICAgICAvLyBPdGhlcndpc2UsIGl0IGNvdWxkIGJlIGEgdmFsaWQgUHJpdmF0
ZU5hbWUuCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpICYmIChpc0lkZW50
U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkgeworICAgICAgICAgICAgbGV4ZXJGbGFncy5y
ZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5d29yZHMpOworICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKKyAg
ICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgogICAgICAgICBp
ZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApp
bmRleCBmZDk3YTBjYTkzNWU3ZTU3NzhhMDkzODUwMjJmOTg2NzgwMTRhMzI0Li4wNmU2MDJhN2Jk
YTcyYmIyODIxOThmMjk3ZDgzYTQxYWE4ZTUxMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMzI3LDEwICszMjcsMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6
OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgaW5saW5lIEJhc2VE
b3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkK
ICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAg
IHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUpCisgICAgICAgIDogQmFzZURvdE5v
ZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00
MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9u
LCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0g
ICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAg
ICAgfQpAQCAtNDM3LDE0ICs0NDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFz
ZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFz
ZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAg
ICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlw
ZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1
bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9
CkBAIC03NTAsMjEgKzc1NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlw
ZSkKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25t
ZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVh
ZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
T3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJl
YWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBPcGVy
YXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VE
b3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVT
dWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwg
bV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0
KHJpZ2h0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgLCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKaW5kZXggZGQ4ZWRiNjg3OTExYmZmMjIxMDJiYzQ5YmQ1Y2U1NTMxZGE5ZjA4
ZS4uMDE0NTg5ZDM3MjViNmFmMzYzZGFiYzBkMTVmZGQ5MWFjYWI1NTkzOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIFByb3Bl
cnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIm
IHByb3BOYW1lKQogYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2Nv
cGVGb3JDbGFzcyhQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQogewogICAgIHdoaWxlIChsaXN0KSB7
Ci0gICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCisgICAg
ICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgfHwgbGlzdC0+bV9u
b2RlLT5pc1ByaXZhdGUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBsaXN0
ID0gbGlzdC0+bV9uZXh0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApp
bmRleCAyYTgzNjQ2NzZlNjcxYzZmNzkzNGE5OGRkM2ZjYTliMDkwMTViYTVkLi40M2FjYzkwZmM2
YWE3OTY4ZTgxYjIxNzgzMGZhNGE1ZDMyOTU1NmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCkBAIC0xODIsNiArMTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25t
ZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBpc0xvY2F0aW9uKCk7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25SZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC03MTMsNyArNzE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBD
bGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcg
fTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVl
YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3Rh
bnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9
IDE2LCBTcHJlYWQgPSAzMiB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3Rh
bnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9
IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CiAgICAgICAgIGVudW0gUHV0VHlwZSA6
IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVjdCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9k
ZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBl
ckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03MzIsNiArNzMzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFz
c1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc0lu
c3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5
KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5C
eUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0K
KyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRl
OyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHBy
ZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJl
dHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lk
IHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRl
ID0gdHJ1ZTsgfQpAQCAtNzQyLDcgKzc0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBj
b25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJl
c3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWdu
ZWQgbV90eXBlIDogNjsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsKICAgICAgICAgdW5z
aWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlw
ZSA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0
IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKQEAgLTgxNCw5ICs4MTYsMzAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9Owog
Ci0gICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIGVudW0gY2xhc3MgRG90VHlw
ZSB7IE5hbWUsIFByaXZhdGVOYW1lIH07CisgICAgY2xhc3MgQmFzZURvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJik7CisgICAgICAgIEJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7CisKKyAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
KyAgICAgICAgRG90VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgICAg
IGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQ
cml2YXRlTmFtZTsgfQorCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBS
ZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0
cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFBy
b3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
dmFsdWUpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNl
OworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OworICAgICAgICBEb3RUeXBlIG1f
dHlwZTsKKyAgICB9OworCisgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZpbmFsIDogcHVibGlj
IEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
QEAgLTgyNSwxMCArODQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CiAKICAgICAgICAgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CiAgICAgICAgIGJvb2wg
aXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
bV9pZGVudDsKICAgICB9OwogCiAgICAgY2xhc3MgU3ByZWFkRXhwcmVzc2lvbk5vZGUgZmluYWwg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CkBAIC05NDEsOSArOTYyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJz
Y3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhIHsKKyAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEJhc2VEb3RO
b2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwpAQCAtOTUxLDggKzk3Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CiAgICAgfTsK
IApAQCAtOTg5LDcgKzEwMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1
bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3Qg
ZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKKyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFw
cGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC05OTgsNyAr
MTAxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25D
YWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05v
ZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5j
ZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC0xNDMzLDI4ICsxNDUy
LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50
cyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgY2xh
c3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkRvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQXNzaWduRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIERvdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewor
ICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBw
dWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgT3Bl
cmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwot
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9yaWdodDsKICAgICAgICAgdW5zaWduZWQgbV9vcGVyYXRvciA6IDMxOwogICAgICAgICBi
b29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CkBAIC0yMjM3LDcgKzIyNTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlZmluZUZpZWxkTm9kZSBmaW5hbCA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5h
bWUsIENvbXB1dGVkTmFtZSB9OworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBQcml2
YXRlTmFtZSwgQ29tcHV0ZWROYW1lIH07CiAgICAgICAgIERlZmluZUZpZWxkTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBl
KTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggYTczYTZhZDg4ZTdiMTU4YmEwMGViYTU4ZTZkODMyZDcwYjM2NWFmZi4uNjYyNmRjYjA1
NzFmMzFhYmNiM2MyZWJhMWExMjFmYTNkZjJiODdhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtODM4LDYgKzgzOCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVE
ZWNsCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSAwOwogICAgICAgICBkZWNsYXJhdGlv
bnMrKzsKICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IGZhbHNlOworCisgICAgICAgIGZh
aWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSB0
byBkZWNsYXJlIGEgdmFyaWFibGUiKTsKICAgICAgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIo
KSkgewogICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChMRVQpICYmIChkZWNsYXJhdGlvblR5
cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8fCBkZWNsYXJhdGlvblR5cGUg
PT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKSwgCiAgICAgICAgICAgICAgICAg
IkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNs
YXJhdGlvbiIpOwpAQCAtMTI5Myw2ICsxMjk1LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGUK
ICAgICAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRv
RXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoZGVzdHJ1Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2luZE5h
bWUoa2luZCkpOworICAgICAgICAgICAgaWYgKGtpbmQgIT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRl
c3RydWN0dXJlVG9QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2go
UFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSBhcyBhICIsIGRlc3RydWN0
dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKICAgICAgICAgICAgIGZhaWxXaXRo
TWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBvciBhICcpJyBpbiBwYXJhbWV0
ZXIgbGlzdCIpOwogICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAo
a2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0xldCB8fCBraW5kID09IERl
c3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvQ29uc3QpLCAiQ2Fubm90IHVzZSAnbGV0JyBh
cyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4aWNhbERlY2xhcmF0aW9uIik7CkBAIC0yOTQ4
LDYgKzI5NTIsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShjb21w
dXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7
CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAi
ZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CisgICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNl
Q2xhc3NGaWVsZHMoKSk7CisgICAgICAgICAgICBKU1Rva2VuIHRva2VuID0gbV90b2tlbjsKKyAg
ICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICBmYWls
SWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVt
ZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CisgICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVy
IHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFt
ZSIpOworICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAg
ICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBBUkVOLCB0b2tlbiksICJD
YW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVOYW1lKCppZGVu
dCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fu
bm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0
YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0
ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykKICAgICAgICAg
ICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKQEAgLTI5NjMsOCArMjk4MCwxMCBAQCBwYXJzZU1l
dGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIHRo
aXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMo
KSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5j
ZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIWlzR2V0dGVyICYmICFpc1NldHRlcik7Ci0gICAgICAgICAgICBpZiAoaWRl
bnQpCisgICAgICAgICAgICBpZiAoaWRlbnQpIHsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3IsICJDYW5ub3QgZGVj
bGFyZSBjbGFzcyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InIik7CisgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yUHJp
dmF0ZUZpZWxkLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBjbGFzcyBmaWVsZCBuYW1lZCAnI2Nv
bnN0cnVjdG9yJyIpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQ
cm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlk
ZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZp
ZWxkcysrKTsKQEAgLTMwMjgsNiArMzA0NywxMCBAQCBwYXJzZU1ldGhvZDoKICAgICBpbmZvLmVu
ZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgLSAxOwogICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIgYSBjbGFzcyBib2R5
Iik7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSkgeworICAgICAgICAvLyBG
YWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVz
ZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KKyAgICAgICAgc2VtYW50aWNGYWlsSWZG
YWxzZShjb3B5UHJpdmF0ZU5hbWVVc2VzVG9PdXRlclNjb3BlKCksICJDYW5ub3QgcmVmZXJlbmNl
IHVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcyIpOworICAgIH0KICAgICBhdXRvIGNsYXNzRXhwcmVz
c2lvbiA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3Bl
LT5maW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3Ms
IGNsYXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBAIC0z
MDUxLDYgKzMwNzQsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICBUcmVlRXhw
cmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9k
ZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0
Y2ggKG1fdG9rZW4ubV90eXBlKSB7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CisgICAgICAg
ICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTsKKyAgICAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFNUUklORzoKICAgICAgICAgY2FzZSBJREVO
VDoKICAgICAgICAgbmFtZWRLZXl3b3JkOgpAQCAtMzA4NSw2ICszMTExLDkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5zdGFuY2UKICAgICAgICAgaWYgKGNvbnN1bWUoRVFVQUwpKQogICAgICAgICAgICAg
aW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogCisgICAg
ICAgIGlmICh0eXBlID09IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWUpCisgICAg
ICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKKwogICAg
ICAgICBUcmVlU3RhdGVtZW50IGRlZmluZUZpZWxkID0gY29udGV4dC5jcmVhdGVEZWZpbmVGaWVs
ZChmaWVsZExvY2F0aW9uLCBpZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUpOwogICAgICAgICBjb250
ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgZGVmaW5lRmllbGQpOwogICAgIH0K
QEAgLTQ3NjIsNiArNDc5MSwyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkQ2FsbE9yQXBw
bHlEZXB0aChQYXJzZXJUeXBlKiwgVk0mLCBPcHRpb25hbDx0eXBlbmFtZSBQYQogewogfQogCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgorYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6ZW5z
dXJlUHJpdmF0ZU5hbWVVc2VkKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmICht
X2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBjdXJyZW50UHJp
dmF0ZU5hbWVTY29wZSgmZm91bmQpOworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIWN1cnJlbnQtPmhhc1ByaXZhdGVOYW1lKCppZGVudCkpCisgICAgICAg
IGN1cnJlbnQtPnVzZVByaXZhdGVOYW1lKCppZGVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVz
c2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKQEAgLTQ4NzcsNiArNDkyMiw4IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTWVtYmVyRXhwcmVzCiAKICAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBj
cmVhdGVTYXZlUG9pbnQoKTsKICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIGlmIChP
cHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKQorICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElm
VHJ1ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgaWRlbnRpZmll
cnMgaW4gYW4gb3B0aW9uYWwgY2hhaW4iKTsKICAgICAgICAgICAgIGlmIChtYXRjaChPUEVOQlJB
Q0tFVCkgfHwgbWF0Y2goT1BFTlBBUkVOKSB8fCBtYXRjaChCQUNLUVVPVEUpKQogICAgICAgICAg
ICAgICAgIHR5cGUgPSBtX3Rva2VuLm1fdHlwZTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtNDk2
NCw4ICs1MDExLDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAg
bV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICAg
ICAgSlNUZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7
CiAgICAgICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxkZXI6OkRvbnRC
dWlsZEtleXdvcmRzIHwgTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CisgICAgICAg
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsK
KyAgICAgICAgICAgICAgICBhdXRvIHR5cGUgPSBEb3RUeXBlOjpOYW1lOworICAgICAgICAgICAg
ICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkg
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAgICAgICAg
ICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90IGFjY2VzcyBwcml2YXRlIG5hbWVzIGZy
b20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnJlbnRTY29w
ZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFsQ29udGV4dFR5cGU6Okluc3RhbmNlRmllbGRF
dmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNl
KGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5j
ZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIsIGlkZW50LT5pbXBsKCksICInIik7CisgICAg
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoZW5zdXJlUHJpdmF0ZU5hbWVVc2Vk
KGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNz
Iik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0g
aWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShp
ZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0
ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gSURFTlQ7CisgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0
ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hhaW5CYXNlID8gIic/LiciIDog
IicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vzcyhz
dGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0
LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBpZGVudCwg
dHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkp
OwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShiYXNlSXNTdXBlciAmJiBjdXJyZW50U2Nv
cGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVu
Y3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwog
ICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxNTgsNiArNTIxOCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tF
TjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChjb250ZXh0LmlzUmVzb2x2ZShleHBy
KSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkgJyIsIG1fcGFyc2VyU3RhdGUu
bGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJpdmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fu
bm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1l
LT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9j
YXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tE
ZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpA
QCAtNTIyOSw3ICs1MjkwLDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQg
UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBJ
TlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAgICAgICAgb3V0LnByaW50KCJJbnZhbGlk
IHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICBvdXQucHJpbnQoIlVu
ZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2VuKCkpOworICAgICAgICByZXR1cm47CisK
ICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5l
eHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTc4NWMwYzNlMjE0ZTBkOTI1MGYxZmZhMTE3NjVmYzAz
ODgwNzliZS4uZjYxYTFmNWY3NjZhODQxYjY0ZGY4MTU1NTBhZTExY2Y2MjgzNmU2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xODEsNiArMTgxLDcgQEAgcHVibGlj
OgogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQogICAgICAgICAsIG1faXNFdmFsQ29u
dGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3QoZmFsc2Up
CisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1lU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0Ns
YXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9ldmFsQ29udGV4dFR5cGUoRXZhbENvbnRleHRU
eXBlOjpOb25lKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpAQCAtMjg5LDYgKzI5MCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJh
dG9yQm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlz
UHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRlTmFtZVNjb3BlOyB9
CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsg
fQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50
czsgfQpAQCAtMzA1LDggKzMwNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYWxsb3dzTGV4aWNh
bERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQogCisgICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1l
U2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pc1ByaXZhdGVOYW1lU2NvcGUgPSB0cnVlOworICAg
IH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3BlKCkKICAgICB7CisgICAgICAgIHNldElzUHJp
dmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBtX2lzQ2xhc3NTY29wZSA9IHRydWU7CiAgICAgfQog
CkBAIC00NzEsNyArNDc5LDQ0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2xl
eGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuZ2V0KCkpOwogICAgIH0KLSAgICAKKworICAg
IGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmhhc1ByaXZhdGVOYW1lKGlkZW50KTsKKyAg
ICB9CisKKyAgICB2b2lkIGNvcHlQcml2YXRlTmFtZVVzZXMoU2NvcGUmIG90aGVyKQorICAgIHsK
KyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLmNvcHlQcml2YXRlTmFtZVVzZXMob3RoZXIubV9s
ZXhpY2FsVmFyaWFibGVzKTsKKyAgICB9CisKKyAgICBib29sIGhhc1VzZWRCdXRVbmRlY2xhcmVk
UHJpdmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2xleGljYWxWYXJpYWJs
ZXMucHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5
IDogbV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHVzZVByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dz
TGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2
YXRlTmFtZShpZGVudCk7CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xh
cmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnQp
OworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0
IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc0Rl
Y2xhcmVkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGhhc0RlY2xhcmVkUGFyYW1ldGVyKGlkZW50LmltcGwoKSk7CkBAIC04MzQsNiArODc5
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQXJndW1lbnRzOwogICAgIGJvb2wgbV9pc0V2
YWxDb250ZXh0OwogICAgIGJvb2wgbV9oYXNOb25TaW1wbGVQYXJhbWV0ZXJMaXN0OworICAgIGJv
b2wgbV9pc1ByaXZhdGVOYW1lU2NvcGU7CiAgICAgYm9vbCBtX2lzQ2xhc3NTY29wZTsKICAgICBF
dmFsQ29udGV4dFR5cGUgbV9ldmFsQ29udGV4dFR5cGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1
Y3RvcktpbmQ7CkBAIC05MDUsNyArOTUxLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAog
ICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJz
ZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJz
ZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4qID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBh
cnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFy
c2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNF
bmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogPSBu
dWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxh
c3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTExNzgsNiArMTIyNCwzMyBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CiAgICAgfQogCisgICAgU2Nv
cGVSZWYgY3VycmVudFByaXZhdGVOYW1lU2NvcGUoYm9vbCAqZm91bmQgPSAwKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICBBU1NF
UlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29w
ZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworICAgICAg
ICBpZiAoZm91bmQpCisgICAgICAgICAgICAqZm91bmQgPSBtX3Njb3BlU3RhY2tbaV0uaXNQcml2
YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBp
KTsKKyAgICB9CisKKyAgICBib29sIGNvcHlQcml2YXRlTmFtZVVzZXNUb091dGVyU2NvcGUoKQor
ICAgIHsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9IGN1cnJlbnRQcml2YXRlTmFtZVNjb3Bl
KCk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBjdXJyZW50LmluZGV4KCkgLSAxOworICAgICAgICB3
aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKSB7CisgICAg
ICAgICAgICBpLS07CisgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgcmV0dXJuICFjdXJy
ZW50LT5oYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpOworCisgICAgICAgIGN1cnJl
bnQtPmNvcHlQcml2YXRlTmFtZVVzZXMobV9zY29wZVN0YWNrW2ldKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgU2NvcGVSZWYgY2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rp
b25Ob25MZXhpY2FsU2NvcGUoKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVT
dGFjay5zaXplKCkgLSAxOwpAQCAtMTQ0NCw2ICsxNTE3LDE2IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICByZXR1cm4gbV90b2tlbi5tX3R5cGUgPT0gZXhwZWN0ZWQ7CiAgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSBib29sIG1hdGNoQW5kVXBkYXRlKEpTVG9rZW5UeXBlIGV4cGVjdGVkLCBj
b25zdCBKU1Rva2VuJiB0b2tlbikKKyAgICB7CisgICAgICAgIGlmIChtYXRjaChleHBlY3RlZCkp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4gPSB0b2tlbjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hDb250ZXh0dWFsS2V5d29yZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogICAgIHsKQEAgLTE2OTQsNiArMTc3Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc1NpbXBs
ZUFzc2lnbm1lbnRUYXJnZXQoVHJlZUJ1aWxkZXImLCBUcmVlRXhwcmVzc2lvbik7CiAKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGNvbnN0IElkZW50aWZpZXIq
KTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUp
OwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKICAgICAKQEAgLTE3ODcsNiAr
MTg3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUGFyc2VQaGFzZSBmdW5jdGlvblBh
cnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkgfTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxscHRyIH07CisgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBhbGxvd0F3
YWl0IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUGFyc2luZ0NsYXNzRmllbGRJbml0aWFsaXpl
ciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTE5MjksNyArMjAxNSw3IEBAIHByaXZhdGU6CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4K
LXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFy
c2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8
aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0
b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJN
c2c7CkBAIC0xOTQ2LDYgKzIwMzIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBB
U1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJz
dCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigp
Lnplcm9CYXNlZEludCgpOwogCisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiB2
YXJpYWJsZXNVbmRlclREWikgeworICAgICAgICBpZiAodmFyaWFibGVzVW5kZXJURFotPnByaXZh
dGVOYW1lc1NpemUoKSkgeworICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElzUHJpdmF0
ZU5hbWVTY29wZSgpOworICAgICAgICAgICAgdmFyaWFibGVzVW5kZXJURFotPmNvcHlQcml2YXRl
TmFtZXMoY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBTdHJpbmcgcGFyc2VFcnJvciA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFy
c2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAgICBpbnQgbGluZU51bWJlciA9
IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKQEAgLTIwMzEsNiArMjEyNCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlw
ZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQ
YXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKKyAgICBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIpCiB7
CiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwpAQCAt
MjA0Miw3ICsyMTM2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZS5wcm92
aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUs
IHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2
ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCks
IGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEpOwotICAgICAgICByZXN1bHQgPSBw
YXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6
UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAg
cmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUs
IGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2lu
Z0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFy
c2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTIwNTUsNyArMjE0OSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29u
c3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBh
cnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSk7Ci0g
ICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFy
c2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6
IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3Is
IG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRl
eHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJs
ZXNVbmRlclREWiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDMwZDJlMmRlYTRjMTE2
Zjc3MjMzMGVkOTQ4ZGI5MGRiN2IxNGE1M2IuLjZiZTMwYzEzNzkxNjcwMTY0Y2EzNzc0YzE1OGJh
Zjc4Y2Q4NjMyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIERPVUJMRSwK
ICAgICBCSUdJTlQsCiAgICAgSURFTlQsCisgICAgUFJJVkFURU5BTUUsCiAgICAgU1RSSU5HLAog
ICAgIFRFTVBMQVRFLAogICAgIFJFR0VYUCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKaW5kZXggNjU2NzgxYzc0NzExZmVmNjNhOGM2YWRjNjdiYzk1MjZl
MDQ4NzMyYi4uZjg1OWY2ODMxMDdmYzM4MTNkNjNhZDNlOGE2NzhkNDQwYmM4ZTljZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRl
Z2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhp
c0V4cHIsIE51bGxFeHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIs
CiAgICAgICAgIEZ1bmN0aW9uRXhwciwgQ2xhc3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIs
IEJyYWNrZXRFeHByLCBEb3RFeHByLCBDYWxsRXhwciwKLSAgICAgICAgTmV3RXhwciwgUHJlRXhw
ciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwKKyAgICAg
ICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwgT3B0
aW9uYWxDaGFpbiwgUHJpdmF0ZURvdEV4cHIsCiAgICAgICAgIENvbmRpdGlvbmFsRXhwciwgQXNz
aWdubWVudEV4cHIsIFR5cGVvZkV4cHIsCiAgICAgICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJh
bEV4cHIsIEJpbmRpbmdEZXN0cnVjdHVyaW5nLCBSZXN0UGFyYW1ldGVyLAogICAgICAgICBBcnJh
eURlc3RydWN0dXJpbmcsIE9iamVjdERlc3RydWN0dXJpbmcsIFNvdXJjZUVsZW1lbnRzUmVzdWx0
LApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVC
b29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7
IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nl
c3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
LCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWUgPyBQ
cml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdF
eHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29u
c3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCkgeyByZXR1cm4gWWFycjo6aGFzRXJyb3IoWWFycjo6
Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSwgZmxhZ3Muc3RyaW5nKCkpKSA/IDAgOiBSZWdF
eHBFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBO
ZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0K
QEAgLTQwMSw3ICs0MDEsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xvY2F0aW9uKEV4cHJl
c3Npb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhw
ciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBCcmFja2V0RXhwcjsKKyAgICAgICAgcmV0
dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlwZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0gUHJp
dmF0ZURvdEV4cHIgfHwgdHlwZSA9PSBCcmFja2V0RXhwcjsKKyAgICB9CisKKyAgICBib29sIGlz
UHJpdmF0ZUxvY2F0aW9uKEV4cHJlc3Npb25UeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gdHlwZSA9PSBQcml2YXRlRG90RXhwcjsKICAgICB9CiAKICAgICBib29sIGlzQXNzaWdubWVu
dExvY2F0aW9uKEV4cHJlc3Npb25UeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRleCA4ZTY5MTUxYzdiNmNi
MzExMWIwZmU3N2NlODk3MzA3NDA2MmY1ZjVhLi4xZjU3MDg4YTM0YzY2M2NhNzAyZjc3ZDQ3NzQw
Njk2ZTI2NzY4OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTI5LDYgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitWYXJpYWJsZUVudmlyb25tZW50JiBWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRv
cj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCit7CisgICAgbV9tYXAgPSBvdGhl
ci5tX21hcDsKKyAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZDsKKyAgICBtX3JhcmVEYXRhLnJlc2V0KCk7CisgICAgaWYgKG90aGVyLm1fcmFy
ZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKTsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNDYXB0dXJlZElm
RGVmaW5lZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogewog
ICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7CkBAIC04MCw2ICs5
MCw3IEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6c3dhcChWYXJpYWJsZUVudmlyb25tZW50
JiBvdGhlcikKIHsKICAgICBtX21hcC5zd2FwKG90aGVyLm1fbWFwKTsKICAgICBtX2lzRXZlcnl0
aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKKyAgICBtX3JhcmVE
YXRhLnN3YXAob3RoZXIubV9yYXJlRGF0YSk7CiB9CiAKIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVu
dDo6bWFya1ZhcmlhYmxlQXNJbXBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBpZGVudGlmaWVyKQpAQCAtMTAwLDcgKzExMSw3IEBAIENvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
CiAgICAgOiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKGVudi5pc0V2ZXJ5dGhpbmdDYXB0dXJlZCgp
KQogewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8VW5pcXVlZFN0cmluZ0ltcGwqLCBWYXJpYWJsZUVu
dmlyb25tZW50RW50cnk+LCAzMj4gc29ydGVkRW50cmllczsKLSAgICBzb3J0ZWRFbnRyaWVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZW52LnNpemUoKSk7CisgICAgc29ydGVkRW50cmllcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudi5tYXBTaXplKCkpOwogICAgIGZvciAoYXV0byYgcGFpciA6
IGVudikKICAgICAgICAgc29ydGVkRW50cmllcy5hcHBlbmQoeyBwYWlyLmtleS5nZXQoKSwgcGFp
ci52YWx1ZSB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaAppbmRleCA3YWRjN2UxMzg3OTAwNGQ0ZDdjOTMzMGNmZTVjN2E3YWU5
YmRhM2JiLi43YzZkNWIxODM4MWRhYTNhOTEwN2UzYjQ2MGMzZThkNWIyN2Q3ZTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApA
QCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSXRl
cmF0b3JSYW5nZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDIsNiArNDQsNyBAQCBwdWJs
aWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUGFyYW1ldGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRl
TmFtZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0
cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7
IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC01Myw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0SXNGdW5jdGlvbigpIHsgbV9iaXRzIHw9IElzRnVuY3Rpb247IH0K
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQYXJhbWV0ZXIoKSB7IG1fYml0cyB8PSBJc1Bh
cmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGlu
Z0NhbmRpZGF0ZSgpIHsgbV9iaXRzIHw9IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU5hbWUoKSB7IG1fYml0cyB8PSBJ
c1ByaXZhdGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsg
bV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC03NCw3ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IElzSW1wb3J0ZWROYW1lc3BhY2UgPSAxIDw8IDYsCiAgICAgICAgIElzRnVuY3Rpb24gPSAxIDw8
IDcsCiAgICAgICAgIElzUGFyYW1ldGVyID0gMSA8PCA4LAotICAgICAgICBJc1Nsb3BweU1vZGVI
b2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwgOQorICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0Nh
bmRpZGF0ZSA9IDEgPDwgOSwKKyAgICAgICAgSXNQcml2YXRlTmFtZSA9IDEgPDwgMTAsCiAgICAg
fTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtODMsMTUgKzg4LDU1IEBAIHN0
cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJp
YWJsZUVudmlyb25tZW50RW50cnk+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24gPSBmYWxzZTsKIH07CiAKK3N0cnVjdCBQcml2YXRlTmFtZUVudHJ5IHsKK3B1Ymxp
YzoKKyAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0g
dHJhaXRzOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNVc2VkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2JpdHMgfD0gSXNVc2VkOyB9CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CisKKyAg
ICB1aW50MTZfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUHJpdmF0ZU5hbWVFbnRyeSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9iaXRzID09IG90aGVyLm1fYml0czsKKyAgICB9CisKKyAgICBlbnVtIFRy
YWl0cyA6IHVpbnQxNl90IHsKKyAgICAgICAgSXNVc2VkID0gMSA8PCAwLAorICAgICAgICBJc0Rl
Y2xhcmVkID0gMSA8PCAxLAorICAgIH07CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iaXRz
IHsgMCB9OworfTsKKworc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRy
YWl0czxQcml2YXRlTmFtZUVudHJ5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IGZhbHNlOworfTsKKwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiBwcml2
YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRz
PiBNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFBy
aXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVz
OwogcHVibGljOgotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSA9IGRlZmF1bHQ7Ci0gICAgVmFy
aWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpID0gZGVmYXVsdDsK
LSAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmKSA9IGRl
ZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0
b3I9KFZhcmlhYmxlRW52aXJvbm1lbnQmJikgPSBkZWZhdWx0OworICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQoKSB7IH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQm
JiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAg
LCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCisg
ICAgICAgICwgbV9yYXJlRGF0YShXVEZNb3ZlKG90aGVyLm1fcmFyZURhdGEpKQorICAgIHsKKyAg
ICB9CisgICAgVmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBv
dGhlcikKKyAgICAgICAgOiBtX21hcChvdGhlci5tX21hcCkKKyAgICAgICAgLCBtX2lzRXZlcnl0
aGluZ0NhcHR1cmVkKG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCisgICAgICAgICwgbV9y
YXJlRGF0YShvdGhlci5tX3JhcmVEYXRhID8gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJv
bm1lbnQ6OlJhcmVEYXRhPigqb3RoZXIubV9yYXJlRGF0YSkgOiBudWxscHRyKQorICAgIHsKKyAg
ICB9CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIG90aGVyKTsKIAogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBiZWdp
bigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRl
cmF0b3IgZW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KQEAgLTk5LDcgKzE0NCw4IEBAIHB1
YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0
IGFkZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVy
biBtX21hcC5hZGQoaWRlbnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkpOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcikgeyByZXR1cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgIEFMV0FZU19J
TkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUo
KSArIHByaXZhdGVOYW1lc1NpemUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbWFw
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KSBjb25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCByZW1vdmUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRl
bnRpZmllcikgeyByZXR1cm4gbV9tYXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlT
X0lOTElORSBNYXA6Oml0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQpAQCAtMTE2
LDExICsxNjIsMTA2IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsgfQogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX21hcC5zaXplKCk7IH0KIAorICAgIHR5cGVkZWYgV1RGOjpJ
dGVyYXRvclJhbmdlPFByaXZhdGVOYW1lczo6aXRlcmF0b3I+IFByaXZhdGVOYW1lc1JhbmdlOwor
CisgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlk
ZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZp
ZXIuaW1wbCgpKTsgfQorCisgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAg
ICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKKyAg
ICAgICAgbWV0YS5zZXRJc0RlY2xhcmVkKCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJs
ZUVudmlyb25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTmFtZSgpOwor
ICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQo
KTsKKyAgICAgICAgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisgICAgfQor
ICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVO
YW1lKGlkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzVXNlZCgpOworICAgICAg
ICBpZiAobWV0YS5pc0RlY2xhcmVkKCkpCisgICAgICAgICAgICBmaW5kKGlkZW50aWZpZXIpLT52
YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBQcml2YXRl
TmFtZXNSYW5nZSBwcml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKHBy
aXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gUHJpdmF0ZU5hbWVzUmFuZ2Uo
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0
ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmly
b25tZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAg
ICAgICAgb3RoZXIubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCEoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNs
YXJlZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlQcml2YXRlTmFtZVVzZXMo
VmFyaWFibGVFbnZpcm9ubWVudCYgb3V0ZXIpIGNvbnN0IHsKKyAgICAgICAgLy8gVXNlZCBieSB0
aGUgUGFyc2VyIHRvIHRyYW5zZmVyIHJlY29yZGVkIHVzZXMgb2YgUHJpdmF0ZU5hbWVzIGZyb20g
YW4KKyAgICAgICAgLy8gaW5uZXIgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBpbnRvIGFuIG91dGVy
IG9uZSwgaW4gY2FzZSBhIFBORSBpcyB1c2VkCisgICAgICAgIC8vIGVhcmxpZXIgaW4gdGhlIHNv
dXJjZSBjb2RlIHRoYW4gaXQgaXMgZGVmaW5lZC4KKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1Np
emUoKSA+IDApIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52
YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgICAgICAgICAgICAgIG91dGVyLmdldE9yQWRkUHJp
dmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKS5zZXRJc1VzZWQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIHN0cnVjdCBSYXJlRGF0YSB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBSYXJlRGF0YSgpIHsgfQorICAgICAg
ICBSYXJlRGF0YShSYXJlRGF0YSYmIG90aGVyKQorICAgICAgICAgICAgOiBtX3ByaXZhdGVOYW1l
cyhXVEZNb3ZlKG90aGVyLm1fcHJpdmF0ZU5hbWVzKSkKKyAgICAgICAgeworICAgICAgICB9Cisg
ICAgICAgIFJhcmVEYXRhKGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBSYXJl
RGF0YSYgb3BlcmF0b3I9KGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBQcml2
YXRlTmFtZXMgbV9wcml2YXRlTmFtZXM7CisgICAgfTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDsKIAogICAgIE1hcCBtX21hcDsKICAgICBi
b29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgeyBmYWxzZSB9OworCisgICAgUHJpdmF0ZU5hbWVF
bnRyeSYgZ2V0T3JBZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKKyAgICB7
CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6
Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAg
YXV0byBpdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaW1wbCk7CisgICAgICAg
IGlmIChpdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkKKyAgICAgICAgICAg
IGl0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGltcGwsIFByaXZhdGVOYW1lRW50
cnkoMCkpLml0ZXJhdG9yOworICAgICAgICByZXR1cm4gaXQtPnZhbHVlOworICAgIH0KKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0
YTsKIH07CiAKIGNsYXNzIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBhODI2NjFhMDZiNTky
NDYxZmYyYTY3ZjZjZjQwZTJiMTk2ZjUwMThmLi40MTQzMWQ0Mjc5NTY0ZDY2NWEyOWQxZjYzMDg3
M2YzODVlZDBlNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCkBAIC04MjAsNiArODIwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZW5jb2RlKGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9CisKKyAgICBTb3Vy
Y2VUeXBlPFQ+KiBkZWNvZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0
aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIpOworICAgIH0KIH07CiAK
IGNsYXNzIENhY2hlZFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5r
ZWRTaW1wbGVKdW1wVGFibGU+IHsKQEAgLTk2NywyMyArOTczLDQ1IEBAIHByaXZhdGU6CiAgICAg
dW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiB9OwogCitjbGFzcyBD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZh
cmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJh
cmVEYXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJh
cmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0
CisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEu
bV9wcml2YXRlTmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoTWFwPENh
Y2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVu
dmlyb25tZW50PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KQogICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZCA9IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21h
cC5lbmNvZGUoZW5jb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUo
ZW5jb2RlciwgZW52Lm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikgY29uc3QKICAgICB7
CiAgICAgICAgIGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZDsKICAgICAgICAgbV9tYXAuZGVjb2RlKGRlY29kZXIsIGVudi5tX21hcCk7CisgICAgICAg
IGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVudi5tX3JhcmVEYXRh
ID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICplbnYubV9yYXJlRGF0YSk7Cisg
ICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1
cmVkOwogICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJ
bXBsPiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRy
YWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
SGFzaFRyYWl0cz4gbV9tYXA7CisgICAgQ2FjaGVkUHRyPENhY2hlZFZhcmlhYmxlRW52aXJvbm1l
bnRSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZENvbXBhY3RWYXJpYWJs
ZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0VmFyaWFibGVFbnZpcm9u
bWVudD4gewpAQCAtMTExMCw2ICsxMTM4LDIyIEBAIHByaXZhdGU6CiAgICAgaW50cHRyX3QgbV9i
aXRzOwogfTsKIAorY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+IHsKK3B1YmxpYzoKKyAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3ltYm9s
VGFibGVSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5l
bmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZv
aWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVE
YXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29k
ZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwg
SWRlbnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkU3lt
Ym9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6CiAg
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGUmIHN5bWJv
bFRhYmxlKQpAQCAtMTEyMCw2ICsxMTY0LDcgQEAgcHVibGljOgogICAgICAgICBtX25lc3RlZExl
eGljYWxTY29wZSA9IHN5bWJvbFRhYmxlLm1fbmVzdGVkTGV4aWNhbFNjb3BlOwogICAgICAgICBt
X3Njb3BlVHlwZSA9IHN5bWJvbFRhYmxlLm1fc2NvcGVUeXBlOwogICAgICAgICBtX2FyZ3VtZW50
cy5lbmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9hcmd1bWVudHMuZ2V0KCkpOworICAgICAg
ICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdldCgp
KTsKICAgICB9CiAKICAgICBTeW1ib2xUYWJsZSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNv
bnN0CkBAIC0xMTMzLDYgKzExNzgsMTEgQEAgcHVibGljOgogICAgICAgICBTY29wZWRBcmd1bWVu
dHNUYWJsZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rl
cik7CiAgICAgICAgIGlmIChzY29wZWRBcmd1bWVudHNUYWJsZSkKICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5tX2FyZ3VtZW50cy5zZXQoZGVjb2Rlci52bSgpLCBzeW1ib2xUYWJsZSwgc2NvcGVk
QXJndW1lbnRzVGFibGUpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1i
b2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEt
PmRlY29kZShkZWNvZGVyLCAqc3ltYm9sVGFibGUtPm1fcmFyZURhdGEpOworICAgICAgICB9CisK
ICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KIApAQCAtMTE0Myw2ICsxMTkzLDcg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAgICAg
dW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOwogICAgIENhY2hlZFB0cjxDYWNoZWRTY29wZWRBcmd1
bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CisgICAgQ2FjaGVkUHRyPENhY2hlZFN5bWJvbFRhYmxl
UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAppbmRleCBiNGE4MWU3ZWIxMDczYjMx
OTU3YmM1YmY1ZTA1MmE1YmUyZWM5NDU5Li4zMTc1MWExNTEyNjNjZTZlYTNkNWIyOGIyYTgxMmRl
MmNkYmY3MGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApA
QCAtMjY0LDcgKzI2NCw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiB7CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJv
b3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxS
b290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5
cGUsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwg
Q2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJU
RFopOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAK
aW5kZXggYzYzYTAyOTExMTcyOTVkMTkxOWJhMjgwMmEyYzM5MGFjNTE2NjcwOC4uNTc3ODA3MWJl
NGVhYjNmNDNlYjhiODA3ZmE0NWUzYmI2ZWM5OWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMzIsNiArMzIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFt
ZSMjS2V5d29yZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElO
SVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGlu
TmFtZXMtPm5hbWUjI1ByaXZhdGVOYW1lKCkpCiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5h
bWUpICwgbmFtZSMjU3ltYm9sKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZp
bmUgSU5JVElBTElaRV9QUklWQVRFX0ZJRUxEX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmll
bGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRp
ZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkK
QEAgLTQ1LDYgKzQ2LDcgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZN
JiB2bSkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpF
X0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
SU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElG
SUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9G
SUVMRF9OQU1FKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0NzAyMDJmOTE3OTI1ZDZkM2NiMmJmZjhiNDljMWRm
OTgyZTczZGY4Li5lNDhhYjAxMzZjMDEyZmMzZGM3MGEzMWZmY2M4OGVlY2ZhMTYyNGVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTIwNSw2ICsyMDUsOSBAQAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVh
cikKIAorI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRCht
YWNybykgXAorICAgIG1hY3JvKGNvbnN0cnVjdG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBt
YWNybyhicmVhaykgXApAQCAtMzE5LDYgKzMyMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wo
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkK
ICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xf
R0xPQkFMCiAKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dM
T0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfRklFTERfR0xPQkFMCisKICAgICAgICAgU3ltYm9sSW1wbCogbG9va1VwUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVyIGdl
dFB1YmxpY05hbWUoVk0mLCBTeW1ib2xJbXBsKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDJhMzNiZDMzNTZk
ZmNhOTQ0NGFhMGJlZjJjNzhlZTY5YjJjNzA3ZDYuLjhhYTQ0NjNkODhmMTI3MjAzNjE2YzZjMjhj
Njg3MjhjMzYwNmEyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTI5Nyw2ICsxMjk3LDcyIEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFz
ZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCkKK3sKKyAgICBCRUdJTigpOworCisg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEJ5VmFsRGlyZWN0PigpOworICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisK
KyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmco
KSkpIHsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJv
cGVydHkoc3RydWN0dXJlKSkgeworICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBl
eGlzdGluZ0F0b21TdHJpbmcgPSBhc1N0cmluZyhzdWJzY3JpcHQpLT50b0V4aXN0aW5nQXRvbVN0
cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgICAgICBpZiAoZXhpc3RpbmdBdG9tU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKEpT
VmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkodm0s
IHN0cnVjdHVyZSwgZXhpc3RpbmdBdG9tU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgUkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3Qg
aSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9m
aWxlID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworCisgICAgICAgIGlmIChpc0pTU3RyaW5n
KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQoYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKSk7CisgICAgICAgICAgICBhcnJheVBy
b2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CisgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNl
VmFsdWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQor
ICAgICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChvYmplY3QtPmdldEluZGV4UXVpY2tseShp
KSk7CisKKyAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOwor
CisgICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250
aWd1b3VzICYmIGkgPCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBleHBhbmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMy
LCBhbmQgbWF5YmUgRG91YmxlOgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NDAKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSBvYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICAgICAgc2tp
cE1hcmtpbmdPdXRPZkJvdW5kcyA9IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0
dXJlKG9iamVjdC0+c3RydWN0dXJlKHZtKSkgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlw
ZUNoYWluSXNTYW5lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc2tpcE1h
cmtpbmdPdXRPZkJvdW5kcyAmJiAhQ29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudElu
ZGV4UXVpY2tseSgqb2JqZWN0LCBpKSkKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNl
dE91dE9mQm91bmRzKCk7CisgICAgICAgIH0KKworICAgICAgICBSRVRVUk5fUFJPRklMRUQoanNV
bmRlZmluZWQoKSk7CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2li
bGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3Bl
cnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19F
WENFUFRJT04oKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKworICAgIGJvb2wgZm91
bmQgPSAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5pc1Byb3h5KCkgJiYgcHJvcGVydHkuaXNQcml2YXRl
TmFtZSgpKQorICAgICAgICA/IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYXNPYmplY3Qo
YmFzZVZhbHVlKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkKKyAgICAgICAgOiBiYXNl
VmFsdWUuZ2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOwor
ICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghZm91bmQgJiYgcHJvcGVydHkuaXNQcml2
YXRlTmFtZSgpKQorICAgICAgICBUSFJPVyhjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihn
bG9iYWxPYmplY3QpKTsKKyAgICBSRVRVUk5fUFJPRklMRUQoZm91bmQgPyBzbG90LmdldFZhbHVl
KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpIDoganNVbmRlZmluZWQoKSk7Cit9CisKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQogewogICAgIEJFR0lOKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4
IDIyODcxN2VhMGZmZmRmMzE4MDFjMjA0YTU1YjZmMWE2ZGIzMWNmNjEuLmYyYWFjNWJkMDI4M2Q3
MmRhNTE2ZmU3YzllYzFhMTg1YzdiZjZlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0zOTAsNiArMzkwLDcgQEAgU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggYWY5OGQ0ZDI3YjQxZDE0MzM2YTAy
MThlODBiNzZjZTRkOGI0MGI3Mi4uZDgxZTU4NjY0MWJkNmZjMmJhY2QwZmI0MTc5OTFjYmYxNWY1
OWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKQEAgLTMyOSw2ICszMjksMTYgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5j
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJs
ZS4iKTsKIH0KIAorSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZp
ZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCitKU09iamVj
dCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtl
U3RyaW5nKCJDYW5ub3QgcmVkZWZpbmUgZXhpc3RpbmcgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0
U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2Nv
cGUpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKaW5kZXggMzVhZDEyNTU0YzcwMTI3
ZTRiZmI3NTUxZWJiM2MxNzhlZWI0YzZlMS4uMDIxMzBhZWJhYTI4Yjc3Zjc5YzE2ZTAxZjI5NjMx
NTViODJhNzlhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuaApAQCAtNTMsNiArNTMsOCBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZElu
c3RhbmNlb2ZQYXJhbWV0ZXJFcnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsbwog
SlNPYmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CiBKU09iamVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25t
ZW50KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CitKU09iamVjdCogY3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJpbmcgZXJyb3JE
ZXNjcmlwdGlvbkZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIEpTX0VYUE9S
VF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0
KiwgVGhyb3dTY29wZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGU4YWQyNWY4YTY2NzE1MjdiNTEyNzg2ZTY1ZmZhMzI2MDQ0
NDk2ZmEuLjY2MGM1NjgxNmUyZDNkODE0NjNkOWYzMjMyZTVlNzQ1MjE0YWVhMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI5
OSw2ICsyOTksMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3du
TGVuZ3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1i
b2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFC
TEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMTE1
NSw2ICsxMTYxLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMg
Q29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpKTsKICAg
ICAgICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyAgICAvLyBQcml2YXRlU3ltYm9s
cyAvIFByaXZhdGVOYW1lcworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIo
W10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAg
fSk7CisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJF
QU1JTkdfQVBJKQogICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJB
c3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Njb3BlLmNwcAppbmRleCA2ZDVhYjY4MmM2ODM5MTRmNjlmM2U1YzIyODM4NGZlZmU0NjU3N2M4
Li45NmM4ZGJkNDMwNjc5MWUxYTVlNjExOGE2NTIzZTU0ZDgzZjNhNTVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzM5LDYgKzMzOSwxMCBAQCB2b2lk
IEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUs
IFZhcmlhYmxlRW52aXJvbm1lbgogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5
bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUt
PmVuZChsb2NrZXIpLCBpdGVyID0gc3ltYm9sVGFibGUtPmJlZ2luKGxvY2tlcik7IGl0ZXIgIT0g
ZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtleSk7CisgICAgICAg
IGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAgICAg
IHJlc3VsdC51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAgICAgIH0KICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCBi
YzQ5ZGM5ODJjNzMyODJiZWRlYjJiMWRlZmM3NjdhODVhYjM1YWY5Li43NzkwY2Y1NzNkMjZmOTUy
ZjQ5OTlhNTNmM2MyNzVkNjc1MWEzY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODMsNiArMTgzLDExIEBAIFN5bWJvbFRhYmxlKiBT
eW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICAgICAgZm9yICg7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5t
X3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOwogICAgICAgICB9
CisKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcykKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJp
dmF0ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5k
ZXggMWMzODZlYzRiZjhmNTYyOWMxNTE2ZTVkODQwOGJjNGMwOGI2MTIxMC4uYTQ3YmEwZDZkMTQ3
ODJlZGU3ZDJmNTY0NjY0NTIwYTdhYTRiZmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2F0Y2hw
b2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3ltYm9sSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUwLDYgKzQ1MCw4IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
UmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBP
ZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkq
PiBMb2NhbFRvRW50cnlWZWM7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlTmFtZVNldDsKKyAgICB0eXBlZGVm
IFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFtZVNldDo6aXRlcmF0b3I+IFBy
aXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBl
LCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZN
JiB2bSkKQEAgLTU5NCw3ICs1OTYsMjggQEAgcHVibGljOgogICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGFkZChsb2NrZXIsIGtleSwgc3RkOjpmb3J3
YXJkPEVudHJ5PihlbnRyeSkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5h
bWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lSXRlcmF0b3JSYW5n
ZSBwcml2YXRlTmFtZXMoKQorICAgIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9y
IGJlZ2luLCBlbmQ7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CisgICAgICAgICAgICBiZWdp
biA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCk7CisgICAgICAgICAgICBlbmQg
PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlKGJlZ2luLCBlbmQpOworICAgIH0KKworICAg
IHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJl
RGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFi
bGVSYXJlRGF0YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5h
ZGQoa2V5KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lk
IHNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBF
bnRyeSYmIGVudHJ5KQogICAgIHsKQEAgLTcxNywxOCArNzQwLDIxIEBAIHByaXZhdGU6CiAgICAg
U2NvcGVPZmZzZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1
cnJlbnRKU0xvY2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJp
Y3RFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5v
bi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAv
LyBTY29wZVR5cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1h
cCBtX3VuaXF1ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9W
YXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7
CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQ
cml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRlOgorICAgIHVu
c2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4
aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25l
ZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5
bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVk
QXJndW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4MDgwZmI3N2E4YmM5YzhkY2FkOTE0ZWU0NGYx
N2Y5NmRhOTFkNGY0Li4xNzAyMTE3NjdhNDRlOTVhNWZhMDY1Y2Q2MmRkZjVkOWQwNjQ0ZDE3IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIwLTAxLTE3ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRz
IHVwb24gdGhlIGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9m
IHByaXZhdGUKKyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzOgorICAgICAg
ICAqIHN0cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpz
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTAxLTE2ICBS
b2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgW0VTTmV4dF0g
RW5hYmxlcyBhIHdheSB0byB0aHJvdyBhbiBlcnJvciBvbiBCeXRlQ29kZUdlbmVyYXRvciBzdGVw
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5j
dGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhlOWFlZDRkMWEzMWJlMGE4MmJjZjA5ODAyMzFmMGJjYmQ1MTBjYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1h
cy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
Q2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5l
dyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDcwODY5OGY2NTE5OWU3Njk5MjlkZmQ5ZWQyYTU1YjU2M2FiZTA4NQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5q
cwpAQCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VDbGFzc0ZpZWxk
cz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKK30KKworY2xhc3MgQyB7CisgICAgI2YgPSAzOworCisgICAgbWV0aG9kKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChj
Lm1ldGhvZCgpLCAzKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1vbi1wcm94eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2YwNGU2ZDU0YTY2ZWY1MmJkNWZkMzEzZGI3N2Iz
MjYyY2ZlZTlmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb24tcHJveHkuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAg
IGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0
aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSAr
ICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xl
dCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9u
IChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAg
ICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAg
ICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQg
PSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3Rl
ZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9k
J10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1v
dXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1v
Zi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NDRkNmIyMTNiY2E1ODU5YmViN2MyZWI2MmU0NjhkMmNi
ZTdiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAg
aWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9IGAKK3ZhciBDID0gY2xh
c3MgeworICAgIGFzc2VydE91dE9mTGluZVZhbHVlKCkgeworICAgICAgICBhc3NlcnQodGhpcy4j
ZjIwMCwgImZvbyIpOworICAgIH0KK2A7CisKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkr
KykgeworICAgIGtsYXNzU291cmNlICs9ICIgICAgI2YiICsgaSArICI7XG4iOworfQorCitrbGFz
c1NvdXJjZSArPSAiICAgICNmMjAwID0gXCJmb29cIjtcbn0iOworCitldmFsKGtsYXNzU291cmNl
KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYy5hc3NlcnRPdXRPZkxpbmVWYWx1ZSgpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDY5NmJhY2Nm
OTI3MGNlYWUwZWI5MzI3ZTQwY2QwOTg5OTZhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpAQCAtMCwwICsxLDE1IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9u
IGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IobWVzc2FnZSk7Cit9CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihp
KSA9PiBpLiNiIik7CisKKyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fz
c2VydChpbnN0LmEoaW5zdCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtc3RyZXNzLWluc3RhbmNlLmpzCmluZGV4IDU2NjI0ZmJlZWRiYjAyOGI5NGUwZDZlNjExZmU0
OTkzNmQyNTI1OGYuLjNjOWI1ODhlYmVjOWY0YjZkMmE2OTFjNGY3ZDZiOGMzNWFkOTMzZWUgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAt
Myw5ICszLDEzIEBACiBjbGFzcyBBIHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9
IDA7CisgICAgI2QgPSAxOwogICAgIGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAg
ICNmID0gZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0g
ZXZhbCgidHJ1ZSIpOworICAgICNpID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZh
bC1kaXJlY3QtZ2V0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0
LWdldHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY3NzhjYWYyZjgzNzc5NGJiZmU0ZmMwYTQ3MGJl
OTQwNzU1Y2NhMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwt
ZGlyZWN0LWdldHByaXZhdGUuanMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNz
RmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdl
dEJ5VmFsRGlyZWN0IHNob3VsZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZl
IHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3ID0gZmFsc2U7Citj
bGFzcyBDIHsKKyAgICAjeCA9IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkg
cmV0dXJuIHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0
aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFn
XSgpIHsgcmV0dXJuICJ3aXRoICN4IjsgfQorfQorCit0cnkgeworICAgIGZvciAoaSA9IDA7IGkg
PCA1MDsgKytpKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQg
PSBDLngoYyk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGkpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke2N9KSB0byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1
bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAo
aSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93
IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHku
anMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3Bl
cnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg0Y2QwMTZhNTUxYWJiNTc4NzdlMmE3NDc1ZjliZTAyNzU2Njkx
MDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNz
LWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6
IChleHBlY3RlZEVycm9yLCBmdW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBp
bnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUgKyAiIGJ1dCB0aHJv
d3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBbe30uI3hdID0gMTsg
CisgICAgICAgICN4ID0gImZvbyI7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZjk0OTVmOTU2OWQ0
ZjgyMGEzNGQyNWUwNWMxM2ZkZTg5YmZhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8v
IFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5E
ZWZhdWx0KCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmll
bGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQg
d2l0aCAiUHV0QnlWYWxUaHJvd0lmRXhpc3RzIiBzaG91bGQgdGhyb3cgaWYgb3ZlcndyaXRpbmcg
YW4gYWxyZWFkeSBleGlzdGluZyBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBm
YWxzZTsKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8
IDI5ID8gdGhpcyA6IGM7CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4
ID0gaSsrOworICAgIHgoKSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0
cnkgeworICAgIGZvciAobGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9
IG5ldyBDQzsKKyAgICAgICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsK
KyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAz
MCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAg
ICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBl
RXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUyOGVlNWMxMzYy
OTM0OTUwZTc0YmEyMmNkNzVkZDY1NTMzN2E4NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwyOSBAQAor
Ly8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1
bk5vSklUKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NG
aWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0QnlWYWxQcml2YXRlTmFtZSIgc2hvdWxkIHRo
cm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9
IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeCA9IGkrKzsKKyAgICBjb25zdHJ1
Y3RvcigpIHsgcmV0dXJuIGkgPCAzMCA/IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJpbmdUYWddOiAi
d2l0aG91dCAjeCIgfTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4OyB9Cisg
ICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giIH0KK30KKwor
dHJ5IHsKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9i
aiA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KG9iaik7CisgICAgICAgIGlmIChy
ZXN1bHQgIT09IGopCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgk
e29ian0pIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNo
IChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNvbnN0cnVj
dG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICgh
dGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDIzODM1ODEzYmUzOTFl
MmEzYjUwM2YwNzhmNDgzYWIzZDBiOGQyMjguLjc1ZTQwOGM2M2ZjYTZhZTI4MTZmMjlkYzZkYzZm
MWM4OTNhNTJjMDggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysg
Yi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTMsNiArMyw3IEBACiBmbGFnczoKICAg
QmlnSW50OiB1c2VCaWdJbnQKICAgV2Vha1JlZjogdXNlV2Vha1JlZnMKKyAgY2xhc3MtZmllbGRz
LXByaXZhdGU6IHVzZUNsYXNzRmllbGRzCiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZUNsYXNz
RmllbGRzCiBza2lwOgogICBmZWF0dXJlczoKQEAgLTExLDcgKzEyLDYgQEAgc2tpcDoKICAgICAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzEKICAgICAtIHJl
Z2V4cC1sb29rYmVoaW5kCiAKLSAgICAtIGNsYXNzLWZpZWxkcy1wcml2YXRlCiAgICAgLSBjbGFz
cy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHVibGljCiAgICAg
LSBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388545</attachid>
            <date>2020-01-23 08:12:06 -0800</date>
            <delta_ts>2022-02-10 16:31:34 -0800</delta_ts>
            <desc>Patch v7</desc>
            <filename>bug-206431-20200123111205.patch</filename>
            <type>text/plain</type>
            <size>171992</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjdlYWY4ZTczZjI5MzYxM2JhMTY2ZGI4NWMxMGFjYmNhOTJhMDJiLi43Y2RlODRjZDk2Y2Y1NDdm
NDA3NGY0MmNlOGYzZDA3ZmFmZmJkMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTggQEAKKzIwMjAtMDEtMjMgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZGlu
ZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMgcGF0Y2gsIHdlIGltcGxlbWVu
dCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNhbnQgcGFydHMpIG9mIHRoZSBp
bnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvKS4K
KworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBjaGFuZ2VzIGhlcmU6CisKKyAg
ICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUgY29uY2VwdCBvZiBwcml2YXRl
IG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAgICAtIDEgbmV3IG9wY29kZSAo
b3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNvZGUgKG9wX3B1dF9ieV92YWxf
ZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNyZWF0aW5nIFN5bWJvbCBvYmpl
Y3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4cG9zZWQgYXMgYQorICAgICAg
ICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0ZVN5bWJvbCkuCisgICAgICAg
ICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQgYnkgbmFtZSAobm90IGEgdmFs
aWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAgICAgICAgICAgYXJlIGxvYWRl
ZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBtb2Rp
ZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIG9wX3B1dF9ieV92YWxfZGly
ZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0QnlWYWxGbGFncykgd2hpY2gg
YXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBvdmVyd3JpdGluZyBvciBk
ZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVyZW5jZXMgYXJlCisgICAgICAg
IHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAgICAgICAgVG8gaWxsdXN0cmF0
ZSwgdHlwaWNhbCBwcml2YXRlIGZpZWxkIGFjY2VzcyB3aWxsIGxvb2sgbGlrZToKKworICAgICAg
ICA8RmllbGQgUmVhZHM+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1
cnJlbnRTY29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Nj
b3BlICAgICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90
Rm91bmR8R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIGdl
dF9ieV92YWxfZGlyZWN0ICA8dmFsdWU9PiwgPHJlY2VpdmVyIC0tLSBwcm9iYWJseSAndGhpcyc+
LCA8c3ltYm9sPgorCisgICAgICAgIDxGaWVsZCBXcml0ZXM+CisgICAgICAgIHJlc29sdmVfc2Nv
cGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRTY29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAw
CisgICAgICAgIGdldF9mcm9tX3Njb3BlICAgICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEw
NTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRp
b24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5
ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+LCA8UHV0QnlWYWxQcml2YXRlTmFtZT4KKworICAg
ICAgICA8RmllbGQgRGVmaW5pdGlvbj4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29w
ZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0
X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRo
cm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAg
ICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5
bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lfFB1dEJ5VmFsVGhyb3dJZkV4aXN0
cz4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVEdW1wZXIuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAg
ICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRp
YXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGlyZWN0R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
cml2YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBy
aXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RG90
QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1
dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlND
OjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkRlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlk
KToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6
OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9y
OjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OnB1
dEJ5VmFsRmxhZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZh
bERpcmVjdD4pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmlzUHJpdmF0ZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNz
aWduTm9kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4
ZXI8TENoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46
OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPENoYXJhY3RlclR5cGU+Ojpw
YXJzZUlkZW50aWZpZXJTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXhXaXRo
b3V0Q2xlYXJpbmdMaW5lVGVybWluYXRvcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKToKKyAgICAg
ICAgKEpTQzo6RG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAg
ICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpz
aG91bGRDcmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVz
Lmg6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25z
dCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QmFzZURvdE5vZGU6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90
Tm9kZTo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVO
YW1lIGNvbnN0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNl
RWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZW5zdXJlUHJpdmF0
ZU5hbWVVc2VkKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVy
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhw
ZWN0ZWRUb2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29w
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgor
ICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlQcml2YXRlTmFt
ZVVzZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRl
TmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlUHJpdmF0ZU5hbWUpOgorICAg
ICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyOjpjdXJyZW50UHJpdmF0ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y29w
eVByaXZhdGVOYW1lVXNlc1RvT3V0ZXJTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bWF0
Y2hBbmRVcGRhdGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgor
ICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgor
ICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9w
ZXJhdG9yU3RhY2tQb3ApOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6c3dhcCk6CisgICAgICAgIChKU0M6OkNvbXBh
Y3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAg
ICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZU5hbWVFbnRyeTo6UHJpdmF0ZU5hbWVFbnRyeSk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVOYW1lRW50cnk6OmlzVXNlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1l
RW50cnk6OmlzRGVjbGFyZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5
OjpzZXRJc1VzZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc0RlY2xh
cmVkKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6Yml0cyBjb25zdCk6CisgICAg
ICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnQ6Om1hcFNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50Ojp1c2VQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OnByaXZhdGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OnByaXZhdGVOYW1lc1NpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50OjpoYXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmNvcHlQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50Ojpjb3B5UHJpdmF0ZU5hbWVVc2VzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudDo6Z2V0T3JBZGRQcml2YXRlTmFtZSk6CisgICAgICAgICogcnVu
dGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZE9wdGlvbmFsOjpkZWNv
ZGVBc1B0ciBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRS
YXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVu
dFJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVu
dmlyb25tZW50OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25t
ZW50OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZVJhcmVE
YXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhOjpk
ZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6ZW5jb2RlKToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9Db2RlQ2FjaGUuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgor
ICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVy
cm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcik6Cisg
ICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9K
U1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJs
ZXNVbmRlclREWik6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5jcHA6CisgICAgICAg
IChKU0M6OlN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgICogcnVudGltZS9T
eW1ib2xUYWJsZS5oOgorCiAyMDIwLTAxLTIzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGNhbGN1bGF0aW9uIG9mIGtpbmRCaXRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3YzMwYzUxMTYzZWRk
OWYxMDZkNDJmOTVlMDlkMDJiZTljNC4uODY3NzJmYTZjNjI4MTk5NmFlNDIyMmQ0ODMzNGJkODZm
OWRiOTllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTI5LDYgKzUy
OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
Ynl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAg
ICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAorICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAog
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
aAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDY2ZjkzNWRkYjE5MjllY2EzMmQ2ZmNlMTEyYjM5MTE2NjEyNzczOWEuLjg2YmJlYzI5
MjZkYWExYjE2NGFjOGY0ZDMwMTU5YjllMGQ1NGJjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjQzLDYgKzEyNDMsNyBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2
NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVG
Mjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmln
SW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5
MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyog
QmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQwOTUsNiAr
NDA5Niw4IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIv
WWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0
dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1
bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAv
KiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
TmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODMzMiw2ICs4MzM1LDggQEAK
IAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJ
CTBGOTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJ
MEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCisJCQkJODY3
NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAorCQkJCTg2NzZD
NkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzEx
NEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAy
MkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAw
MjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMDY4LDYgKzEwMDczLDcgQEAK
IAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJp
YW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0
QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMw
IC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUx
QjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2
REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjYmY0ODcwMDc3MWQxNzAyNzAzYTdhMDc3ZTVmNDBh
ZWFmZjQ2ZmMuLjI3Y2RiN2U4NjJjNjgzZTZkODA5ZjEzY2YwNGMzZmJiNGM2OWY4MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2NCw2ICsyNjQsNyBAQCBieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUv
UHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29k
ZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMTA4MzA3
ZjM2NWQ4OTk4YTUxMjQwMGI2N2U2ZmIwMWMxNDAwNzhjMS4uODQ0MDkyNGJhNTE0MDZjNzAwNmUz
MDg4OWRmZWJlMGEyOGE1NTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaApAQCAtMTY3LDcgKzE2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IG1hY3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRl
cm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5h
bCkgXAotICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgCisgICAgbWFjcm8oaW5z
dGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkK
IAogbmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZ
TUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5
bWJvbEltcGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggODM2NTExNWY0MjE3OTFhNWM2NjQ4M2E1YTc5
MDVjYWU1YzBlZTNlMS4uMDg4ZTJmZmJkOTgyNWU4ZjI2MDZhOGMyOTljNjZlYjZjZGRiYzJlNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
KyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpp
bmRleCAzNDgzNDdjNmI0Y2Q3NTQ2ODBjMTI2YTBmNzI3NTM2ZjFiZTM3YzRlLi45YTc0NDNhNWQ1
NzU1NWZhN2MxMDZkZGJiYmM2ZWYzMTQ1ODMzZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ3LDYgKzQ3LDcgQEAgdHlwZXMgWwog
ICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQsCiAgICAg
OlB1dEJ5SWRGbGFncywKKyAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2ZVR5cGUsCiAg
ICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NDMsNiArNTQ0LDE3IEBAIG9w
IDpnZXRfYnlfdmFsLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdldEJ5VmFsSGlzdG9yeSwK
ICAgICB9CiAKK29wIDpnZXRfYnlfdmFsX2RpcmVjdCwKKyAgICBhcmdzOiB7CisgICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogewor
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAg
ICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NjYsNiArNTc4LDcgQEAgb3AgOnB1dF9ieV92
YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3Bl
cnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCisg
ICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAg
ICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4MGYwYjgy
ZmZkMmNmMGY2OTdmNzBlMGQ1NjI2YzEzLi4xNWMxM2JmN2E4OWY2N2QyODU5Y2JjZjYxNjFjMzM5
MDc4MzRhNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5jcHAKQEAgLTIxMSw2ICsyMTEsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3Ry
dQogICAgIFVTRVMoT3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4
KQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkK
ICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BHZXRCeVZh
bERpcmVjdCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3Bl
cnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0lu
c3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBA
IC00MTksNiArNDIwLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVu
c2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wSW5z
dGFuY2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVG
UyhPcEdldEJ5VmFsLCBkc3QpCisgICAgREVGUyhPcEdldEJ5VmFsRGlyZWN0LCBkc3QpCiAgICAg
REVGUyhPcFR5cGVvZiwgZHN0KQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNE
c3QpCiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4M2RlY2YzNTEzMjc4NDQ5YzgyNGYuLmQ2
Mzg1YjNiZmFmMTgxMTdkZWU2MjBjMWMxYTczNGU1NzEzM2Y1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9wY29kZVNp
emUuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1
dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1
bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRl
ICJWaXJ0dWFsUmVnaXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFiNmU3MjYyNDA5Yzg1NzQzMmQ0YjJmY2ZhY2Yx
N2M3NjBkMTdiNjQuLjAyYTZjZjA0OGQxMjRhMmU5ZWUwYjUzNDAyYmRmYmQ4MjRlMGM3NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
aApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYoQXJyYXks
IG51bGxwdHIpIFwKICAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGNhbGxG
dW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwgbnVsbHB0cikK
IAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWU3NzZhOGNjYTgxMTExODQ3MjhlZmE2MDI1NzUxNmE5ZWQwNDRiYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZs
YWdzLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2luY2x1ZGUgPHd0
Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRl
IDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQdXRC
eVZhbEZsYWdzIGZsYWdzKQoreworICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlm
IChmbGFncyAmIFB1dEJ5VmFsUHJpdmF0ZU5hbWUpCisgICAgICAgIG91dC5wcmludChjb21tYSwg
IlByaXZhdGVOYW1lIik7CisgICAgaWYgKGZsYWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3RzKQor
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJUaHJvd0lmRXhpc3RzIik7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFs
RmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41Mjg5NWI2Nzg2MDdjOWEzMDkwOTMzNzI4MThjMGU4ZmYzN2Zh
YWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitlbnVtIFB1dEJ5VmFsRmxhZ3MgOiBpbnQzMl90IHsKKyAgICBQdXRCeVZhbE5v
bmUgPSAwLAorCisgICAgUHV0QnlWYWxQcml2YXRlTmFtZSA9IDEsCisKKyAgICBQdXRCeVZhbFRo
cm93SWZFeGlzdHMgPSAyLAorCisgICAgLy8gVGhlIFByaXZhdGVGaWVsZEFkZCBvcGVyYXRpb24g
bXVzdCB0aHJvdyBpZiBhbiBlbnRyeSBmb3IgdGhlIHByaXZhdGUgcmVjb3JkIGRvZXMgbm90IGV4
aXN0CisgICAgUHV0QnlWYWxQcml2YXRlRmllbGRBZGQgPSBQdXRCeVZhbFByaXZhdGVOYW1lIHwg
UHV0QnlWYWxUaHJvd0lmRXhpc3RzLAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZpZWxkUHV0ID0gUHV0
QnlWYWxQcml2YXRlTmFtZSwKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2Ug
V1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNGRjMGU5MTViYzM4MjMxOWE5MmE5NjcxYjYzYjI4YjQ3
MGRlODEzZC4uZTNmYWRkY2JhOTY2MjVlOWRlNzMyYWRhNDgxN2NiMDE1ZTk1NGMxNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAg
QVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAg
ICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gZXhlY3V0
YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0aW9ucygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5j
dGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgdm0sIHNv
dXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0
TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygp
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5
cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucyk7CisgICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRp
bk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBl
eGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUs
IG51bGxwdHIsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaWYgKCFm
dW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggZTMyMjIwNWRlZTc5NTQxY2M1MDVlZjAzNmZmYjlhOTMxMzQyMmRmZi4uZTViMWNi
M2E4MzgxNTFlOTI0NjQxYmYzMDQ4MGFhMDQ3ZmRlYjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTE4NTMsNiArMTg1MywxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxl
eGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAg
ICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSA6
IFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRk
KE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhp
biBhIG5lc3RlZCBzY29wZSAtLS0gb3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KKyAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKKyAg
ICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjY0MCw5ICsy
NjQ1LDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7Cisg
ICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAg
ICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsTm9uZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CkBAIC0yNjY0LDYgKzI2NzUsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1
cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0
ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHBy
b3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxQcml2YXRlRmllbGRBZGQpOworICAgIHJldHVybiB2YWx1
ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHks
IHZhbHVlLCBQdXRCeVZhbFByaXZhdGVGaWVsZFB1dCk7CisgICAgcmV0dXJuIHZhbHVlOworfQor
CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAg
IE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNDJjNjMw
MjYwZWU2ZWI4ZGI2MTYzMzgyZjYwZjY3YzVlODQwZjdmMC4uMjI4ZWQ5N2NjMTQxN2RiYzEzMDhj
Y2JiYzk4Y2EyOGY3ODJkNTVmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzgyLDExICs3ODIsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0
ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHkpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25l
ZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJp
dmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKIAogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lk
IGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBhYjk2ZDk1MDYzZTc3NGQ1N2ZkODRl
MzUyMzJhMDZlNTkwYzcyZDRhLi43ZjEyMjE2YjQ5YjRkYjJjMWE5OGE1MDM0MWMyMmRkODFjODlk
Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCkBAIC01NDksOSArNTQ5LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0
UHV0SG9tZU9iamVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBm
CiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3Rl
cklEKiBwcm90b3R5cGUsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpCiB7Ci0gICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3Vs
YXIgdmFsdWUgcHJvcGVydGllcy4KKyAgICAvLyBQcml2YXRlTmFtZXMgYXJlIGhvaXN0ZWQgYW5k
IHdlIG5lZWQgdG8gZGVjbGFyZSB0aGVtIGJlZm9yZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBo
YW5kbGVkLgogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQq
IGRzdCA9IG51bGxwdHI7CisgICAgZm9yICg7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAg
aWYgKCEocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xh
c3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgZW1p
dFB1dENvbnN0YW50UHJvcGVydHkoZ2VuZXJhdG9yLCBkc3QsICpwLT5tX25vZGUpOworICAgIH0K
KworICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVl
IHByb3BlcnRpZXMuCisgICAgcCA9IHRoaXM7CiAgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+
bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKICAgICAg
ICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBl
IDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAtNzEwLDYgKzcyMCwxOCBAQCBSZWdpc3RlcklEKiBQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZQogCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3Bl
cnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJv
cGVydHlOb2RlJiBub2RlKQogeworICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJv
bCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0
YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3Vt
ZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQo
YXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogc3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0
aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRlU3lt
Ym9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywgcG9zaXRpb24oKSwgcG9z
aXRpb24oKSwgcG9zaXRpb24oKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIHZhciwgc3lt
Ym9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRp
YWxpemF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1fYXNzaWduKTsKICAgICBpZiAo
bm9kZS5uZWVkc1N1cGVyQmluZGluZygpKQogICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5l
cmF0b3IsIHZhbHVlLmdldCgpLCBuZXdPYmopOwpAQCAtODI4LDE2ICs4NTAsNjggQEAgUmVnaXN0
ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCog
cmV0OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdl
dCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0
ZXJJRCogcmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERlc3QuZ2V0
KCksIGJhc2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERl
c3QuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0K
IAorUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUo
KSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVs
ZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIs
IERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBtX3Bvc2l0aW9uLCBKU1RleHRQb3NpdGlvbigtMSwg
bV9wb3NpdGlvbi5vZmZzZXQsIG1faWRlbnQubGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSk7
CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBpZiAo
IXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlz
KCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCB0aGlz
VmFsdWUuZ2V0KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3Is
IGRzdCwgYmFzZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVt
aXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7
CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZh
ci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJl
ZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUu
Z2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBtX3Bvc2l0
aW9uLCBKU1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQsIG1faWRlbnQubGVuZ3Ro
KCkpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2Us
IHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNT
dXBlck5vZGUoKSkgeworICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNW
YWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAg
fQorCisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1
ZSk7Cit9CisKK1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFs
dWUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1p
dFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CkBAIC0xNjI1LDExICsxNjk5LDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0T3B0aW9uYWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpKTsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNz
aW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0g
ICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJh
c2UgPSBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBtX2lkZW50KTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3Vw
ZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpOworICAgIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rp
b24uZ2V0KCksIGJhc2UuZ2V0KCkpOwogCiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAg
LTE5NTAsNiArMjAyMiwyMyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNz
b3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRv
dEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBl
cik7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCks
IHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRpb24sIEpTVGV4dFBvc2l0aW9u
KC0xLCBtX3Bvc2l0aW9uLm9mZnNldCArIGlkZW50Lmxlbmd0aCgpLCAtMSkpOworCisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7
CisgICAgICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0
b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0
b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxk
UHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZhbHVlKTsK
KyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKQEAgLTIxNzMsNiArMjI2
MiwyMiBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCks
IGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAgICBp
ZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJhc2VO
b2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdl
dCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9wb3NpdGlv
biwgSlNUZXh0UG9zaXRpb24oLTEsIG1fcG9zaXRpb24ub2Zmc2V0ICsgaWRlbnQubGVuZ3RoKCks
IC0xKSk7CisKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHBy
b3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgZW1p
dEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZh
dGVOYW1lLmdldCgpLCB2YWx1ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
dmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0
b3IubW92ZShkc3QsIHByb3BEc3QuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAg
ICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CkBAIC0yOTA5LDExICszMDE0
LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmUoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAg
IGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRS
ZXN1bHQuZ2V0KCkpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CisgICAgZW1pdFB1dFBy
b3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LmdldCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGZvcndhcmRS
ZXN1bHQuZ2V0KCkpOwogfQpAQCAtMjkyNSwyMSArMzAyNiwxMyBAQCBSZWdpc3RlcklEKiBSZWFk
TW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
Rm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5p
c1B1cmUoZ2VuZXJhdG9yKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1
YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVu
ZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHRoaXNWYWx1ZTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAg
IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHZhbHVlID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdmFs
dWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBl
bWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlKTsKKwogICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRW
YWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgc3Rh
dGljX2Nhc3Q8SlNDOjpPcGVyYXRvcj4obV9vcGVyYXRvciksIE9wZXJhbmRUeXBlcyhSZXN1bHRU
eXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIAogICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5v
ZGUoKSkKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRo
aXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAgICBlbHNlCi0gICAgICAg
IHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVk
VmFsdWUpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3Is
IGJhc2UuZ2V0KCksIHVwZGF0ZWRWYWx1ZSwgdGhpc1ZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICByZXR1cm4gcmV0OwogfQpAQCAtNDMzNyw2ICs0NDMwLDE4IEBAIHZvaWQgRGVmaW5lRmllbGRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCopCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNv
ZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNh
c2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTogeworICAgICAgICBWYXJpYWJs
ZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9y
ZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVudC0+
bGVuZ3RoKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBtX3Bvc2l0aW9uLCBK
U1RleHRQb3NpdGlvbigtMSwgbV9wb3NpdGlvbi5vZmZzZXQgKyBtX2lkZW50LT5sZW5ndGgoKSwg
LTEpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRBZGQoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFt
ZTogewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xh
c3MgZmllbGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgzMzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgxYmM5ZDJmMWIxZC4u
YTNmMzRmOGM2MjEyN2M5ZTg2ZDJhMDk1MGMwNTZiZjU5MWQ5ZGI4NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTY3LDYgKzY3LDcg
QEAKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxh
Z3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFn
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25t
ZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcw
MjQ4OGY4ZTFjMmEwYjY3MGJmOTlmLi41NGRhMzFhZTAwZTAwMmZmNmRjMjQ0MTFkZmQ1NDk2ZWNi
NGFkY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCkBAIC0yOTQsNiArMjk0LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChP
cGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKIAogICAgIGNh
c2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25t
ZW50OgorICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6IC8vIEZJWE1FOiBvcF9nZXRfYnlf
dmFsX2RpcmVjdCB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRz
LgogICAgIGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2YWxf
cHJvbG9ndWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2Ew
N2I4YTgyNmVlNTljNDExY2MwZTZjYzg3YzNkY2YwZjEyOWFiNC4uZjZhYTkyZTY5NzE4OGFjYTY0
ODMzMTk4Zjc1MTc5NTEzZGU1ZDM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzODQ2LDcgKzEzODQ2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAogICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAg
ICAgc2NyYXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtpbmQpOwor
ICAgICAgICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2lu
ZCwgUHV0QnlWYWxOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDBm
ZTg4ZDY3YzcxMGM3NDJkYTJjMmMxMWQzNGRiMTJiMGZkY2U3MDIuLjI5NGI0MGZiNjM0NDhkOTZm
YTM0N2Y0OTQxMWM5NTA0MzJlN2FkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTM5ODYsNyArMzk4Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0
Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0g
UHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlW
YWxOb25lKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChq
aXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJl
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0
NDFmZGE2ODc2ZTY1MmM5ODQ2MDFhMmIzYjc5ZDM0Li41MzBmOTdhNzU3YmJhMWEyNmVlZWM5OTAz
ZjljNTdkYjBlYTU3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpA
QCAtMTQwLDYgKzE0MCw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVk
ZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1
YjRhZGU0NDRjNDNmNWFkZGYyMzE3ZjQyNjViNy4uY2I0OGFkZmZmMTZkYjYzMjQxYzI1MGQ5NzI4
MmRkYTY1NTQ0OTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0
YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYg
KzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RC
dWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVp
bGRMaXN0KSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplKSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBt
YWNybyhQdXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRj
aCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGU0MjQ4ZjIyMjNhMzA5NDE2YTc4
OGVlNzk5MjI0ZWQ1YjIxYjhmNDYuLjI0MTI0ZTk3MWNkNTRhNzllMGI1MDNhNjc4YjRhNmRiYWM0
ZWI0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5MCw2ICsyOTAsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09Q
KHB1c2hfd2l0aF9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlz
KQorICAgICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVG
SU5FX1NMT1dfT1AocHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
cHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2Nv
cGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggNTVhOTcwYmU2NzVhOWI3Mzc1YWY3YWFjNDg1ZDEzYjI2OGJiMDI2Yy4uY2QyNDM0NjEx
ZTIxMDM1Y2VhNTcyYmE4ZmYzMDllZGFiNGJiYWE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC0zOTYsNiArMzk2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgogICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwo
T3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAorICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHV0QnlWYWxGbGFncyBwdXRCeVZhbEZsYWdz
KE9wKTsKKwogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwg
YW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZh
bEluZm8qLCBSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRp
ZmllciYsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNj
ZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLjViYzBmYWE0MjM5NjE1MmI1N2QwYjE3OWNi
ZjYxNjk4ZTNkYzY1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMiBAQCB2b2lkIEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFN
b2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1
dEtpbmQgcHV0S2luZCwgUHV0QnlWYWxGbGFncyBmbGFncykKICAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQogICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQogewog
ICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIs
NiArMTUzLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChVTkxJS0VMWShtX2ZsYWdz
ICYgUHV0QnlWYWxQcml2YXRlTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBE
aXJlY3QpOworICAgICAgICBBU1NFUlQobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKTsKKyAgICAg
ICAgaWYgKG1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpCisgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgfQorCiAg
ICAgaWYgKG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgewogICAgICAgICBpZiAobV9wdXRLaW5k
ID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYmZiOTAyMTZiMjljMjdmZmQwZWQ4ZDdmMGY1ODdlMDhm
ZTZlNzMxNi4uMTQ4ZjFiYzliZjBkM2I2MTIzMjljMzQ1NGU0MDhjZDYxZTAyM2QwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1dEJ5
VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQu
aCIKIApAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2lu
ZCwgUHV0QnlWYWxGbGFncyk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDAsNiArMTQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFB1
dEJ5VmFsRmxhZ3MgbV9mbGFnczsKIH07CiAKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKaW5kZXggYTJiNTc3YzZiMGExZTdiZGE1NjE4M2Q5Njc5NDkwM2IyNjc4MjNlNi4uZDc2ODM5
NTdmYmQ3YWY5YzI2ZDkzNTNhMTM0ZWVlMzZmNDg2NGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5MCw2ICs2OTAsMTggQEAgQUxXQVlTX0lOTElORSBCaW5h
cnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUp
CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitB
TFdBWVNfSU5MSU5FIFB1dEJ5VmFsRmxhZ3MgSklUOjpwdXRCeVZhbEZsYWdzKE9wKQoreworICAg
IHJldHVybiBQdXRCeVZhbE5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHV0
QnlWYWxGbGFncyBKSVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZh
bERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFnczsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggYWYxZmFjZGZlYmY2YTU3OGM1YzI1MTFjN2U3Mjhi
MWQ5Njg2ZDljMS4uMjk0NTczNDVkMjE4NGU5ZmE0MTVmODVhNTE1Mzc2MTJjY2Y4OGE4OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC02NzgsNiAr
Njc4LDgyIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlE
KGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBz
bG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHVpZCk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRCYXNlKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpOworCisgICAgLy8gVGhyb3cgYSBUeXBlRXJyb3IgaWYgYXR0ZW1wdGluZyB0byBzdG9y
ZSB0byBhIG5vbi1leGlzdGVudCBwcml2YXRlIGZpZWxkLiBUaGlzIGlzIHNpbWlsYXIgdG8gYSBU
RFotbGlrZSBiZWhhdmlvdXIuCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgaWYgKEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBpZGVudCwg
c2xvdCkpCisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIFB1dFByb3BlcnR5U2xvdCBwdXRTbG90
KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGly
ZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIGlkZW50LCB2YWx1ZSwg
cHV0U2xvdCwgJnN0cnVjdHVyZSk7CisKKyAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1
dEJ5SWRBZGRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZv
KHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoYWNjZXNzVHlwZSAhPSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ss
IHN0cnVjdHVyZSkpCisgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBwdXRTbG90LCAqc3R1YkluZm8sIERp
cmVjdCk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExf
RlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFt
ZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRl
bnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CisgICAgQVNTRVJU
KGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworCisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworCisgICAgLy8g
VGhyb3cgYSBUeXBlRXJyb3IgaWYgYXR0ZW1wdGluZyB0byBzdG9yZSB0byBhIG5vbi1leGlzdGVu
dCBwcml2YXRlIGZpZWxkLiBUaGlzIGlzIHNpbWlsYXIgdG8gYSBURFotbGlrZSBiZWhhdmlvdXIu
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgaWYgKCFKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpKQorICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5h
bWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworCisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwg
Y29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG51bGxwdHI7CisgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGds
b2JhbE9iamVjdCwgYmFzZU9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90LCAmc3RydWN0dXJl
KTsKKworICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVs
ZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xv
dC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOworCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKworICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHN0
dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkKKyAgICAg
ICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0
cnVjdHVyZSwgaWRlbnQsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKK30KKwogQUxXQVlT
X0lOTElORSBzdGF0aWMgYm9vbCBpc1N0cmluZ09yU3ltYm9sKEpTVmFsdWUgdmFsdWUpCiB7CiAg
ICAgcmV0dXJuIHZhbHVlLmlzU3RyaW5nKCkgfHwgdmFsdWUuaXNTeW1ib2woKTsKQEAgLTc4MSw2
ICs4NTcsMTYgQEAgc3RhdGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEoKIAogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwor
ICAgIGlmIChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgLy8gVGhyb3cgYSBU
eXBlRXJyb3IgaWYgYXR0ZW1wdGluZyB0byBzdG9yZSB0byBhIG5vbi1leGlzdGVudCBwcml2YXRl
IGZpZWxkLiBUaGlzIGlzIHNpbWlsYXIgdG8gYSBURFotbGlrZSBiZWhhdmlvdXIuCisgICAgICAg
IGF1dG8gYnl0ZWNvZGUgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+
Ynl0ZWNvZGVJbmRleCktPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCk7CisgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOworICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdChiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICAgICAg
aWYgKGZvdW5kID09IChieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3RzKSkg
eworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgZm91bmQg
PyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkgOiBjcmVhdGVJ
bnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhS
ZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDYy
MTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVmZjgyYTMwMGMuLjE3ZmM4YjEyZTgxZGQ0OWFi
YmI1Y2UxNWJlYjc1NDNjMWJkMDliNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHUK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmlj
dE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbElu
Zm8qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxH
ZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhYmY1MmY3MTNlOGFh
MGFmYjVlODA1YzdjZjNmMWQzODgzNzFjMmY2Li4yYjNiOTllM2Y1YzQ0N2U4OGIzMzhjN2JhNjg2
MjI1ODIzMDc2NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wIGJ5dGVj
CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENv
ZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgp
LCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFs
dWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVj
bWFNb2RlKCksIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kLCBwdXRC
eVZhbEZsYWdzKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgdmFsdWUsIFNob3VsZEZpbHRlckJhc2UpOwogICAg
IGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVP
cmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFN
b2RlKCksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIGRp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlWYWxOb25lKTsKICAgICAKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKaW5kZXggNzEyNWJkNGY1MWFmODE1YjlkNTA2NjFlYjdhM2MyNDFhNWFk
NjAzYi4uNzU2OGQyMzZkM2FmYjVmYzE0YTYzODc0NTE4NzZmODk5MmY5NDY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA0YmZkZDdiYzZk
YTMwNmFiYWY1YzlhNjUyNWIwMGJkZmNiOWE0ZDdlLi44ZWRlMDZkYThkYWJlYmQ4NjdiZDg3Y2I4
NTVmYzU0MjM2NDAxMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTEwNDcsMTQgKzEwNDcsMTcgQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VW
YWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpOworICAgIGJvb2wgaXNQcml2YXRlTmFtZUFjY2VzcyA9IGJ5dGVjb2RlLm1fZmxhZ3MgJiBQ
dXRCeVZhbFByaXZhdGVOYW1lOwogICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkp
KSB7CiAgICAgICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIEpTVmFsdWU6OmlzVUludDMyIHdpbGwg
cmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50MzJfdDsgYWxsIHRob3NlIHZh
bHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4KICAgICAgICAgQVNTRVJUKGlzSW5kZXgoc3Vi
c2NyaXB0LmFzVUludDMyKCkpKTsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lQWNjZXNz
KTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJz
Y3JpcHQuYXNVSW50MzIoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJ
TlRfRU5EKCk7CiAgICAgfQogCiAgICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7CisgICAg
ICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZUFjY2Vzcyk7CiAgICAgICAgIGRvdWJsZSBzdWJzY3Jp
cHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwogICAgICAgICB1aW50MzJfdCBzdWJz
Y3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJsZSk7
CiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBp
c0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewpAQCAtMTA2OCw5ICsxMDcxLDE4IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBpZiAoVU5M
SUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX0VORCgpOwogCisg
ICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9PSBpc1ByaXZhdGVOYW1lQWNjZXNz
KTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0
eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxk
VGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKKyAgICAg
ICAgaWYgKGlzUHJpdmF0ZU5hbWVBY2Nlc3MpIHsKKyAgICAgICAgICAgIEFTU0VSVChwcm9wZXJ0
eS5pc1ByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgLy8gVGhyb3cgYSBUeXBlRXJyb3IgaWYg
YXR0ZW1wdGluZyB0byBzdG9yZSB0byBhIG5vbi1leGlzdGVudCBwcml2YXRlIGZpZWxkLiBUaGlz
IGlzIHNpbWlsYXIgdG8gYSBURFotbGlrZSBiZWhhdmlvdXIuCisgICAgICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAg
ICAgICAgICAgaWYgKGZvdW5kID09IGJvb2woYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5VmFsVGhy
b3dJZkV4aXN0cykpCisgICAgICAgICAgICAgICAgTExJTlRfVEhST1coZm91bmQgPyBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkgOiBjcmVhdGVJbnZhbGlkUHJp
dmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgfQogICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25T
bG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0
LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggOTNj
MjkwMjViMGQ5MzA1ZDk5NTcxMDNlMTY1YjdhYTg5MTRjYmIxZC4uMzRhZWQyYjk0NzRmNDBlM2E0
ZGFjNTg2MTA2MTljYzIxZTMxOTM4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE1MDksNjQgKzE1
MDksNjkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCittYWNybyBnZXRCeVZh
bE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2xvd1BhdGhOYW1lLCBvc3JFeGl0UG9pbnQp
CisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsICVvcGNvZGVTdHJ1Y3Ql
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICAgICAg
bWV0YWRhdGEodDUsIHQyKQorICAgICAgICBnZXQobV9iYXNlLCB0MikKKyAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZh
bFNsb3cpCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQorICAgICAgICBn
ZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbG9hZHAg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMKKyAgICAgICAgYW5kaSBJbmRleGluZ1NoYXBl
TWFzaywgdDIKKyAgICAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRp
Z3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RD
b250aWd1b3VzCisKKyAgICAub3BHZXRCeVZhbElzQ29udGlndW91czoKKyAgICAgICAgYmlhZXEg
dDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBUYWdPZmZzZXRb
dDMsIHQxLCA4XSwgdDIKKyAgICAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0
MQorICAgICAgICBqbXAgLm9wR2V0QnlWYWxEb25lCisKKyAgICAub3BHZXRCeVZhbE5vdENvbnRp
Z3VvdXM6CisgICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3Vi
bGUKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAg
ICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisgICAgICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdl
dEJ5VmFsU2xvdworICAgICAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hc3NpdmVseSBvcHRp
bWl6ZWQuCisgICAgICAgIGZkMmlpIGZ0MCwgdDEsIHQyCisgICAgICAgIGdldChtX2RzdCwgdDAp
CisgICAgICAgIGptcCAub3BHZXRCeVZhbE5vdEVtcHR5CisKKyAgICAub3BHZXRCeVZhbE5vdERv
dWJsZToKKyAgICAgICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAgICAgYmlhIHQy
LCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlW
YWxTbG93CisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAg
ICAgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhd
LCB0MgorICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNl
dFt0MywgdDEsIDhdLCB0MQorCisgICAgLm9wR2V0QnlWYWxEb25lOgorICAgICAgICBnZXQobV9k
c3QsIHQwKQorICAgICAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cK
KyAgICAub3BHZXRCeVZhbE5vdEVtcHR5OgorICAgICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgICAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCB0NSwgdDIsIHQxKQorICAgICAg
ICBkaXNwYXRjaCgpCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRC
eVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAg
bWV0YWRhdGEodDUsIHQyKQotICAgIGdldChtX2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQot
ICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjpt
X2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLSAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCi0gICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzCi0g
ICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAu
b3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5v
cEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRCeVZhbElzQ29udGlndW91czoKLSAgICBi
aWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0
aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9hZGkgVGFnT2Zmc2V0
W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQot
ICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAg
IGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0
MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVi
bGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0
MAotICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdwotICAgICMgRklYTUU6IFRo
aXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KLSAgICBmZDJpaSBmdDAsIHQxLCB0Mgot
ICAgIGdldChtX2RzdCwgdDApCi0gICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKLQotLm9wR2V0
QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEg
dDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRC
eVZhbFNsb3cKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5n
SGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAg
bG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0Mgot
ICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwg
OF0sIHQxCi0KLS5vcEdldEJ5VmFsRG9uZToKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGJpZXEg
dDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdwotLm9wR2V0QnlWYWxOb3RFbXB0eToK
LSAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQotICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwg
dDIsIHQxKQotICAgIGRpc3BhdGNoKCkKKyAgICAub3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNh
bGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3BhdGNoKCkKIAotLm9wR2V0QnlW
YWxTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCi0g
ICAgZGlzcGF0Y2goKQorICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgb3NyRXhpdFBvaW50
KHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZW5kKQorZW5kCiAKLS5vc3JSZXR1cm5Qb2lu
dDoKK2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgX2xsaW50X3Nsb3dfcGF0aF9n
ZXRfYnlfdmFsLCBtYWNybyhzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldHRlclNldHRl
ck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQy
LCB0MykKICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDIsIHIxLCByMCkKICAgICByZXR1
cm4ocjEsIHIwKQotCiBlbmQpCiAKK2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbF9kaXJlY3QsIE9wR2V0
QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3QsIG1hY3JvKGEsIGIsIGMp
IGVuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4
aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2Rl
U3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KaW5kZXggYjZlZTk5ZTM2M2FmMWZmZDQxYjkxMjU0NGM1MGRlOTJmMWE0ZjJkMy4uODNk
ZGVkMmQ3ZDEzNWI2N2ZhMDU3YmM3NDcwNWI0NjQ1ZDhmYzUwNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE0
OTIsMTg0ICsxNDkyLDE4NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQ
dXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQpCiAKK21h
Y3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5hbWUpCisg
ICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsICVvcGNvZGVTdHJ1Y3QlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICAgICAgbWFj
cm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAgICAgZ2V0KG1fZHN0
LCBzY3JhdGNoKQorICAgICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0K
KyAgICAgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgdDUsIHJlc3VsdCkKKyAg
ICAgICAgICAgIGRpc3BhdGNoKCkKKyAgICAgICAgZW5kCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkYXRhLCByZXR1cm4pCi0gICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
KQotICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCi0gICAgICAgIHN0b3JlcSByZXN1bHQsIFtj
ZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcmVz
dWx0KQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kCisgICAgICAgIG1hY3JvIGZpbmlzaElu
dEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgICAgIG9ycSBudW1iZXJUYWcsIHJl
c3VsdAorICAgICAgICAgICAgZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAg
ICBlbmQKIAotICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAg
ICAgICAgb3JxIG51bWJlclRhZywgcmVzdWx0Ci0gICAgICAgIGZpbmlzaEdldEJ5VmFsKHJlc3Vs
dCwgc2NyYXRjaCkKLSAgICBlbmQKKyAgICAgICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwo
cmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgICAgICBmZDJxIHJlc3VsdCwgc2Ny
YXRjaDEKKyAgICAgICAgICAgIHN1YnEgbnVtYmVyVGFnLCBzY3JhdGNoMQorICAgICAgICAgICAg
ZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgICAgICBlbmQKIAotICAgIG1h
Y3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyKQotICAg
ICAgICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEKLSAgICAgICAgc3VicSBudW1iZXJUYWcsIHNjcmF0
Y2gxCi0gICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICBlbmQK
KyAgICAgICAgbWV0YWRhdGEodDUsIHQyKQogCi0gICAgbWV0YWRhdGEodDUsIHQyKQorICAgICAg
ICBnZXQobV9iYXNlLCB0MikKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6
ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCiAKLSAgICBnZXQobV9iYXNlLCB0MikKLSAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykK
LQotICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLQotICAgIGdldChtX3Byb3BlcnR5LCB0MykK
LSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZh
bFNsb3cpCi0gICAgc3hpMnEgdDEsIHQxCi0KLSAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCi0gICAgbW92ZSBUYWdOdW1iZXIsIG51
bWJlclRhZwotCi0gICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAgICBiaWVxIHQyLCBJ
bnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVxIHQyLCBDb250aWd1
b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRCeVZhbElzQ29udGln
dW91czoKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0
KG1fZHN0LCB0MCkKLSAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIKLSAgICBidHF6IHQyLCAub3BH
ZXRCeVZhbFNsb3cKLSAgICBqbXAgLm9wR2V0QnlWYWxEb25lCi0KLS5vcEdldEJ5VmFsTm90Q29u
dGlndW91czoKLSAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUsIC5vcEdldEJ5VmFsTm90RG91Ymxl
Ci0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6
dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChtX2Rz
dCwgdDApCi0gICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQwLCBmdDAs
IC5vcEdldEJ5VmFsU2xvdwotICAgIGZkMnEgZnQwLCB0MgotICAgIHN1YnEgbnVtYmVyVGFnLCB0
MgotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLSAgICAKLS5vcEdldEJ5VmFsTm90RG91YmxlOgot
ICAgIHN1YmkgQXJyYXlTdG9yYWdlU2hhcGUsIHQyCi0gICAgYmlhIHQyLCBTbG93UHV0QXJyYXlT
dG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3Rv
cmFnZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBnZXQo
bV9kc3QsIHQwKQotICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMsIHQxLCA4XSwg
dDIKLSAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNsb3cKLQotLm9wR2V0QnlWYWxEb25lOgotICAg
IHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1
LCB0MikKLSAgICBkaXNwYXRjaCgpCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgIGFycmF5
UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUs
IHQxKQogCi0ub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgICMgRmlyc3QgbGV0cyBj
aGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUg
Ym9pbGVycGxhdGUgdXAgZnJvbnQuCi0gICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbdDBdLCB0Mgot
ICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKLSAgICBiaWFlcSB0MiwgTnVtYmVyT2ZU
eXBlZEFycmF5VHlwZXNFeGNsdWRpbmdEYXRhVmlldywgLm9wR2V0QnlWYWxTbG93Ci0gICAgCi0g
ICAgIyBTd2VldCwgbm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgdHlwZWQgYXJyYXkuIERvIHNv
bWUgYmFzaWMgdGhpbmdzIG5vdy4KKyAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNs
b3cpCisgICAgICAgIHN4aTJxIHQxLCB0MQogCi0gICAgaWYgQVJNNjRFCi0gICAgICAgIGNvbnN0
IGxlbmd0aCA9IHQ2Ci0gICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0NwotICAgICAgICBsb2FkaSBK
U0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCBsZW5ndGgKLSAgICAgICAgYmlhZXEgdDEs
IGxlbmd0aCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZWxzZQotICAgICAgICAjIGxlbmd0aCBhbmQg
c2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVz
ZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMuCi0gICAgICAgIGJpYWVxIHQx
LCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBl
bmQKKyAgICAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0
MywgbnVtYmVyVGFnKQorICAgICAgICBtb3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCiAKLSAgICBs
b2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MwotICAgIGNhZ2VkUHJpbWl0
aXZlKHQzLCBsZW5ndGgsIHQwLCBzY3JhdGNoKQotCi0gICAgIyBOb3cgYmlzZWN0IHRocm91Z2gg
dGhlIHZhcmlvdXMgdHlwZXM6Ci0gICAgIyAgICBJbnQ4QXJyYXlUeXBlLAotICAgICMgICAgVWlu
dDhBcnJheVR5cGUsCi0gICAgIyAgICBVaW50OENsYW1wZWRBcnJheVR5cGUsCi0gICAgIyAgICBJ
bnQxNkFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQxNkFycmF5VHlwZSwKLSAgICAjICAgIEludDMy
QXJyYXlUeXBlLAotICAgICMgICAgVWludDMyQXJyYXlUeXBlLAotICAgICMgICAgRmxvYXQzMkFy
cmF5VHlwZSwKLSAgICAjICAgIEZsb2F0NjRBcnJheVR5cGUsCi0KLSAgICBiaWEgdDIsIFVpbnQx
NkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsQWJvdmVVaW50MTZB
cnJheQotCi0gICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uIFVpbnQxNkFycmF5
VHlwZS4KLSAgICBiaWEgdDIsIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJh
eVR5cGUsIC5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJyYXkKLQotICAgICMgV2UgaGF2
ZSBvbmUgb2YgSW50OEFycmF5VHlwZSAuLi4gVWludDhDbGFtcGVkQXJyYXlUeXBlCi0gICAgYmlh
IHQyLCBJbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50
OEFycmF5T3JVaW50OENsYW1wZWRBcnJheQotCi0gICAgIyBXZSBoYXZlIEludDhBcnJheVR5cGUu
Ci0gICAgbG9hZGJzaSBbdDMsIHQxXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEp
Ci0KLS5vcEdldEJ5VmFsVWludDhBcnJheU9yVWludDhDbGFtcGVkQXJyYXk6Ci0gICAgYmlhIHQy
LCBVaW50OEFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDhD
bGFtcGVkQXJyYXkKLQotICAgICMgV2UgaGF2ZSBVaW50OEFycmF5VHlwZS4KLSAgICBsb2FkYiBb
dDMsIHQxXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCi0KLS5vcEdldEJ5VmFs
VWludDhDbGFtcGVkQXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZS4K
LSAgICBsb2FkYiBbdDMsIHQxXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCi0K
LS5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJyYXk6Ci0gICAgIyBXZSBoYXZlIGVpdGhl
ciBJbnQxNkFycmF5VHlwZSBvciBVaW50MTZDbGFtcGVkQXJyYXlUeXBlLgotICAgIGJpYSB0Miwg
SW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQxNkFy
cmF5Ci0KLSAgICAjIFdlIGhhdmUgSW50MTZBcnJheVR5cGUuCi0gICAgbG9hZGhzaSBbdDMsIHQx
LCAyXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCi0KLS5vcEdldEJ5VmFsVWlu
dDE2QXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQxNkFycmF5VHlwZS4KLSAgICBsb2FkaCBbdDMs
IHQxLCAyXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCi0KLS5vcEdldEJ5VmFs
QWJvdmVVaW50MTZBcnJheToKLSAgICAjIFdlIGhhdmUgb25lIG9mIEludDMyQXJyYXlUeXBlIC4u
IEZsb2F0NjRBcnJheVR5cGUuCi0gICAgYmlhIHQyLCBVaW50MzJBcnJheVR5cGUgLSBGaXJzdFR5
cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5Ci0KLSAg
ICAjIFdlIGhhdmUgZWl0aGVyIEludDMyQXJyYXlUeXBlIG9yIFVpbnQzMkFycmF5VHlwZQotICAg
IGJpYSB0MiwgSW50MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZh
bFVpbnQzMkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgSW50MzJBcnJheVR5cGUuCi0gICAgbG9hZGkg
W3QzLCB0MSwgNF0sIHQwCi0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRC
eVZhbFVpbnQzMkFycmF5OgotICAgICMgV2UgaGF2ZSBVaW50MzJBcnJheVR5cGUuCi0gICAgIyBU
aGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNpZ25lZCB2YWx1ZXMu
Ci0gICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCi0gICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlWYWxT
bG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50IGluIExMSW50Lgot
ICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlP
ckZsb2F0NjRBcnJheToKLSAgICAjIFdlIGhhdmUgb25lIG9mIEZsb2F0MzJBcnJheVR5cGUgb3Ig
RmxvYXQ2NEFycmF5VHlwZS4gU2FkbHksIHdlIGNhbm5vdCBoYW5kbGUgRmxvYXQzMkFycmF5Ci0g
ICAgIyBpbmxpbmUgeWV0LiBUaGF0IHdvdWxkIHJlcXVpcmUgc29tZSBvZmZsaW5lYXNtIGNoYW5n
ZXMuCi0gICAgYmllcSB0MiwgRmxvYXQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUs
IC5vcEdldEJ5VmFsU2xvdwotCi0gICAgIyBXZSBoYXZlIEZsb2F0NjRBcnJheVR5cGUuCi0gICAg
bG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFs
U2xvdwotICAgIGZpbmlzaERvdWJsZUdldEJ5VmFsKGZ0MCwgdDAsIHQxKQotCi0ub3BHZXRCeVZh
bFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAg
ICBkaXNwYXRjaCgpCisgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCisgICAgICAg
IGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCisgICAgICAgIGJp
bmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cworCisgICAg
Lm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6CisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAu
b3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZHEgW3Qz
LCB0MSwgOF0sIHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBq
bXAgLm9wR2V0QnlWYWxEb25lCisKKyAgICAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6CisgICAg
ICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKKyAgICAgICAg
YmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3Qs
IHQwKQorICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisgICAgICAgIGJkbmVxdW4gZnQw
LCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBmZDJxIGZ0MCwgdDIKKyAgICAgICAgc3Vi
cSBudW1iZXJUYWcsIHQyCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKyAgICAgICAgCisg
ICAgLm9wR2V0QnlWYWxOb3REb3VibGU6CisgICAgICAgIHN1YmkgQXJyYXlTdG9yYWdlU2hhcGUs
IHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UKKyAgICAgICAgYmlhZXEgdDEs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rv
ckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQorICAg
ICAgICBsb2FkcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0MSwgOF0sIHQyCisgICAgICAg
IGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdworCisgICAgLm9wR2V0QnlWYWxEb25lOgorICAgICAg
ICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0
cnVjdCUsIHQ1LCB0MikKKyAgICAgICAgZGlzcGF0Y2goKQogCi0ub3NyUmV0dXJuUG9pbnQ6Ci0g
ICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCi0g
ICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgcjAp
Ci0gICAgcmV0dXJuKHIwKQorICAgIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CisgICAg
ICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhp
cyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCisgICAgICAgIGxvYWRiIEpT
Q2VsbDo6bV90eXBlW3QwXSwgdDIKKyAgICAgICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0
MgorICAgICAgICBiaWFlcSB0MiwgTnVtYmVyT2ZUeXBlZEFycmF5VHlwZXNFeGNsdWRpbmdEYXRh
VmlldywgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIAorICAgICAgICAjIFN3ZWV0LCBub3cgd2Ug
a25vdyB0aGF0IHdlIGhhdmUgYSB0eXBlZCBhcnJheS4gRG8gc29tZSBiYXNpYyB0aGluZ3Mgbm93
LgogCi1lbmQpCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAgICAgY29uc3QgbGVuZ3RoID0g
dDYKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0NworICAgICAgICAgICAgbG9hZGkgSlNB
cnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW3QwXSwgbGVuZ3RoCisgICAgICAgICAgICBiaWFlcSB0
MSwgbGVuZ3RoLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBs
ZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFsbHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJh
bmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24gb3RoZXIgcGxhdGZvcm1zLgorICAgICAg
ICAgICAgYmlhZXEgdDEsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIC5vcEdldEJ5
VmFsU2xvdworICAgICAgICBlbmQKKworICAgICAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6
bV92ZWN0b3JbdDBdLCB0MworICAgICAgICBjYWdlZFByaW1pdGl2ZSh0MywgbGVuZ3RoLCB0MCwg
c2NyYXRjaCkKKworICAgICAgICAjIE5vdyBiaXNlY3QgdGhyb3VnaCB0aGUgdmFyaW91cyB0eXBl
czoKKyAgICAgICAgIyAgICBJbnQ4QXJyYXlUeXBlLAorICAgICAgICAjICAgIFVpbnQ4QXJyYXlU
eXBlLAorICAgICAgICAjICAgIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSwKKyAgICAgICAgIyAgICBJ
bnQxNkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50MTZBcnJheVR5cGUsCisgICAgICAgICMg
ICAgSW50MzJBcnJheVR5cGUsCisgICAgICAgICMgICAgVWludDMyQXJyYXlUeXBlLAorICAgICAg
ICAjICAgIEZsb2F0MzJBcnJheVR5cGUsCisgICAgICAgICMgICAgRmxvYXQ2NEFycmF5VHlwZSwK
KworICAgICAgICBiaWEgdDIsIFVpbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUs
IC5vcEdldEJ5VmFsQWJvdmVVaW50MTZBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBvbmUgb2Yg
SW50OEFycmF5VHlwZSAuLiBVaW50MTZBcnJheVR5cGUuCisgICAgICAgIGJpYSB0MiwgVWludDhD
bGFtcGVkQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxJbnQxNkFy
cmF5T3JVaW50MTZBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBvbmUgb2YgSW50OEFycmF5VHlw
ZSAuLi4gVWludDhDbGFtcGVkQXJyYXlUeXBlCisgICAgICAgIGJpYSB0MiwgSW50OEFycmF5VHlw
ZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDhBcnJheU9yVWludDhDbGFt
cGVkQXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlwZS4KKyAgICAgICAgbG9h
ZGJzaSBbdDMsIHQxXSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisg
ICAgLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRBcnJheToKKyAgICAgICAgYmlh
IHQyLCBVaW50OEFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWlu
dDhDbGFtcGVkQXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgVWludDhBcnJheVR5cGUuCisgICAg
ICAgIGxvYWRiIFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEp
CisKKyAgICAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAgICAjIFdlIGhhdmUg
VWludDhDbGFtcGVkQXJyYXlUeXBlLgorICAgICAgICBsb2FkYiBbdDMsIHQxXSwgdDAKKyAgICAg
ICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxJbnQxNkFycmF5
T3JVaW50MTZBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIGVpdGhlciBJbnQxNkFycmF5VHlwZSBv
ciBVaW50MTZDbGFtcGVkQXJyYXlUeXBlLgorICAgICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQorCisgICAgICAg
ICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4KKyAgICAgICAgbG9hZGhzaSBbdDMsIHQxLCAyXSwg
dDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxV
aW50MTZBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQxNkFycmF5VHlwZS4KKyAgICAgICAg
bG9hZGggW3QzLCB0MSwgMl0sIHQwCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkK
KworICAgIC5vcEdldEJ5VmFsQWJvdmVVaW50MTZBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIG9u
ZSBvZiBJbnQzMkFycmF5VHlwZSAuLiBGbG9hdDY0QXJyYXlUeXBlLgorICAgICAgICBiaWEgdDIs
IFVpbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsRmxvYXQz
MkFycmF5T3JGbG9hdDY0QXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgZWl0aGVyIEludDMyQXJy
YXlUeXBlIG9yIFVpbnQzMkFycmF5VHlwZQorICAgICAgICBiaWEgdDIsIEludDMyQXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MzJBcnJheQorCisgICAgICAg
ICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KKyAgICAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQw
CisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWlu
dDMyQXJyYXk6CisgICAgICAgICMgV2UgaGF2ZSBVaW50MzJBcnJheVR5cGUuCisgICAgICAgICMg
VGhpcyBpcyB0aGUgaGFyZGVzdCBwYXJ0IGJlY2F1c2Ugb2YgbGFyZ2UgdW5zaWduZWQgdmFsdWVz
LgorICAgICAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKKyAgICAgICAgYmlsdCB0MCwgMCwgLm9w
R2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50IGlu
IExMSW50LgorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRC
eVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5OgorICAgICAgICAjIFdlIGhhdmUgb25lIG9m
IEZsb2F0MzJBcnJheVR5cGUgb3IgRmxvYXQ2NEFycmF5VHlwZS4gU2FkbHksIHdlIGNhbm5vdCBo
YW5kbGUgRmxvYXQzMkFycmF5CisgICAgICAgICMgaW5saW5lIHlldC4gVGhhdCB3b3VsZCByZXF1
aXJlIHNvbWUgb2ZmbGluZWFzbSBjaGFuZ2VzLgorICAgICAgICBiaWVxIHQyLCBGbG9hdDMyQXJy
YXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxTbG93CisKKyAgICAgICAg
IyBXZSBoYXZlIEZsb2F0NjRBcnJheVR5cGUuCisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBm
dDAKKyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGZp
bmlzaERvdWJsZUdldEJ5VmFsKGZ0MCwgdDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxTbG93Ogor
ICAgICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGhOYW1lKQorICAgICAgICBkaXNwYXRjaCgpCisK
KyAgICAub3NyUmV0dXJuUG9pbnQ6CisgICAgICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Q
b2ludChvcF8lb3Bjb2RlTmFtZSUsIHNpemUpCisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAg
ICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCB0NSwgcjApCisgICAgICAgIHJldHVy
bihyMCkKKyAgICBlbmQpCitlbmQKKworZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFs
LCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCiAKK2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbF9k
aXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3QpCiAK
IG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQp
CiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGRiZDUzYWU3NjA4NGYyZGE5Yjc1
ZTc0ZjYxZjhhNzA0Yzc4ZDM5NjAuLjlhNzk2YjU5ZmI2YWZlMzVhOWQ1MmVmZDk4Y2IyYzY1OWUz
Mzg1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0y
NzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgRG90VHlwZSB0eXBlLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAgICAgIGlmIChiYXNlLT5pc1N1cGVy
Tm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJvcGVydHkoKTsKICAgICAgICAgCi0gICAg
ICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNz
b3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlvbiwg
YmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC02
NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGUtPmlzQXNzaWdubWVu
dExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbihjb25zdCBF
eHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmlzUHJpdmF0ZUxv
Y2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09iamVjdExpdGVyYWwoY29uc3QgRXhwcmVz
c2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLT5pc09iamVjdExpdGVyYWwo
KTsKQEAgLTE0MjgsMTUgKzE0MzMsMTUgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBE
b3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMp
OwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUgPSBudWxscHRyOwogICAgIGlmICghcHJl
dmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQcml2YXRlTmFtZSgp
KSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOworICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwogICAg
IGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0g
bV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSB8fCBk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFw
cGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgb25s
eSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9y
IHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5IHlldC4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NjguCiAgICAgICAgIGlmICghZG90LT5i
YXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+
YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikKLSAgICAgICAgICAgIG5vZGUgPSBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAgICAgICBub2RlID0gbmV3ICht
X3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICB9CiAgICAgaWYgKCFu
b2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7
CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90
RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KQEAgLTE1NjEsOSArMTU2Niw5IEBA
IEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgQVNTRVJUKGxvYy0+aXNEb3RBY2Nlc3Nvck5v
ZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nv
ck5vZGUqPihsb2MpOwogICAgIGlmIChvcCA9PSBPcEVxdWFsKQotICAgICAgICByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBz
dGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduRG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUo
KSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOwog
Ci0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRN
b2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKKyAgICBSZWFk
TW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCks
IG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKICAgICBu
b2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5v
ZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcAppbmRleCBjMzQxZjQ5Mjc4MjU0ZTI3NzdkMGIyY2Q3M2JkNTVjMmQyM2FhN2UxLi4z
Yjc1NGZjOTJkMzZhNjg3ZjE4Mjg1YmRhNjgwMTc5OTkyMWQ5Y2VkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTM4LDE0ICs5MzgsMTggQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NU
UklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0K
LSAgICAKLSAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbjsKLSAgICBpZiAoaXNQcml2YXRlTmFtZSkKKworICAgIGJvb2wg
aXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBpc0J1aWx0aW5OYW1l
ID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYg
KGlzQnVpbHRpbk5hbWUpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgCiAgICAgY29uc3QgTENoYXIq
IGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwotICAgIAorCisgICAg
aWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAgICB3aGlsZSAoaXNJZGVu
dFBhcnQobV9jdXJyZW50KSkKICAgICAgICAgc2hpZnQoKTsKICAgICAKQEAgLTk2MCwxMSArOTY0
LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgIGludCBpZGVudGlmaWVyTGVu
Z3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwogICAgICAgICBpZGVu
dCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAg
ICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICgh
aXNTYWZlQnVpbHRpbklkZW50aWZpZXIobV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7
CisgICAgICAgICAgICBpZiAoIWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKG1fdm0sIGlkZW50KSAm
JiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0g
bWFrZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxv
d2VkIGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBFUlJP
UlRPSzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAg
ICAgICAgICAgaWYgKGlzQnVpbHRpbk5hbWUpCiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9h
cmVuYS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2
YXRlTmFtZSgqaWRlbnQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLnBy
b3BlcnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9ICZtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwpAQCAt
OTc1LDIwICs5NzksMjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4g
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICB9IGVsc2UKICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJl
bWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZs
YWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICBhdXRv
IGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5UOworICAgIGlm
IChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNv
bnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNCdWlsdGluTmFt
ZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlm
IChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaFRh
YmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAgICAgICAg
ICAgIEFTU0VSVCgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFlbnRyeSk7CiAgICAg
ICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICAgICAgSlNUb2tlblR5cGUgdG9r
ZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUoKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9k
ZSA/IHRva2VuIDogSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVE
X0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogaWRlbnRUeXBlOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9
CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAogdGVtcGxh
dGUgPD4KQEAgLTEwMDMsMjMgKzEwMDgsMjcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAg
ICAgICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0
TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29s
IGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5j
dGlvbjsKLSAgICBpZiAoaXNQcml2YXRlTmFtZSkKKworICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9
IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBpc0J1aWx0aW5OYW1lID0gbV9jdXJyZW50ID09
ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisgICAgaWYgKGlzQnVpbHRpbk5hbWUp
CiAgICAgICAgIHNoaWZ0KCk7CiAKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0g
Y3VycmVudFNvdXJjZVB0cigpOwogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVu
dExpbmVTdGFydE9mZnNldCgpOwogCiAgICAgVUNoYXIgb3JBbGxDaGFycyA9IDA7Ci0gICAgCisK
KyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxlIChp
c0lkZW50UGFydChtX2N1cnJlbnQpKSB7CiAgICAgICAgIG9yQWxsQ2hhcnMgfD0gbV9jdXJyZW50
OwogICAgICAgICBzaGlmdCgpOwogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJy
ZW50ID09ICdcXCcpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CisgICAgICAg
IEFTU0VSVCghaXNCdWlsdGluTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIo
aWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBh
cnNlSWRlbnRpZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwg
bGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtMTAzOCwxMSArMTA0NywxMSBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpZGVudCA9
IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CiAgICAg
ICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKLSAgICAgICAgICAgIGlmICghaXNT
YWZlQnVpbHRpbklkZW50aWZpZXIobV92bSwgaWRlbnQpICYmICFpc1ByaXZhdGVOYW1lKSB7Cisg
ICAgICAgICAgICBpZiAoIWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKG1fdm0sIGlkZW50KSAmJiAh
aXNCdWlsdGluTmFtZSkgewogICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gbWFr
ZVN0cmluZygiVGhlIHVzZSBvZiAnIiwgaWRlbnQtPnN0cmluZygpLCAiJyBpcyBkaXNhbGxvd2Vk
IGluIGJ1aWx0aW4gZnVuY3Rpb25zLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRP
SzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgaWYgKGlzQnVpbHRpbk5hbWUpCiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9hcmVu
YS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5sb29rVXBQcml2YXRl
TmFtZSgqaWRlbnQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKCppZGVudCA9PSBtX3ZtLnByb3Bl
cnR5TmFtZXMtPnVuZGVmaW5lZEtleXdvcmQpCiAgICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9ICZtX3ZtLnByb3BlcnR5TmFtZXMtPnVuZGVmaW5lZFByaXZhdGVOYW1lOwpAQCAtMTA1
Myw3ICsxMDYyLDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAgICAgCi0gICAgaWYgKFVOTElLRUxZKChy
ZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJG
bGFnczo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgaWYg
KFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29u
dGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc0J1aWx0aW5OYW1l
KSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoVGFi
bGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwpAQCAtMTA3Myw4
ICsxMDgyLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHRlbXBsYXRlPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5CiB7CiAgICAgdG9rZW5EYXRhLT5l
c2NhcGVkID0gdHJ1ZTsKICAgICBhdXRvIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQ
dHIoKTsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSAqaWRlbnRpZmllclN0YXJ0ID09ICcjJzsK
KyAgICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5U
OwogICAgIGJvb2wgYnVmZmVyUmVxdWlyZWQgPSBmYWxzZTsKIAorICAgIGlmIChpc1ByaXZhdGVO
YW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYg
KExJS0VMWShpc0lkZW50UGFydChtX2N1cnJlbnQpKSkgewogICAgICAgICAgICAgc2hpZnQoKTsK
QEAgLTEwOTQsNyArMTEwOCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHRl
bXBsYXRlPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5CiAgICAgICAgIGF1
dG8gY2hhcmFjdGVyID0gcGFyc2VVbmljb2RlRXNjYXBlKCk7CiAgICAgICAgIGlmIChVTkxJS0VM
WSghY2hhcmFjdGVyLmlzVmFsaWQoKSkpCiAgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyLmlz
SW5jb21wbGV0ZSgpID8gVU5URVJNSU5BVEVEX0lERU5USUZJRVJfVU5JQ09ERV9FU0NBUEVfRVJS
T1JUT0sgOiBJTlZBTElEX0lERU5USUZJRVJfVU5JQ09ERV9FU0NBUEVfRVJST1JUT0s7Ci0gICAg
ICAgIGlmIChVTkxJS0VMWShtX2J1ZmZlcjE2LnNpemUoKSA/ICFpc0lkZW50UGFydChjaGFyYWN0
ZXIudmFsdWUoKSkgOiAhaXNJZGVudFN0YXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSkpCisgICAgICAg
IGJvb2wgaXNJZGVudGlmaWVyU3RhcnQgPSBpc1ByaXZhdGVOYW1lID8gbV9idWZmZXIxNi5zaXpl
KCkgPT0gMTogIW1fYnVmZmVyMTYuc2l6ZSgpOworICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVu
dGlmaWVyU3RhcnQgPyAhaXNJZGVudFN0YXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSA6ICFpc0lkZW50
UGFydChjaGFyYWN0ZXIudmFsdWUoKSkpKQogICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfSURF
TlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSzsKICAgICAgICAgaWYgKHNob3VsZENyZWF0
ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZWNvcmRVbmljb2RlQ29kZVBvaW50KGNoYXJhY3Rl
ci52YWx1ZSgpKTsKQEAgLTExMjMsMTMgKzExMzgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKU1Rva2Vu
VHkKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBjb25z
dCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwog
ICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICAg
ICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0aWNf
Y2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUoKSk7CiAgICAgICAgIGlmICgodG9r
ZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlKQogICAgICAgICAgICAgcmV0
dXJuIGJ1ZmZlclJlcXVpcmVkID8gVU5FWFBFQ1RFRF9FU0NBUEVfRVJST1JUT0sgOiB0b2tlbjsK
ICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAog
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjaGFyYWN0ZXJSZXF1aXJlc1BhcnNlU3RyaW5nU2xv
d0Nhc2UoTENoYXIgY2hhcmFjdGVyKQpAQCAtMjQwNywxNCArMjQyMiwyMSBAQCBzdGFydDoKICAg
ICAgICAgbV9oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuID0gdHJ1ZTsKICAgICAgICAgbV9s
aW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgY2FzZSBDaGFyYWN0
ZXJIYXNoOgorICAgIGNhc2UgQ2hhcmFjdGVySGFzaDogewogICAgICAgICAvLyBIYXNoYmFuZyBp
cyBvbmx5IHBlcm1pdHRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHNvdXJjZSB0ZXh0LgotICAgICAg
ICBpZiAocGVlaygxKSA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkgeworICAgICAgICBhdXRv
IG5leHQgPSBwZWVrKDEpOworICAgICAgICBpZiAobmV4dCA9PSAnIScgJiYgIWN1cnJlbnRPZmZz
ZXQoKSkgewogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAg
ICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpdCBjb3VsZCBiZSBhIHZhbGlkIFByaXZhdGVOYW1lLgorICAgICAgICBpZiAo
T3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSAmJiAoaXNJZGVudFN0YXJ0KG5leHQpIHx8IG5leHQg
PT0gJ1xcJykpIHsKKyAgICAgICAgICAgIGxleGVyRmxhZ3MucmVtb3ZlKExleGVyRmxhZ3M6OkRv
bnRCdWlsZEtleXdvcmRzKTsKKyAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKyAgICAgICAg
fQogICAgICAgICBnb3RvIGludmFsaWRDaGFyYWN0ZXI7CisgICAgfQogICAgIGNhc2UgQ2hhcmFj
dGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKICAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbikKICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggZmQ5N2EwY2E5MzVlN2U1
Nzc4YTA5Mzg1MDIyZjk4Njc4MDE0YTMyNC4uMDZlNjAyYTdiZGE3MmJiMjgyMTk4ZjI5N2Q4M2E0
MWFhOGU1MTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKQEAgLTMyNywxMCArMzI3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQorICAgIGlubGluZSBCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUpCiAgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVu
dChpZGVudCkKKyAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICB7CisgICAgfQorCisgICAgaW5s
aW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRG90VHlwZSB0eXBlKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBp
ZGVudCwgdHlwZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtNDE4LDExICs0MjQsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNO
b2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5
cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUp
CiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KQEAgLTQzNywxNCArNDQx
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2FsbEZ1
bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQotICAgICAg
ICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5
cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAg
ICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5u
ZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdz
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRv
SW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2Nh
dGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAg
ICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFy
Z3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNl
VG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kKQogICAgICAgICAsIG1fZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KGRpc3RhbmNl
VG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKICAgICB7CiAgICAgfQpAQCAtNzUwLDIxICs3NTQsMTcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3RO
b2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBp
bmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IERvdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBC
YXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAs
IG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdo
dChyaWdodCkKICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFk
TW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCisgICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFz
ZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBt
X29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFz
QXNzaWdubWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGRk
OGVkYjY4NzkxMWJmZjIyMTAyYmM0OWJkNWNlNTUzMWRhOWYwOGUuLjAxNDU4OWQzNzI1YjZhZjM2
M2RhYmMwZDE1ZmRkOTFhY2FiNTU5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0
aWNhbGx5TmFtZWRQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wTmFtZSkKIGJvb2wgUHJv
cGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MoUHJvcGVydHlM
aXN0Tm9kZSogbGlzdCkKIHsKICAgICB3aGlsZSAobGlzdCkgewotICAgICAgICBpZiAobGlzdC0+
bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQorICAgICAgICBpZiAobGlzdC0+bV9ub2Rl
LT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIHx8IGxpc3QtPm1fbm9kZS0+aXNQcml2YXRlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgbGlzdCA9IGxpc3QtPm1fbmV4dDsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMmE4MzY0Njc2ZTY3MWM2
Zjc5MzRhOThkZDNmY2E5YjA5MDE1YmE1ZC4uNDNhY2M5MGZjNmFhNzk2OGU4MWIyMTc4MzBmYTRh
NWQzMjk1NTZjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgyLDYg
KzE4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5
dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgICAgIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gaXNMb2NhdGlvbigpOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVO
b2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNz
aWduUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzEzLDcgKzcxNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWlu
dDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVy
dHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwg
U2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIgfTsK
KyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwg
U2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFBy
aXZhdGUgPSA2NCB9OwogICAgICAgICBlbnVtIFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwg
S25vd25EaXJlY3QgfTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYs
IEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1l
bnRUYWcpOwpAQCAtNzMyLDYgKzczMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29s
IGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVk
c1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBj
b25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmlu
ZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7
IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2
YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsgfQogICAgICAgICBib29sIGhh
c0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBi
b29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkg
JiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1
cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc0Miw3
ICs3NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9u
YW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7CisgICAg
ICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJp
bmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX3B1dFR5cGUgOiAxOwogICAgICAgICBzdGF0
aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6
Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBi
aXRzIik7CkBAIC04MTQsOSArODE2LDMwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29s
IG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIERvdEFjY2Vz
c29yTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKKyAgICBlbnVtIGNsYXNzIERvdFR5cGUgeyBOYW1lLCBQcml2YXRlTmFt
ZSB9OworICAgIGNsYXNzIEJhc2VEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBCYXNl
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIERvdFR5cGUpOworCisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNl
KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CisgICAgICAgIERvdFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0KKworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0
aGlzVmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNW
YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlKTsKKworICAgIHByb3Rl
Y3RlZDoKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKKyAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKKyAgICAgICAgRG90VHlwZSBtX3R5cGU7CisgICAgfTsKKworICAg
IGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERvdEFjY2Vz
c29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNl
KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CkBAIC04MjUsMTAgKzg0OCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wg
aXNMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9v
bCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBE
b3RUeXBlOjpQcml2YXRlTmFtZTsgfQogICAgICAgICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKIAog
ICAgIGNsYXNzIFNwcmVhZEV4cHJlc3Npb25Ob2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpAQCAtOTQxLDkgKzk2Miw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7
CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3Mg
RnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKKyAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUs
IEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKQEAgLTk1MSw4ICs5NzIsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgaXNGdW5jdGlv
bkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAg
ICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAgIH07CiAKQEAgLTk4OSw3ICsxMDA4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBm
aW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RD
YWxsT3JBcHBseSk7CisgICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90
VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtOTk4LDcgKzEwMTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBw
dWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFw
cGx5KTsKKyAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwg
QXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6
ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwpAQCAtMTQzMywyOCArMTQ1MiwyNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwogICAgIH07CiAKLSAg
ICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmlu
YWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBl
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
cmlnaHQ7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAg
ICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBSZWFkTW9kaWZ5
RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4
cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBS
ZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAg
IHVuc2lnbmVkIG1fb3BlcmF0b3IgOiAzMTsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHMgOiAxOwpAQCAtMjIzNyw3ICsyMjUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBDb21wdXRlZE5hbWUgfTsK
KyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUsIENvbXB1dGVkTmFt
ZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSk7CiAKICAgICBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGE3M2E2YWQ4OGU3YjE1
OGJhMDBlYmE1OGU2ZDgzMmQ3MGIzNjVhZmYuLjNiNTZiMGM2MzllODE5YTIzNzMwM2RmODdjYmNk
NTc2YzcyZGI0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTgzOCw2ICs4MzgsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAgICAgICBUcmVlRXhw
cmVzc2lvbiBub2RlID0gMDsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wg
aGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKworICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZB
VEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgdG8gZGVjbGFyZSBhIHZhcmlhYmxl
Iik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgIGZh
aWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVjbGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlw
ZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6
Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlICdsZXQnIGFz
IGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTEyOTMs
NiArMTI5NSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJp
bmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3
b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKKyAgICAgICAg
ICAgIGlmIChraW5kICE9IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVy
cykKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5v
dCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAiLCBkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVL
aW5kTmFtZShraW5kKSk7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEg
cGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAg
fQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmlu
Z0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwga2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVz
dHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1l
IGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMjk0OCw2ICsyOTUyLDE5IEBAIHBhcnNl
TWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJD
YW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAgaGFuZGxl
UHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9w
ZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFN
RTogeworICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkpOworICAg
ICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CisgICAgICAgICAgICBpZGVudCA9IG1f
dG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NF
bGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3QgYmUgcHJpdmF0
ZSIpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRlciwgIkNhbm5v
dCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIEFT
U0VSVChpZGVudCk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBmYWlsSWZUcnVl
KG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1l
dGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUg
ZmllbGQgdHdpY2UiKTsKKyAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5v
ZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX3Rva2Vu
Lm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCiAgICAgICAgICAgICAgICAgZ290byBuYW1lZEtl
eXdvcmQ7CkBAIC0yOTYzLDggKzI5ODAsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBm
YWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAg
ICB9IGVsc2UgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkgJiYgIW1hdGNoKE9QRU5QQVJF
TikgJiYgdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgcGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewogICAgICAgICAgICAgQVNTRVJUKCFpc0dldHRl
ciAmJiAhaXNTZXR0ZXIpOwotICAgICAgICAgICAgaWYgKGlkZW50KQorICAgICAgICAgICAgaWYg
KGlkZW50KSB7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBw
cm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgY2xhc3MgZmllbGQgbmFt
ZWQgJ2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgq
aWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvclByaXZhdGVGaWVsZCwgIkNhbm5vdCBk
ZWNsYXJlIHByaXZhdGUgY2xhc3MgZmllbGQgbmFtZWQgJyNjb25zdHJ1Y3RvciciKTsKKyAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7CiAgICAg
ICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtl
TnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CkBAIC0zMDI4LDYg
KzMwNDcsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tlbkxvY2F0
aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBl
Y3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisgICAgaWYgKE9wdGlv
bnM6OnVzZUNsYXNzRmllbGRzKCkpIHsKKyAgICAgICAgLy8gRmFpbCBpZiB0aGVyZSBhcmUgbm8g
cGFyZW50IHByaXZhdGUgbmFtZSBzY29wZXMgYW5kIGFueSB1c2VkLWJ1dC11bmRlY2xhcmVkIHBy
aXZhdGUgbmFtZXMuCisgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY29weVByaXZhdGVOYW1l
VXNlc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUg
bmFtZXMiKTsKKyAgICB9CiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0
ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52
aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAg
ICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtMzA1MSw2ICszMDc0LDkgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9w
ZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkg
eworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAg
ICAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5
d29yZDoKQEAgLTMwODUsNiArMzExMSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAg
ICAgIGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZp
bmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBk
ZWZpbmVGaWVsZCA9IGNvbnRleHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRl
bnQsIGluaXRpYWxpemVyLCB0eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQo
c291cmNlRWxlbWVudHMsIGRlZmluZUZpZWxkKTsKICAgICB9CkBAIC00NzYyLDYgKzQ3OTEsMjIg
QEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSos
IFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KK2Jvb2wgUGFyc2VyPExleGVyVHlwZT46OmVuc3VyZVByaXZhdGVOYW1lVXNlZChj
b25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdG
dW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKKyAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFByaXZhdGVOYW1lU2NvcGUoJmZvdW5k
KTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjdXJy
ZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICBjdXJyZW50LT51c2VQcml2YXRl
TmFtZSgqaWRlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNv
bnRleHQpCiB7CkBAIC00ODc3LDYgKzQ5MjIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwog
CiAgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobWF0Y2go
UFJJVkFURU5BTUUpLCAiQ2Fubm90IGFjY2VzcyBwcml2YXRlIGlkZW50aWZpZXJzIGluIGFuIG9w
dGlvbmFsIGNoYWluIik7CiAgICAgICAgICAgICBpZiAobWF0Y2goT1BFTkJSQUNLRVQpIHx8IG1h
dGNoKE9QRU5QQVJFTikgfHwgbWF0Y2goQkFDS1FVT1RFKSkKICAgICAgICAgICAgICAgICB0eXBl
ID0gbV90b2tlbi5tX3R5cGU7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTQ5NjQsOCArNTAxMCwy
MSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgIG1fcGFyc2VyU3Rh
dGUubm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgICAgIEpTVGV4dFBv
c2l0aW9uIGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwogICAgICAgICAg
ICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVyKFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3Jk
cyB8IExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpOworICAgICAgICAgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAg
ICAgICAgYXV0byB0eXBlID0gRG90VHlwZTo6TmFtZTsKKyAgICAgICAgICAgICAgICBpZiAobWF0
Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7Cisg
ICAgICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoYmFzZUlzU3VwZXIsICJDYW5ub3QgYWNjZXNz
IHByaXZhdGUgbmFtZXMgZnJvbSBzdXBlciIpOworICAgICAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoY3VycmVudFNjb3BlKCktPmV2YWxDb250ZXh0VHlwZSgpID09IEV2YWxDb250ZXh0VHlw
ZTo6SW5zdGFuY2VGaWVsZEV2YWxDb250ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmhhc1ByaXZhdGVOYW1lKCppZGVudCks
ICJDYW5ub3QgcmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBmaWVsZCAnIiwgaWRlbnQtPmlt
cGwoKSwgIiciKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShlbnN1
cmVQcml2YXRlTmFtZVVzZWQoaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSBwcml2YXRlIG5hbWVz
IG91dHNpZGUgb2YgY2xhc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5s
YXN0UHJpdmF0ZU5hbWUgPSBpZGVudDsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHR5cGUg
PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbV90b2tlbi5tX3R5
cGUgPSBJREVOVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWF0Y2hPckZh
aWwoSURFTlQsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUgYWZ0ZXIgIiwgb3B0aW9uYWxDaGFp
bkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQu
Y3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9jYXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50
LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kUG9zaXRpb24oKSk7Cisg
ICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9jYXRp
b24sIGJhc2UsIGlkZW50LCB0eXBlLCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRv
a2VuRW5kUG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGJhc2VJc1N1
cGVyICYmIGN1cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rpb24oKSkpCiAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPnNldElubmVyQXJyb3dGdW5jdGlvblVzZXNT
dXBlclByb3BlcnR5KCk7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtNTE1OCw2ICs1MjE3
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIERFTEVURVRPS0VOOgogICAgICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGNvbnRl
eHQuaXNSZXNvbHZlKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSB1bnF1YWxpZmllZCBwcm9wZXJ0eSAn
IiwgbV9wYXJzZXJTdGF0ZS5sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9k
ZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNvbnRleHQuaXNQcml2YXRlTG9j
YXRpb24oZXhwciksICJDYW5ub3QgZGVsZXRlIHByaXZhdGUgZmllbGQgIiwgbV9wYXJzZXJTdGF0
ZS5sYXN0UHJpdmF0ZU5hbWUtPmltcGwoKSk7CiAgICAgICAgICAgICBleHByID0gY29udGV4dC5t
YWtlRGVsZXRlTm9kZShsb2NhdGlvbiwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0
U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CkBAIC01MjI5LDcgKzUyODksMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5U
ZXh0KFcKICAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgogICAgICAgICBv
dXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAKKworICAgIGNhc2UgUFJJVkFURU5BTUU6CisgICAg
ICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBwcml2YXRlIG5hbWUgIiwgZ2V0VG9rZW4oKSk7Cisg
ICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgQVdBSVQ6CiAgICAgY2FzZSBJREVOVDoKICAgICAg
ICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAxNzg1YzBjM2UyMTRlMGQ5
MjUwZjFmZmExMTc2NWZjMDM4ODA3OWJlLi43OWNhYmEwODVjZmUyNzI4MDM1NjYzMTA0N2I4ZDZh
ODFlZmU5NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE4MSw2
ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAg
ICAgICwgbV9pc0V2YWxDb250ZXh0KGZhbHNlKQogICAgICAgICAsIG1faGFzTm9uU2ltcGxlUGFy
YW1ldGVyTGlzdChmYWxzZSkKKyAgICAgICAgLCBtX2lzUHJpdmF0ZU5hbWVTY29wZShmYWxzZSkK
ICAgICAgICAgLCBtX2lzQ2xhc3NTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2V2YWxDb250ZXh0
VHlwZShFdmFsQ29udGV4dFR5cGU6Ok5vbmUpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCkBAIC0yODksNiAr
MjkwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNHZW5lcmF0b3JCb3VuZGFyeSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNHZW5lcmF0b3JCb3VuZGFyeTsgfQogICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb247IH0KICAgICBib29sIGlzQXN5bmNG
dW5jdGlvbkJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFy
eTsgfQorICAgIGJvb2wgaXNQcml2YXRlTmFtZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9pc1By
aXZhdGVOYW1lU2NvcGU7IH0KICAgICBib29sIGlzQ2xhc3NTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDbGFzc1Njb3BlOyB9CiAKICAgICBib29sIGhhc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQXJndW1lbnRzOyB9CkBAIC0zMDUsOCArMzA3LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zID0gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lk
IHNldElzUHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBtX2lzUHJpdmF0ZU5hbWVT
Y29wZSA9IHRydWU7CisgICAgfQorCiAgICAgdm9pZCBzZXRJc0NsYXNzU2NvcGUoKQogICAgIHsK
KyAgICAgICAgc2V0SXNQcml2YXRlTmFtZVNjb3BlKCk7CiAgICAgICAgIG1faXNDbGFzc1Njb3Bl
ID0gdHJ1ZTsKICAgICB9CiAKQEAgLTQ3MSw3ICs0NzksNDQgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5nZXQoKSk7CiAg
ICAgfQotICAgIAorCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0
ZU5hbWUoaWRlbnQpOworICAgIH0KKworICAgIHZvaWQgY29weVByaXZhdGVOYW1lVXNlcyhTY29w
ZSYgb3RoZXIpCisgICAgeworICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMuY29weVByaXZhdGVO
YW1lVXNlcyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMpOworICAgIH0KKworICAgIGJvb2wgaGFz
VXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVl
LmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZv
aWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgbV9sZXhpY2Fs
VmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAg
ICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFs
aWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQ
cml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVE
ZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQYXJhbWV0ZXIoaWRlbnQuaW1wbCgp
KTsKQEAgLTgzNCw2ICs4NzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBcmd1bWVudHM7
CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAgYm9vbCBtX2hhc05vblNpbXBsZVBhcmFt
ZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5hbWVTY29wZTsKICAgICBib29sIG1faXND
bGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlwZSBtX2V2YWxDb250ZXh0VHlwZTsKICAgICB1
bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAgLTkwNSw3ICs5NTEsNyBAQCBwdWJsaWM6CiAg
ICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRp
ZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVu
Y3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29u
c3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291
cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0g
bnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9
CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMTE3OCw2ICsxMjI0LDMy
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsK
ICAgICB9CiAKKyAgICBTY29wZVJlZiBjdXJyZW50UHJpdmF0ZU5hbWVTY29wZShib29sICpmb3Vu
ZCA9IDApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAt
IDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHdo
aWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAgICAg
ICAgICBpLS07CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAgICpmb3VuZCA9IG1fc2Nv
cGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgcmV0dXJuIFNjb3BlUmVm
KCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wgY29weVByaXZhdGVOYW1lVXNl
c1RvT3V0ZXJTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fc2NvcGVTdGFjay5pc0Vt
cHR5KCkpOworICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFByaXZhdGVOYW1lU2Nv
cGUoKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IGN1cnJlbnQuaW5kZXgoKSAtIDE7CisgICAgICAg
IHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAg
ICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAgcmV0dXJuICFjdXJy
ZW50LT5oYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpOworCisgICAgICAgIGN1cnJl
bnQtPmNvcHlQcml2YXRlTmFtZVVzZXMobV9zY29wZVN0YWNrW2ldKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCiAgICAgU2NvcGVSZWYgY2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rp
b25Ob25MZXhpY2FsU2NvcGUoKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVT
dGFjay5zaXplKCkgLSAxOwpAQCAtMTQ0NCw2ICsxNTE2LDE2IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICByZXR1cm4gbV90b2tlbi5tX3R5cGUgPT0gZXhwZWN0ZWQ7CiAgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSBib29sIG1hdGNoQW5kVXBkYXRlKEpTVG9rZW5UeXBlIGV4cGVjdGVkLCBj
b25zdCBKU1Rva2VuJiB0b2tlbikKKyAgICB7CisgICAgICAgIGlmIChtYXRjaChleHBlY3RlZCkp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4gPSB0b2tlbjsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hDb250ZXh0dWFsS2V5d29yZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQogICAgIHsKQEAgLTE2OTQsNiArMTc3Niw4IEBAIHByaXZhdGU6CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc1NpbXBs
ZUFzc2lnbm1lbnRUYXJnZXQoVHJlZUJ1aWxkZXImLCBUcmVlRXhwcmVzc2lvbik7CiAKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGNvbnN0IElkZW50aWZpZXIq
KTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUp
OwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKICAgICAKQEAgLTE3ODcsNiAr
MTg3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUGFyc2VQaGFzZSBmdW5jdGlvblBh
cnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkgfTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxscHRyIH07CisgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBhbGxvd0F3
YWl0IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUGFyc2luZ0NsYXNzRmllbGRJbml0aWFsaXpl
ciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTE5MjksNyArMjAxNCw3IEBAIHByaXZhdGU6CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4K
LXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFy
c2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8
aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0
b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJN
c2c7CkBAIC0xOTQ2LDYgKzIwMzEsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBB
U1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJz
dCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigp
Lnplcm9CYXNlZEludCgpOwogCisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiB2
YXJpYWJsZXNVbmRlclREWiAmJiB2YXJpYWJsZXNVbmRlclREWi0+cHJpdmF0ZU5hbWVzU2l6ZSgp
KSB7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAg
ICAgICAgdmFyaWFibGVzVW5kZXJURFotPmNvcHlQcml2YXRlTmFtZXMoY3VycmVudFNjb3BlKCkt
PmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgfQorCiAgICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBw
YXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFyc2luZ0NvbnRleHQsIGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGluc3RhbmNlRmllbGRMb2NhdGlvbnMp
OwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CkBAIC0yMDMx
LDYgKzIxMjEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgRGVy
aXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6
Tm9uZSwKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlID0gRXZhbENvbnRleHRU
eXBlOjpOb25lLAogICAgIERlYnVnZ2VyUGFyc2VEYXRhKiBkZWJ1Z2dlclBhcnNlRGF0YSA9IG51
bGxwdHIsCisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFog
PSBudWxscHRyLAogICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmll
bGRMb2NhdGlvbnMgPSBudWxscHRyKQogewogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZSgpLmlzTnVsbCgpKTsKQEAgLTIwNDIsNyArMjEzMyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVz
dWx0OwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAg
ICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2Rl
LCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVs
dENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwg
aXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VE
YXRhKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBu
YW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0
OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VG
aWVsZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2Rl
PihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJz
aW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQs
IHZhcmlhYmxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYg
KHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAg
IGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0y
MDU1LDcgKzIxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JL
aW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGlu
RXhlY3V0YWJsZXMncyBzcGVjaWFsIGNvbnN0cnVjdG9ycyBzaG91bGQgYWx3YXlzIHVzZSBhIDgt
Yml0IHN0cmluZyIpOwogICAgICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNv
dXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3Vw
ZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVy
aXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlw
ZSwgZGVidWdnZXJQYXJzZURhdGEpOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFy
c2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigp
ID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpu
dWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2Vy
LnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFy
c2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dy
YW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAg
ICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaAppbmRleCAzMGQyZTJkZWE0YzExNmY3NzIzMzBlZDk0OGRiOTBkYjdiMTRhNTNiLi42YmUz
MGMxMzc5MTY3MDE2NGNhMzc3NGMxNThiYWY3OGNkODYzMmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBlbnVtIEpT
VG9rZW5UeXBlIHsKICAgICBET1VCTEUsCiAgICAgQklHSU5ULAogICAgIElERU5ULAorICAgIFBS
SVZBVEVOQU1FLAogICAgIFNUUklORywKICAgICBURU1QTEFURSwKICAgICBSRUdFWFAsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDY1Njc4MWM3
NDcxMWZlZjYzYThjNmFkYzY3YmM5NTI2ZTA0ODczMmIuLmY4NTlmNjgzMTA3ZmMzODEzZDYzYWQz
ZThhNjc4ZDQ0MGJjOGU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVzb2x2ZUV2
YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIs
IEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4
cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlvbkV4cHIsIENsYXNzRXhw
ciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2FsbEV4cHIs
Ci0gICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4
cHIsIE9wdGlvbmFsQ2hhaW4sCisgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBV
bmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sIFByaXZhdGVEb3RFeHByLAogICAg
ICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZFeHByLAogICAgICAg
ICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByLCBCaW5kaW5nRGVzdHJ1Y3R1cmluZywgUmVz
dFBhcmFtZXRlciwKICAgICAgICAgQXJyYXlEZXN0cnVjdHVyaW5nLCBPYmplY3REZXN0cnVjdHVy
aW5nLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBi
b29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
QnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJ
ZGVudGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiB0eXBlID09
IERvdFR5cGU6OlByaXZhdGVOYW1lID8gUHJpdmF0ZURvdEV4cHIgOiBEb3RFeHByOyB9CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQpIHsgcmV0
dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZs
YWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwg
aW50KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC00MDEsNyArNDAxLDEyIEBAIHB1YmxpYzoKIAog
ICAgIGJvb2wgaXNMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlwZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0g
QnJhY2tldEV4cHI7CisgICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHByIHx8IHR5cGUg
PT0gRG90RXhwciB8fCB0eXBlID09IFByaXZhdGVEb3RFeHByIHx8IHR5cGUgPT0gQnJhY2tldEV4
cHI7CisgICAgfQorCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUHJpdmF0ZURvdEV4cHI7CiAgICAg
fQogCiAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5jcHAKaW5kZXggOGU2OTE1MWM3YjZjYjMxMTFiMGZlNzdjZTg5NzMwNzQwNjJmNWY1YS4uMWY1
NzA4OGEzNGM2NjNjYTcwMmY3N2Q0Nzc0MDY5NmUyNjc2ODhlZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0yOSw2
ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorVmFyaWFibGVFbnZpcm9ubWVudCYgVmFy
aWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90
aGVyKQoreworICAgIG1fbWFwID0gb3RoZXIubV9tYXA7CisgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5yZXNl
dCgpOworICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gV1RG
OjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigqb3RoZXIubV9yYXJl
RGF0YSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6
Om1hcmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX21hcC5maW5k
KGlkZW50aWZpZXIpOwpAQCAtODAsNiArOTAsNyBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6
OnN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCiB7CiAgICAgbV9tYXAuc3dhcChvdGhl
ci5tX21hcCk7CiAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG90aGVyLm1faXNFdmVyeXRo
aW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5zd2FwKG90aGVyLm1fcmFyZURhdGEpOwogfQog
CiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKQEAgLTEwMCw3ICsxMTEsNyBA
QCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQo
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIDogbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChl
bnYuaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSkKIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPFVuaXF1
ZWRTdHJpbmdJbXBsKiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PiwgMzI+IHNvcnRlZEVudHJp
ZXM7Ci0gICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5zaXplKCkp
OworICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYubWFwU2l6ZSgp
KTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnYpCiAgICAgICAgIHNvcnRlZEVudHJpZXMuYXBw
ZW5kKHsgcGFpci5rZXkuZ2V0KCksIHBhaXIudmFsdWUgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggN2FkYzdlMTM4
NzkwMDRkNGQ3YzkzMzBjZmU1YzdhN2FlOWJkYTNiYi4uZmQ5NDNjMDg0ODE2MDNjOTc3MjMzMmI4
ZmNjZTIxYjU2ZmFkM2Y3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIklk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFy
YW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2Fu
ZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5k
aWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNTMsNiAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7
IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFy
YW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3Bw
eU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1By
aXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQogCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtNzQsNyAr
NzgsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2LAog
ICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwg
OCwKLSAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDkKKyAgICAg
ICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCisgICAgICAgIElzUHJp
dmF0ZU5hbWUgPSAxIDw8IDEwLAogICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9Owog
fTsKQEAgLTgzLDE1ICs4OCw1NSBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFz
aFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PgogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCitzdHJ1Y3Qg
UHJpdmF0ZU5hbWVFbnRyeSB7CitwdWJsaWM6CisgICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZf
dCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQorCisgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQorICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNs
YXJlZDsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9
IElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2Jp
dHMgfD0gSXNEZWNsYXJlZDsgfQorCisgICAgdWludDE2X3QgYml0cygpIGNvbnN0IHsgcmV0dXJu
IG1fYml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lRW50cnkm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYml0cyA9PSBvdGhlci5tX2Jp
dHM7CisgICAgfQorCisgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAgIElzVXNl
ZCA9IDEgPDwgMCwKKyAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKKyAgICB9OworCitwcml2
YXRlOgorICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKK307CisKK3N0cnVjdCBQcml2YXRlTmFt
ZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4geworICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKK307CisKIGNsYXNzIFZh
cmlhYmxlRW52aXJvbm1lbnQgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFz
aCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRy
eUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lczsKIHB1YmxpYzoKLSAgICBWYXJpYWJsZUVudmlyb25t
ZW50KCkgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9u
bWVudCYmIG90aGVyKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQm
IG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShWYXJpYWJsZUVudmlyb25tZW50JiYpID0gZGVm
YXVsdDsKKyAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgeyB9CisgICAgVmFyaWFibGVFbnZpcm9u
bWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RGTW92
ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5t
X2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFyZURhdGEoV1RGTW92ZShvdGhl
ci5tX3JhcmVEYXRhKSkKKyAgICB7CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCisgICAgICAgIDogbV9tYXAob3RoZXIubV9t
YXApCisgICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFyZURhdGEob3RoZXIubV9yYXJlRGF0YSA/IFdURjo6
bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURh
dGEpIDogbnVsbHB0cikKKyAgICB7CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9w
ZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcik7CiAKICAgICBBTFdBWVNf
SU5MSU5FIE1hcDo6aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgp
OyB9CkBAIC05OSw3ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OmNv
bnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgQUxX
QVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQg
YWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZChpZGVudGlmaWVy
LmltcGwoKSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX21hcC5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXpl
KCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMo
aWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcmVtb3ZlKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLnJlbW92ZShp
ZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBmaW5kKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmZp
bmQoaWRlbnRpZmllcik7IH0KQEAgLTExNiwxMSArMTYyLDEwNCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQ7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9tYXAuc2l6ZSgp
OyB9CiAKKyAgICB1c2luZyBQcml2YXRlTmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxQ
cml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKKworICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1
bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0
dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKworICAgIE1hcDo6QWRkUmVz
dWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5h
bWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOworICAg
ICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVu
dHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAg
ICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRl
bnRpZmllciwgZW50cnkpOworICAgIH0KKyAgICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBhdXRv
JiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAg
bWV0YS5zZXRJc1VzZWQoKTsKKyAgICAgICAgaWYgKG1ldGEuaXNEZWNsYXJlZCgpKQorICAgICAg
ICAgICAgZmluZChpZGVudGlmaWVyKS0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVzUmFuZ2UgcHJpdmF0ZU5hbWVzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJk
ZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAg
ICBBU1NFUlQocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCk7CisgICAgICAgIHJldHVybiBtYWtlSXRl
cmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNp
Z25lZCBwcml2YXRlTmFtZXNTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJl
RGF0YSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuc2l6ZSgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBo
YXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAg
ICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoaWRlbnRpZmllci5pbXBs
KCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5UHJpdmF0ZU5hbWVzKFZh
cmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW90aGVyLm1fcmFyZURh
dGEpCisgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6
ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiBlbnRyeS52
YWx1ZS5pc0RlY2xhcmVkKCkpKQorICAgICAgICAgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZh
dGVOYW1lVXNlcyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgeworICAgICAgICAv
LyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2YXRl
TmFtZXMgZnJvbSBhbgorICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50IGlu
dG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKKyAgICAgICAgLy8gZWFybGll
ciBpbiB0aGUgc291cmNlIGNvZGUgdGhhbiBpdCBpcyBkZWZpbmVkLgorICAgICAgICBpZiAocHJp
dmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJp
dmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkg
JiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0ZXIu
Z2V0T3JBZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpLnNldElzVXNlZCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFJhcmVEYXRhIHsKKyAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFJhcmVEYXRhKCkg
eyB9CisgICAgICAgIFJhcmVEYXRhKFJhcmVEYXRhJiYgb3RoZXIpCisgICAgICAgICAgICA6IG1f
cHJpdmF0ZU5hbWVzKFdURk1vdmUob3RoZXIubV9wcml2YXRlTmFtZXMpKQorICAgICAgICB7Cisg
ICAgICAgIH0KKyAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7Cisg
ICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7Cisg
ICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICB9OworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50OwogCiAgICAgTWFwIG1f
bWFwOwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCB7IGZhbHNlIH07CisKKyAgICBQ
cml2YXRlTmFtZUVudHJ5JiBnZXRPckFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bXBsKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJl
RGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsK
KworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGltcGwsIFBy
aXZhdGVOYW1lRW50cnkoMCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICB9CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9Owog
CiBjbGFzcyBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggYTgyNjYxYTA2YjU5MjQ2MWZmMmE2
N2Y2Y2Y0MGUyYjE5NmY1MDE4Zi4uNDE0MzFkNDI3OTU2NGQ2NjVhMjlkMWY2MzA4NzNmMzg1ZWQw
ZTRjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlw
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNw
cApAQCAtODIwLDYgKzgyMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGVuY29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQorCisgICAgU291cmNlVHlwZTxU
PiogZGVjb2RlQXNQdHIoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gdGhpcy0+dGVt
cGxhdGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKTsKKyAgICB9CiB9OwogCiBjbGFzcyBD
YWNoZWRTaW1wbGVKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlPiB7CkBAIC05NjcsMjMgKzk3Myw0NSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogfTsKIAorY2xhc3MgQ2FjaGVkVmFy
aWFibGVFbnZpcm9ubWVudFJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVu
dmlyb25tZW50OjpSYXJlRGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkK
KyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5t
X3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsK
KyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0
ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQ
dHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5h
bWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkVmFy
aWFibGVFbnZpcm9ubWVudCA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVu
dD4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQmIGVudikKICAgICB7CiAgICAgICAgIG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQgPSBlbnYubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICAgICAgbV9tYXAuZW5jb2Rl
KGVuY29kZXIsIGVudi5tX21hcCk7CisgICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIs
IGVudi5tX3JhcmVEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICB2b2lkIGRlY29kZShEZWNvZGVy
JiBkZWNvZGVyLCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYpIGNvbnN0CiAgICAgewogICAgICAg
ICBlbnYubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAg
ICAgICAgIG1fbWFwLmRlY29kZShkZWNvZGVyLCBlbnYubV9tYXApOworICAgICAgICBpZiAoIW1f
cmFyZURhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBlbnYubV9yYXJlRGF0YSA9IFdURjo6
bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgICAg
IG1fcmFyZURhdGEtPmRlY29kZShkZWNvZGVyLCAqZW52Lm1fcmFyZURhdGEpOworICAgICAgICB9
CiAgICAgfQogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAg
ICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFp
dHM+IG1fbWFwOworICAgIENhY2hlZFB0cjxDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURh
dGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRDb21wYWN0VmFyaWFibGVFbnZpcm9u
bWVudCA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsK
QEAgLTExMTAsNiArMTEzOCwyMiBAQCBwcml2YXRlOgogICAgIGludHB0cl90IG1fYml0czsKIH07
CiAKK2NsYXNzIENhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFy
ZURhdGEmIHJhcmVEYXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVu
Y29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YSYgcmFy
ZURhdGEpIGNvbnN0CisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2Rl
ciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNo
ZWRIYXNoU2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZp
ZXJSZXBIYXNoPiBtX3ByaXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxl
IDogcHVibGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZT4gewogcHVibGljOgogICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkK
QEAgLTExMjAsNiArMTE2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9uZXN0ZWRMZXhpY2FsU2Nv
cGUgPSBzeW1ib2xUYWJsZS5tX25lc3RlZExleGljYWxTY29wZTsKICAgICAgICAgbV9zY29wZVR5
cGUgPSBzeW1ib2xUYWJsZS5tX3Njb3BlVHlwZTsKICAgICAgICAgbV9hcmd1bWVudHMuZW5jb2Rl
KGVuY29kZXIsIHN5bWJvbFRhYmxlLm1fYXJndW1lbnRzLmdldCgpKTsKKyAgICAgICAgbV9yYXJl
RGF0YS5lbmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAg
fQogCiAgICAgU3ltYm9sVGFibGUqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAt
MTEzMyw2ICsxMTc4LDExIEBAIHB1YmxpYzoKICAgICAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUq
IHNjb3BlZEFyZ3VtZW50c1RhYmxlID0gbV9hcmd1bWVudHMuZGVjb2RlKGRlY29kZXIpOwogICAg
ICAgICBpZiAoc2NvcGVkQXJndW1lbnRzVGFibGUpCiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+
bV9hcmd1bWVudHMuc2V0KGRlY29kZXIudm0oKSwgc3ltYm9sVGFibGUsIHNjb3BlZEFyZ3VtZW50
c1RhYmxlKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgc3ltYm9sVGFibGUtPm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGU6
OlN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUo
ZGVjb2RlciwgKnN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQorCiAgICAgICAg
IHJldHVybiBzeW1ib2xUYWJsZTsKICAgICB9CiAKQEAgLTExNDMsNiArMTE5Myw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOwogICAgIHVuc2lnbmVk
IG1fc2NvcGVUeXBlIDogMzsKICAgICBDYWNoZWRQdHI8Q2FjaGVkU2NvcGVkQXJndW1lbnRzVGFi
bGU+IG1fYXJndW1lbnRzOworICAgIENhY2hlZFB0cjxDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRh
PiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ2FjaGVkSlNWYWx1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggYjRhODFlN2ViMTA3M2IzMTk1N2JjNWJm
NWUwNTJhNWJlMmVjOTQ1OS4uMzE3NTFhMTUxMjYzY2U2ZWEzZDViMjhiMmE4MTJkZTJjZGJmNzBk
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKQEAgLTI2NCw3
ICsyNjQsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogewogICAgIHR5cGVkZWYgdHlwZW5h
bWUgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+
KAotICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6
Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRD
b2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3Is
IG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFs
Q29udGV4dFR5cGUpOworICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlw
ZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5l
ZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRl
eHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHZhcmlhYmxlc1VuZGVyVERaKTsKICAg
ICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IGM2
M2EwMjkxMTE3Mjk1ZDE5MTliYTI4MDJhMmMzOTBhYzUxNjY3MDguLjU3NzgwNzFiZTRlYWIzZjQz
ZWI4YjgwN2ZhNDVlM2JiNmVjOTlmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdv
cmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpF
X1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5u
YW1lIyNQcml2YXRlTmFtZSgpKQogI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5h
bWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjU3ltYm9sKCkpCisjZGVmaW5lIElOSVRJ
QUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICIjIiAjbmFtZSkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpD
b21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00NSw2
ICs0Niw3IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAg
ICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JE
KQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJ
WkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKKyAgICBKU0NfQ09NTU9OX0lE
RU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFN
RSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKaW5kZXggNDcwMjAyZjkxNzkyNWQ2ZDNjYjJiZmY4YjQ5YzFkZjk4MmU3M2Rm
OC4uZTQ4YWIwMTM2YzAxMmZjM2RjNzBhMzFmZmNjODhlZWNmYTE2MjRlZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMDUs
NiArMjA1LDkgQEAKICAgICBtYWNybyh3cml0YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAKKyNk
ZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQobWFjcm8pIFwK
KyAgICBtYWNybyhjb25zdHJ1Y3RvcikKKwogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJT
X0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGF3YWl0KSBcCiAgICAgbWFjcm8oYnJl
YWspIFwKQEAgLTMxOSw2ICszMjIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19D
T01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVO
VElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYg
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAog
CisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFt
ZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlRmllbGQ7CisgICAgICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVf
UFJJVkFURV9GSUVMRF9HTE9CQUwpCisjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX0ZJRUxEX0dMT0JBTAorCiAgICAgICAgIFN5bWJvbEltcGwqIGxvb2tVcFByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImKSBjb25zdDsKICAgICAgICAgSWRlbnRpZmllciBnZXRQdWJsaWNO
YW1lKFZNJiwgU3ltYm9sSW1wbCopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAyYTMzYmQzMzU2ZGZjYTk0NDRh
YTBiZWYyYzc4ZWU2OWIyYzcwN2Q2Li44YWE0NDYzZDg4ZjEyNzIwMzYxNmM2YzI4YzY4NzI4YzM2
MDZhMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKQEAgLTEyOTcsNiArMTI5Nyw3MiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5n
ZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkpOwogfQogCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3QpCit7CisgICAgQkVHSU4oKTsKKworICAgIGF1dG8g
Ynl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeVZhbERpcmVjdD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gR0VUX0MoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpOworCisgICAgaWYg
KExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7Cisg
ICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKHZtKTsKKyAgICAgICAgaWYgKEpTQ2VsbDo6Y2FuVXNlRmFzdEdldE93blByb3BlcnR5KHN0
cnVjdHVyZSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gZXhpc3RpbmdB
dG9tU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgICAgICAgICAg
aWYgKGV4aXN0aW5nQXRvbVN0cmluZykgeworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1
cmUsIGV4aXN0aW5nQXRvbVN0cmluZy5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJz
Y3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRh
ZGF0YShjb2RlQmxvY2spOworICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9ICZt
ZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFs
dWUpKSB7CisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCisgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkpOworICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5z
ZXRPdXRPZkJvdW5kcygpOworICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgp
KSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
KyAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKKyAgICAgICAg
ICAgICAgICBSRVRVUk5fUFJPRklMRUQob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSkpOworCisg
ICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKKworICAgICAg
ICAgICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cyAm
JiBpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1h
eWJlIERvdWJsZToKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCisgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgICAgICAgICAgICAgIHNraXBNYXJraW5n
T3V0T2ZCb3VuZHMgPSBnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShvYmpl
Y3QtPnN0cnVjdHVyZSh2bSkpICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklz
U2FuZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXNraXBNYXJraW5nT3V0
T2ZCb3VuZHMgJiYgIUNvbW1vblNsb3dQYXRoczo6Y2FuQWNjZXNzQXJndW1lbnRJbmRleFF1aWNr
bHkoKm9iamVjdCwgaSkpCisgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJv
dW5kcygpOworICAgICAgICB9CisKKyAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGpzVW5kZWZpbmVk
KCkpOworICAgIH0KKworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2Jh
bE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisKKyAgICBib29sIGZvdW5kID0gKGJh
c2VWYWx1ZS5hc0NlbGwoKS0+aXNQcm94eSgpICYmIHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSkK
KyAgICAgICAgPyBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGFzT2JqZWN0KGJhc2VWYWx1
ZSksIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpCisgICAgICAgIDogYmFzZVZhbHVlLmdl
dE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBpZiAoIWZvdW5kICYmIHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUo
KSkKKyAgICAgICAgVEhST1coY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgUkVUVVJOX1BST0ZJTEVEKGZvdW5kID8gc2xvdC5nZXRWYWx1ZShnbG9iYWxP
YmplY3QsIHByb3BlcnR5KSA6IGpzVW5kZWZpbmVkKCkpOworfQorCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAyMjg3MTdl
YTBmZmZkZjMxODAxYzIwNGE1NWI2ZjFhNmRiMzFjZjYxLi5mMmFhYzViZDAyODNkNzJkYTUxNmZl
N2M5ZWMxYTE4NWM3YmY2ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaApAQCAtMzkwLDYgKzM5MCw3IEBAIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2J5X3ZhbF9kaXJlY3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZp
bmVfZGF0YV9wcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGFmOThkNGQyN2I0MWQxNDMzNmEwMjE4ZTgwYjc2
Y2U0ZDhiNDBiNzIuLmQ4MWU1ODY2NDFiZDZmYzJiYWNkMGZiNDE3OTkxY2JmMTVmNTliMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwCkBAIC0zMjksNiArMzI5LDE2IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihn
bG9iYWxPYmplY3QsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9
CiAKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIGludmFsaWQgcHJpdmF0ZSBmaWVsZCIpLCBk
ZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKworSlNPYmplY3QqIGNyZWF0
ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygi
Q2Fubm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyLCBUeXBlTm90aGluZyk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQogewog
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IDM1YWQxMjU1NGM3MDEyN2U0YmZiNzU1
MWViYjNjMTc4ZWViNGM2ZTEuLjAyMTMwYWViYWEyOGI3N2Y3OWMxNmUwMWYyOTYzMTU1YjgyYTc5
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmgKQEAgLTUzLDYgKzUzLDggQEAgSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9m
UGFyYW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oSlNHbG8KIEpTT2JqZWN0
KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
SlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CiBKU09iamVjdCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2
YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVk
UHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOwogU3RyaW5nIGVycm9yRGVzY3JpcHRp
b25Gb3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiBKU19FWFBPUlRfUFJJVkFU
RSBFeGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93
U2NvcGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBlOGFkMjVmOGE2NjcxNTI3YjUxMjc4NmU2NWZmYTMyNjA0NDQ5NmZhLi42
NjBjNTY4MTZlMmQzZDgxNDYzZDlmMzIzMmU1ZTc0NTIxNGFlYTAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yOTksNiArMjk5
LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFBy
b3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY3JlYXRlUHJpdmF0ZVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6
Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKQEAgLTExNTUsNiArMTE2
MSwxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVj
dG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNG
dW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3du
ZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KSk7CiAgICAgICAgIH0p
OwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQorCisgICAgLy8gUHJpdmF0ZVN5bWJvbHMgLyBQcml2
YXRlTmFtZXMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihM
aW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKV0uaW5pdExhdGVyKFtdIChjb25z
dCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1
bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25l
ciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CisgICAgICAgIH0pOworCiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQ
SSkKICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCiAgICAgbV9saW5rVGltZUNvbnN0
YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6d2ViQXNzZW1ibHlD
b21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVy
PEpTQ2VsbD4mIGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAKaW5kZXggNmQ1YWI2ODJjNjgzOTE0ZjY5ZjNlNWMyMjgzODRmZWZlNDY1NzdjOC4uOTZjOGRi
ZDQzMDY3OTFlMWE1ZTYxMThhNjUyM2U1NGQ4M2YzYTU1YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMzOSw2ICszMzksMTAgQEAgdm9pZCBKU1Njb3Bl
Ojpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBWYXJpYWJs
ZUVudmlyb25tZW4KICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJs
ZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHN5bWJvbFRhYmxlLT5lbmQobG9j
a2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2NrZXIpOyBpdGVyICE9IGVuZDsgKytp
dGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkpOworICAgICAgICBpZiAoc3lt
Ym9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gbmFt
ZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKKyAgICAgICAgICAgICAgICByZXN1bHQu
dXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggYmM0OWRjOTgy
YzczMjgyYmVkZWIyYjFkZWZjNzY3YTg1YWIzNWFmOS4uNzc5MGNmNTczZDI2Zjk1MmY0OTk5YTUz
ZjNjMjc1ZDY3NTFhM2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmNwcApAQCAtMTgzLDYgKzE4MywxMSBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFi
bGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVu
ZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV91bmlxdWVU
eXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQorCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IDFjMzg2
ZWM0YmY4ZjU2MjljMTUxNmU1ZDg0MDhiYzRjMDhiNjEyMTAuLjg3YjRkYmJiYTM4Y2YwYTJkZWY0
OWM2YTNlNWZiZWVmNTc2ZTU0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJv
bEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1MCw2ICs0NTAsOCBAQCBwdWJsaWM6
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxU
eXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9W
YXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxU
b0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7CisgICAgdHlwZWRlZiBXVEY6Okl0
ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFt
ZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBA
IC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIHN0ZDo6Zm9yd2FyZDxFbnRy
eT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6
ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2UgcHJpdmF0
ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0
IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgp
LgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVzKCkpOworICAgICAgICByZXR1cm4gbWFr
ZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIHZvaWQgYWRkUHJpdmF0
ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAgICAgIEFTU0VSVChrZXkg
JiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAg
ICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsK
KworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtl
eSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICB9
CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lkIHNldChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRyeSYmIGVudHJ5KQog
ICAgIHsKQEAgLTcxNywxOCArNzM3LDIxIEBAIHByaXZhdGU6CiAgICAgU2NvcGVPZmZzZXQgbV9t
YXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKU0xvY2sgbV9s
b2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDogMTsKLSAg
ICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhp
Y2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5cGUKLSAg
ICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFw
OwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAg
ICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdyaXRl
QmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQcml2YXRlTmFtZVNldCBt
X3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fdXNlc05v
blN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsg
Ly8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6
IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJvbFRhYmxlUmFyZURh
dGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVkQXJndW1lbnRzVGFibGU+
IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCAzMzIxN2FmNTYwODAxMmZkMGI0OTI0NzBiNjA1MTY4ZWY2MDNjZmJlLi5l
NjE2ZGYxYTI2MGZmNzdkODU3N2I2MTUyMDJkZGQxYzk0ZTRjMjNmIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDIwLTAxLTIzICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRzIHVwb24gdGhlIGVhcmxp
ZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9mIHByaXZhdGUKKyAgICAg
ICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
YXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzOgorICAgICAgICAqIHN0cmVzcy9nZXQt
YnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTAxLTIyICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQml0cyBmcm9tIE9wZXJhbmQgc2hv
dWxkIGZpdCBpbiBiaXRzIHJlc2VydmVkIGluIEFic3RyYWN0SGVhcCdzIFBheWxvYWQKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGU5YWVkNGQxYTMxYmUwYTgyYmNmMDk4MDIzMWYwYmNiZDUxMGNjNQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0
aW9uLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0Zp
ZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKK30KKworY2xhc3MgQyB7CisgICAgI20gPSAoKSA9PiAyNTsKKworICAgIG1ldGhvZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsK
K2Fzc2VydChjLm1ldGhvZCgpLCAyNSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NzA4Njk4
ZjY1MTk5ZTc2OTkyOWRmZDllZDJhNTViNTYzYWJlMDg1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2RlLmpzCkBAIC0w
LDAgKzEsMTggQEAKKy8vQCBydW5CeXRlY29kZUNhY2hlKCItLXVzZUNsYXNzRmllbGRzPXRydWUi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQor
CitjbGFzcyBDIHsKKyAgICAjZiA9IDM7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9k
KCksIDMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1vbi1wcm94eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXBy
b3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc3ZjA0ZTZkNTRhNjZlZjUyYmQ1ZmQzMTNkYjc3YjMyNjJjZmVl
OWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
Q2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEg
IT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
QXJyYXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5sZW5ndGgsIGUubGVuZ3RoLCAiU2l6
ZSBvZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5s
ZW5ndGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVbaV0sICJhWyIgKyBpICsgIl0gPSAi
ICsgYVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBlW2ldKTsKK30KKworbGV0IGFyciA9
IFtdOworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBy
ZXR1cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKG9iaiwg
cHJvcCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNoKHByb3ApOworICAgICAgICAgICAgICAg
IHJldHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30K
KworY2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7CisgICAgI2YgPSAzOworICAgIG1ldGhv
ZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgdCA9IG5ldyBU
ZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVkOiAzIGJ1
dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2QnXSk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1s
aW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjY0NGQ2YjIxM2JjYTU4NTliZWI3YzJlYjYyZTQ2OGQyY2JlN2JlNgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91
dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VD
bGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAh
PT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBn
b3Q6ICIgKyBhKTsKK30KKworbGV0IGtsYXNzU291cmNlID0gYAordmFyIEMgPSBjbGFzcyB7Cisg
ICAgYXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKSB7CisgICAgICAgIGFzc2VydCh0aGlzLiNmMjAwLCAi
Zm9vIik7CisgICAgfQorYDsKKworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDsgaSsrKSB7Cisg
ICAga2xhc3NTb3VyY2UgKz0gIiAgICAjZiIgKyBpICsgIjtcbiI7Cit9CisKK2tsYXNzU291cmNl
ICs9ICIgICAgI2YyMDAgPSBcImZvb1wiO1xufSI7CisKK2V2YWwoa2xhc3NTb3VyY2UpOworCitm
b3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBj
LmFzc2VydE91dE9mTGluZVZhbHVlKCk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWEwNjk2YmFjY2Y5MjcwY2Vh
ZTBlYjkzMjdlNDBjZDA5ODk5NmExMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0
KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlKTsKK30KKworbGV0IGluc3QgPSBuZXcgY2xhc3MgeworICBhID0gZXZhbCgiKGkpID0+IGku
I2IiKTsKKworICAjYiA9IHt9OworfTsKKworaW5zdC5hKGluc3QpLnggPSAxOworYXNzZXJ0KGlu
c3QuYShpbnN0KS54ID09IDEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXN0cmVzcy1pbnN0YW5jZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJl
c3MtaW5zdGFuY2UuanMKaW5kZXggNTY2MjRmYmVlZGJiMDI4Yjk0ZTBkNmU2MTFmZTQ5OTM2ZDI1
MjU4Zi4uM2M5YjU4OGViZWM5ZjRiNmQyYTY5MWM0ZjdkNmI4YzM1YWQ5MzNlZSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCkBAIC0zLDkgKzMs
MTMgQEAKIGNsYXNzIEEgewogICAgIGEgPSAwOwogICAgIGIgPSAxOworICAgICNjID0gMDsKKyAg
ICAjZCA9IDE7CiAgICAgZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07CisgICAgI2YgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIDE7IH07CiAgICAgWyJnIl0gPSAwOwogICAgIGggPSBldmFsKCJ0
cnVlIik7CisgICAgI2kgPSBldmFsKCJmYWxzZSIpOwogfQogCiBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtYnktdmFsLWRpcmVj
dC1nZXRwcml2YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJp
dmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZjc3OGNhZjJmODM3Nzk0YmJmZTRmYzBhNDcwYmU5NDA3NTVj
Y2EzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3Qt
Z2V0cHJpdmF0ZS5qcwpAQCAtMCwwICsxLDI5IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQoIi0tdXNlQ2xhc3NGaWVsZHM9
MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VDbGFzc0ZpZWxkcz0xIikKKworLy8gR2V0QnlWYWxE
aXJlY3Qgc2hvdWxkIHRocm93IHdoZW4gdGhlIHJlY2VpdmVyIGRvZXMgbm90IGhhdmUgdGhlIHJl
cXVlc3RlZCBwcml2YXRlIHByb3BlcnR5CitsZXQgaSwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMg
eworICAgICN4ID0gaTsKKyAgICBjb25zdHJ1Y3RvcigpIHsgaWYgKGkgPT09IDMwKSByZXR1cm4g
eyBbU3ltYm9sLnRvU3RyaW5nVGFnXTogIndpdGhvdXQgI3gifTsgfQorICAgIHN0YXRpYyB4KG9i
aikgeyByZXR1cm4gb2JqLiN4OyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyBy
ZXR1cm4gIndpdGggI3giOyB9Cit9CisKK3RyeSB7CisgICAgZm9yIChpID0gMDsgaSA8IDUwOyAr
K2kpIHsKKyAgICAgICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChj
KTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gaSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgQy54KCR7Y30pIHRvIGJlICR7aX0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsK
KyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAz
MCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAg
ICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBl
RXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODRjZDAxNmE1NTFhYmI1Nzg3N2UyYTc0NzVmOWJlMDI3NTY2OTEwMgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29t
cHV0ZWQtcHJvcGVydHkuanMKQEAgLTAsMCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogKGV4cGVj
dGVkRXJyb3IsIGZ1bmN0b3IpID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNl
b2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IubmFtZSArICIgYnV0IHRocm93czogIiAr
IGUubmFtZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAgIFt7fS4jeF0gPSAxOyAKKyAgICAg
ICAgI3ggPSAiZm9vIjsKKyAgICB9Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12
YWwtZGlyZWN0LWFkZHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZmOTQ5NWY5NTY5ZDRmODIwYTM0
ZDI1ZTA1YzEzZmRlODliZmFhMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMKQEAgLTAsMCArMSwzNCBAQAorLy8gVE9ETzog
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bkRlZmF1bHQo
Ii0tdXNlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIp
CisvL0AgcnVuTm9MTEludCgiLS11c2VDbGFzc0ZpZWxkcz0xIikKKworLy8gR1BWRCB3aXRoICJQ
dXRCeVZhbFRocm93SWZFeGlzdHMiIHNob3VsZCB0aHJvdyBpZiBvdmVyd3JpdGluZyBhbiBhbHJl
YWR5IGV4aXN0aW5nIFByaXZhdGVOYW1lLgorbGV0IGMsIGkgPSAwLCB0aHJldyA9IGZhbHNlOwor
Y2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBpIDwgMjkgPyB0
aGlzIDogYzsKKyAgICB9Cit9CisKK2NsYXNzIENDIGV4dGVuZHMgQyB7CisgICAgI3ggPSBpKys7
CisgICAgeCgpIHsgcmV0dXJuIHRoaXMuI3g7IH0KK30KKworYyA9IG5ldyBDQzsKK3RyeSB7Cisg
ICAgZm9yIChsZXQgaiA9IDE7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGxldCB4ID0gbmV3IEND
OworICAgICAgICBpZiAoeC54KCkgIT09IGopCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkIHgueCgpIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3gueCgpfWApOworICAgIH0K
K30gY2F0Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUu
Y29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30K
KworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwg
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5
LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTI4ZWU1YzEzNjI5MzQ5NTBl
NzRiYTIyY2Q3NWRkNjU1MzM3YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpAQCAtMCwwICsxLDI5IEBACisvLyBUT0RP
OiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQo
Ii0tdXNlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VDbGFzc0ZpZWxkcz0x
IikKKworLy8gR1BWRCB3aXRoICJQdXRCeVZhbFByaXZhdGVOYW1lIiBzaG91bGQgdGhyb3cgaWYg
d3JpdGluZyB0byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhy
ZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICN4ID0gaSsrOworICAgIGNvbnN0cnVjdG9yKCkg
eyByZXR1cm4gaSA8IDMwID8gdGhpcyA6IHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0
ICN4IiB9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBvYmouI3g7IH0KKyAgICBnZXQg
W1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCIgfQorfQorCit0cnkgewor
ICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgb2JqID0gbmV3
IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngob2JqKTsKKyAgICAgICAgaWYgKHJlc3VsdCAh
PT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54KCR7b2JqfSkg
dG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0Y2ggKGUpIHsK
KyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUuY29uc3RydWN0b3IgIT09
IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJldykK
KyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlv
biB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwg
Yi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggMjM4MzU4MTNiZTM5MWUyYTNiNTAz
ZjA3OGY0ODNhYjNkMGI4ZDIyOC4uNzVlNDA4YzYzZmNhNmFlMjgxNmYyOWRjNmRjNmYxYzg5M2E1
MmMwOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMyw2ICszLDcgQEAKIGZsYWdzOgogICBCaWdJbnQ6
IHVzZUJpZ0ludAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcworICBjbGFzcy1maWVsZHMtcHJpdmF0
ZTogdXNlQ2xhc3NGaWVsZHMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzogdXNlQ2xhc3NGaWVsZHMK
IHNraXA6CiAgIGZlYXR1cmVzOgpAQCAtMTEsNyArMTIsNiBAQCBza2lwOgogICAgICMgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkzMQogICAgIC0gcmVnZXhwLWxv
b2tiZWhpbmQKIAotICAgIC0gY2xhc3MtZmllbGRzLXByaXZhdGUKICAgICAtIGNsYXNzLW1ldGhv
ZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWMKICAgICAtIGNsYXNz
LXN0YXRpYy1maWVsZHMtcHJpdmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389815</attachid>
            <date>2020-02-05 09:00:17 -0800</date>
            <delta_ts>2020-02-19 07:59:50 -0800</delta_ts>
            <desc>Patch v8</desc>
            <filename>bug-206431-20200205120015.patch</filename>
            <type>text/plain</type>
            <size>177217</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1ODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZjBhNjk4OTNiODgzY2UxMDg1M2NmODZkNWQzOTkxY2U4YzQ4MjAxLi4xYTE5NGNlYWI1NzcyMmFh
YTlmNTY5ZjVhNjhhYWU3ZjQyMTJlNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjMgQEAKKzIwMjAtMDItMDUgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZGlu
ZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMgcGF0Y2gsIHdlIGltcGxlbWVu
dCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNhbnQgcGFydHMpIG9mIHRoZSBp
bnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvKS4K
KworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBjaGFuZ2VzIGhlcmU6CisKKyAg
ICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUgY29uY2VwdCBvZiBwcml2YXRl
IG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAgICAtIDEgbmV3IG9wY29kZSAo
b3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNvZGUgKG9wX3B1dF9ieV92YWxf
ZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNyZWF0aW5nIFN5bWJvbCBvYmpl
Y3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4cG9zZWQgYXMgYQorICAgICAg
ICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0ZVN5bWJvbCkuCisgICAgICAg
ICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQgYnkgbmFtZSAobm90IGEgdmFs
aWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAgICAgICAgICAgYXJlIGxvYWRl
ZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBtb2Rp
ZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIG9wX3B1dF9ieV92YWxfZGly
ZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0QnlWYWxGbGFncykgd2hpY2gg
YXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBvdmVyd3JpdGluZyBvciBk
ZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVyZW5jZXMgYXJlCisgICAgICAg
IHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAgICAgICAgUHJpdmF0ZSBmaWVs
ZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRoZWlyIHVzZS4gVGhpcyBwcmV2
ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0aGUgc2FtZSBjbGFzcyBzb3Vy
Y2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUgZmllbGRzLCBiZWNhdXNlIHRo
ZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVkIGZyb20gdGhlIGNsYXNzIHNj
b3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBwcm9wb3NhbCB0
ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5IHdlIHVzZSBCeVZhbCBsb29r
dXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAgICBUbyBpbGx1c3RyYXRlLCB0
eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBsaWtlOgorCisgICAgICAgIDxG
aWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVu
dFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUg
ICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3Vu
ZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgZ2V0X2J5
X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHByb2JhYmx5ICd0aGlzJz4sIDxz
eW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAg
ICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAg
ICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYy
NDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4s
IDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3Ro
aXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lPgorCisgICAgICAg
IDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4s
IDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJv
bV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAg
ICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3ltYm9s
PiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlWYWxUaHJvd0lmRXhpc3RzPgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVM
ZXhpY2FsVmFyaWFibGVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
aXJlY3RHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGly
ZWN0UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZh
dGVGaWVsZEFkZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0
ZUZpZWxkUHV0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlBy
ZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgor
ICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklU
UHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6cHV0QnlW
YWxGbGFncyk6CisgICAgICAgIChKU0M6OkpJVDo6cHV0QnlWYWxGbGFnczxPcFB1dEJ5VmFsRGly
ZWN0Pik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6aXNQcml2YXRlTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtl
RnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
b2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxM
Q2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNl
SWRlbnRpZmllclNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdpdGhvdXRD
bGVhcmluZ0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUpOgorICAgICAgICAo
SlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAg
ICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUpOgorICAgICAg
ICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OnNob3Vs
ZENyZWF0ZUxleGljYWxTY29wZUZvckNsYXNzKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoK
KyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzUHJpdmF0ZUxvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmJhc2UgY29uc3QpOgorICAgICAgICAoSlNDOjpC
YXNlRG90Tm9kZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2Rl
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmlzUHJpdmF0ZU5hbWUg
Y29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjplbnN1cmVQcml2YXRlTmFt
ZVVzZWQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3Rl
ZFRva2VuVGV4dCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpT
Y29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNQcml2YXRlTmFtZVNjb3BlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzUHJpdmF0ZU5hbWVTY29wZSk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpzZXRJc0NsYXNzU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6
aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29weVByaXZhdGVOYW1lVXNl
cyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1l
cyBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjp1c2VQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6
OmN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjb3B5UHJp
dmF0ZU5hbWVVc2VzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjptYXRjaEFu
ZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAg
ICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAg
ICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0
b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZh
cmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAg
KiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQ
cml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAgICAgICAgKEpTQzo6UHJpdmF0
ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRy
eTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNl
dElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNldElzRGVjbGFyZWQp
OgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudDo6Y29weVByaXZhdGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmNvcHlQcml2YXRlTmFtZVVzZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpnZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFz
UHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVE
YXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFy
ZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6
OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6
OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29k
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkQ29kZUJs
b2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHA6CisgICAg
ICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3Ip
OgorICAgICAgICAoSlNDOjpjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTU2Nv
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1Vu
ZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmg6CisKIDIwMjAtMDItMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBTdHJ1Y3R1cmU6OnNldE1heE9mZnNldCBhbmQgc2V0VHJhbnNp
dGlvbk9mZnNldCBhcmUgcmFjeQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDkxZTQyN2MzMGM1MTE2M2VkZDlmMTA2ZDQyZjk1ZTA5ZDAyYmU5YzQuLjg2NzcyZmE2YzYyODE5
OTZhZTQyMjJkNDgzMzRiZDg2ZjlkYjk5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTUyOSw2ICs1MjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9w
ZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRlY29k
ZS9QdXRCeVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0
ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1Y2EwYzg2MDJiZTE0YzVlM2I5OWIzZTIxMTJmMmQy
OGRkZDkxYmE4Li4yNmYwYTRiOWEwNDZhYWYzMzNlOWRiYzk2MTUwMjgzMWE1ODU5OWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJODY3MDRC
ODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklU
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3
MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFn
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2
RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEg
LyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBD
QjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUx
RkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJp
Z0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC00MDk4LDYgKzQwOTksOCBAQAogCQk4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGFy
c2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9IHlh
cnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4
MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1
dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxG
bGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEw
MEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5MTZB
OTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTgzMzgsNiArODM0MSw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5
SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZh
cmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFy
aWFudC5oICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdz
LmNwcCAqLywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5o
ICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJ
MEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJ
CTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC0x
MDA3Nyw2ICsxMDA4Miw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5
SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8q
IFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3
OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3NkM2RTgyMzQ2
NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENE
NEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NmYxYzY5NDg1YzZm
Y2JlZTQ4N2U1YWM5ODZjYTQ2MzYzNTNhZWJlLi40MzE0YmUzMWMyZGRiYjk1YWNiYWRkODZmMjQw
MDE1MDFhMGQ3OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjQsNiArMjY0
LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRG
bGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHAKK2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0
YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1
bGF0ZWRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCmluZGV4IDEwODMwN2YzNjVkODk5OGE1MTI0MDBiNjdlNmZiMDFjMTQwMDc4YzEuLjg0
NDA5MjRiYTUxNDA2YzcwMDZlMzA4ODlkZmViZTBhMjhhNTUyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE2Nyw3ICsxNjcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlD
b21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRp
YXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6
ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKGNy
ZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVDTEFS
RV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5hbWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBT
eW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIG5hbWUjI1N5bWJvbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGQzNzIzNmY0
MGFhODk5MTI3Yzc0OWViZGI5ODY5NmM3Nzg1ZDhjYjMuLjAyYzAxYmQ3YzJlOGMyNmE2OTVmOGEz
NjZiNjU4YmFjNmM5Y2ViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkludGVy
cHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNsdWRl
ICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEyNmEw
ZjcyNzUzNmYxYmUzN2M0ZS4uOWE3NDQzYTVkNTc1NTVmYTdjMTA2ZGRiYmJjNmVmMzE0NTgzM2U1
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJi
CkBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcs
CiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5VmFs
RmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVy
ZUlELApAQCAtNTQzLDYgKzU0NCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2Vlbklk
ZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3ZhbF9kaXJl
Y3QsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
YmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVy
LAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxl
LAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9wIDpwdXRf
YnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAt
NTY2LDYgKzU3OCw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmly
dHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAg
ICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFncywK
ICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9m
aWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4uMTVj
MTNiZjdhODlmNjdkMjg1OWNiY2Y2MTYxYzMzOTA3ODM0YTc0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMTEsNiArMjEx
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3Rl
ciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvclN0cnVj
dHVyZVBuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wRW51bWVyYXRvckdlbmVy
aWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNlLCBw
cm9wZXJ0eSkKKyAgICBVU0VTKE9wR2V0QnlWYWxEaXJlY3QsIGJhc2UsIHByb3BlcnR5KQogICAg
IFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFz
SW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0
YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtNDE5LDYgKzQyMCw3IEBAIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRzdCkKICAgICBERUZTKE9wSW5z
dGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZhbCwgZHN0KQorICAgIERFRlMo
T3BHZXRCeVZhbERpcmVjdCwgZHN0KQogICAgIERFRlMoT3BUeXBlb2YsIGRzdCkKICAgICBERUZT
KE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERFRlMoT3BJc0VtcHR5LCBkc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2NjlmN2Nh
ZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi5kNjM4NWIzYmZhZjE4MTE3ZGVlNjIwYzFjMWE3MzRl
NTcxMzNmNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVC
eXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRC
eVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRh
YmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAx
YjZlNzI2MjQwOWM4NTc0MzJkNGIyZmNmYWNmMTdjNzYwZDE3YjY0Li4wMmE2Y2YwNDhkMTI0YTJl
OWVlMGI1MzQwMmJkZmJkODI0ZTBjNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICB2KEFycmF5LCBudWxscHRyKSBcCiAgICAgdihhcHBseUZ1bmN0
aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxsRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGNy
ZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElN
RV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNzc2YThjY2E4MTExMTg0
NzI4ZWZhNjAyNTc1MTZhOWVkMDQ0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQdXRC
eVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8
d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKK3sKKyAgICBDb21t
YVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBpZiAoZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVOYW1l
KQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlTmFtZSIpOworICAgIGlmIChmbGFn
cyAmIFB1dEJ5VmFsVGhyb3dJZkV4aXN0cykKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVGhy
b3dJZkV4aXN0cyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4OTViNjc4
NjA3YzlhMzA5MDkzMzcyODE4YzBlOGZmMzdmYWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3Ry
dWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBQdXRCeVZhbEZsYWdz
IDogaW50MzJfdCB7CisgICAgUHV0QnlWYWxOb25lID0gMCwKKworICAgIFB1dEJ5VmFsUHJpdmF0
ZU5hbWUgPSAxLAorCisgICAgUHV0QnlWYWxUaHJvd0lmRXhpc3RzID0gMiwKKworICAgIC8vIFRo
ZSBQcml2YXRlRmllbGRBZGQgb3BlcmF0aW9uIG11c3QgdGhyb3cgaWYgYW4gZW50cnkgZm9yIHRo
ZSBwcml2YXRlIHJlY29yZCBkb2VzIG5vdCBleGlzdAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZpZWxk
QWRkID0gUHV0QnlWYWxQcml2YXRlTmFtZSB8IFB1dEJ5VmFsVGhyb3dJZkV4aXN0cywKKyAgICBQ
dXRCeVZhbFByaXZhdGVGaWVsZFB1dCA9IFB1dEJ5VmFsUHJpdmF0ZU5hbWUsCit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOwor
Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOwor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2lu
ZC5oCmluZGV4IDYxMTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1YzhhZjY0ODA4MGM0YzYuLjBkMzli
MDM1ODk2ZTllZjYxOTYzNDIzYTYxZTY4MTNlYjgwN2E1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QgfTsKK2VudW0gUHV0S2luZCB7
IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RBZGRQcml2YXRlLCBEaXJlY3RQdXRQcml2YXRlIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNGRj
MGU5MTViYzM4MjMxOWE5MmE5NjcxYjYzYjI4YjQ3MGRlODEzZC4uZTNmYWRkY2JhOTY2MjVlOWRl
NzMyYWRhNDgxN2NiMDE1ZTk1NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUo
ZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBp
bnN0YW5jZUZpZWxkTG9jYXRpb25zID0gZXhlY3V0YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0aW9u
cygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8
RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2Rl
KCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6
Tm9uZSwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHZtLCBzb3Vy
Y2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1v
ZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGluc3RhbmNl
RmllbGRMb2NhdGlvbnMpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQo
ZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNWE3OTk2ZmQwZGI2ZjcwOTVh
MjY0ZWM1NjUwYWFlZTkxNWM4ZTdiNS4uYTM0MjRlNjI4YWYyNDkyYzhlYWYzOTJiNTI5YWFmZmFj
MWU0YjBlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4NTAsNiArMTg1MCwxMSBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5
KHZhck9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSA6IFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7
CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnku
a2V5LmdldCgpLCBuZXdFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRvIHRo
aXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3RoZXJ3
aXNlIGl0IGlzbid0IG5lZWRlZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5p
c1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVO
YW1lKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0Nh
cHR1cmVkVmFyaWFibGVzOwpAQCAtMjYzNyw5ICsyNjQyLDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
dGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7CisgICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1pdCh0
aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1
dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQ
dXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFs
Tm9uZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNjYxLDYgKzI2NzIsMTggQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVy
SUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5
VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxQcml2
YXRlRmllbGRBZGQpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJl
Y3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbFByaXZhdGVGaWVs
ZFB1dCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQo
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYThiOTQzY2YwYzAyODBmNWMxMTRkMmRlOWQ4ZmQ5MzJj
MmE0NTg4NC4uMzEyOTk2YjMxNjc2ODYwN2Q0OWExN2MwOTVlYThlOWRlMGNlNDNkYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaApAQCAtNzg1LDExICs3ODUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5
VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERp
cmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFz
ZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJuYWxG
aWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lkIGVtaXRTdXBl
clNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAppbmRleCBkMzgzYTdjNzE3ZTVkNWNjMTM5ZTk0NDhiYzc4NjhlZDc1YTgwNjYwLi45Y2I0Yzgy
NTc5N2JhNzI3MmE4ZGYyMmVjYmEwZWZlYjM0ZTJhZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NDksOSArNTQ5
LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxKU1Rl
eHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7Ci0gICAgLy8gRmFzdCBjYXNl
OiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KKyAgICAv
LyBQcml2YXRlTmFtZXMgYXJlIGhvaXN0ZWQgYW5kIHdlIG5lZWQgdG8gZGVjbGFyZSB0aGVtIGJl
Zm9yZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBoYW5kbGVkLgogICAgIFByb3BlcnR5TGlzdE5v
ZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisgICAgZm9yICg7
IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUgJiBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDog
ZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoZ2VuZXJh
dG9yLCBkc3QsICpwLT5tX25vZGUpOworICAgIH0KKworICAgIC8vIEZhc3QgY2FzZTogdGhpcyBs
b29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCisgICAgcCA9IHRoaXM7
CiAgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25z
dGFudCk7IHAgPSBwLT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3Rh
bmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAt
NzEwLDYgKzcyMCwxOCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAgIGlm
IChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVD
b25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsK
KworICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDAp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogc3ltYm9sID0gZ2VuZXJhdG9yLmVt
aXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVT
eW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGFyZ3VtZW50cywgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVidWdn
YWJsZUNhbGw6Ok5vKTsKKworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVy
YXRvci5zY29wZVJlZ2lzdGVyKCksIHZhciwgc3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShub2RlLm1fYXNzaWduKTsKICAgICBpZiAobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKQog
ICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBuZXdPYmop
OwpAQCAtODI4LDE2ICs4NTAsNjYgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICB9CiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChiYXNlSXNTdXBlcikg
ewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3Vy
ZVRoaXMoKTsKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5n
ZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UK
LSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFz
ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZW1pdEdldFByb3BlcnR5
VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCkpOworCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAorUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6
OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFs
dWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBj
YXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUg
PSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZh
cik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0
ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2
YXRlTmFtZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
eworICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVy
YXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZHN0LCBiYXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0
ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlW
YWx1ZShnZW5lcmF0b3IsIGRzdCwgYmFzZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCog
QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+
JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0
b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZv
dW5kKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2Us
IHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNT
dXBlck5vZGUoKSkgeworICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNW
YWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAg
fQorCisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1
ZSk7Cit9CisKK1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFs
dWUpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1p
dFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CkBAIC0xNjI1LDExICsxNjk3LDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0T3B0aW9uYWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpKTsKICAgICB9CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNz
aW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0g
ICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJh
c2UgPSBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1l
bnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBtX2lkZW50KTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3Vw
ZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpOworICAgIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rp
b24uZ2V0KCksIGJhc2UuZ2V0KCkpOwogCiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAg
LTE5NTAsNiArMjAyMCwyMiBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNz
b3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRv
dEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBl
cik7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCks
IHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZ2lzdGVy
SUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHBy
aXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZhbHVlKTsKKyAgICB9CisKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsK
ICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKQEAgLTIxNzMsNiArMjI1OSwyMSBAQCBSZWdpc3RlcklE
KiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNz
b3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZv
dEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlz
UHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgp
KTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwg
dmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1l
LmdldCgpKTsKKyAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0
b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxk
UHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIHByb3BEc3QuZ2V0KCkpOworICAgIH0K
KwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VOb2RlLT5p
c1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlz
KCk7CkBAIC0yOTA5LDExICszMDEwLDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgp
LCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRS
ZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgp
IDogZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkp
LCByZXN1bHQuZ2V0KCkpOwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0
KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwotICAgIH0gZWxzZQotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5n
ZXQoKSk7CisgICAgZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgZm9yd2Fy
ZFJlc3VsdC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmb3J3YXJkUmVz
dWx0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IubW92ZShkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogfQpAQCAtMjkyNSwyMSArMzAyMiwx
MyBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3Rh
cnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKLSAgICBpZiAobV9iYXNlLT5pc1N1
cGVyTm9kZSgpKSB7Ci0gICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7
Ci0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlKTsKKwogICAg
IFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5l
cmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1
ZS5nZXQoKSwgbV9yaWdodCwgc3RhdGljX2Nhc3Q8SlNDOjpPcGVyYXRvcj4obV9vcGVyYXRvciks
IE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHRE
ZXNjcmlwdG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAg
aWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQ
dXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVl
KTsKLSAgICBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdl
dCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGVtaXRQ
dXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0KCksIHVwZGF0ZWRWYWx1ZSwgdGhpc1ZhbHVl
KTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtNDMzNyw2ICs0NDI2LDE3
IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmlu
ZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdldCgpLCB2
YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRl
Y29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFt
ZTogeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm1faWRlbnQp
OworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmll
bGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBw
b3NpdGlvbigpICsgbV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZv
dW5kKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRBZGQoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFt
ZTogewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xh
c3MgZmllbGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgzMzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgxYmM5ZDJmMWIxZC4u
YTNmMzRmOGM2MjEyN2M5ZTg2ZDJhMDk1MGMwNTZiZjU5MWQ5ZGI4NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTY3LDYgKzY3LDcg
QEAKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxh
Z3MuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFn
cy5oIgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25t
ZW50LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcw
MjQ4OGY4ZTFjMmEwYjY3MGJmOTlmLi41NGRhMzFhZTAwZTAwMmZmNmRjMjQ0MTFkZmQ1NDk2ZWNi
NGFkY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCkBAIC0yOTQsNiArMjk0LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChP
cGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKIAogICAgIGNh
c2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25t
ZW50OgorICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6IC8vIEZJWE1FOiBvcF9nZXRfYnlf
dmFsX2RpcmVjdCB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRz
LgogICAgIGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2YWxf
cHJvbG9ndWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjQy
YjE2MzU2ZjkwZTljMzg2MDJlYmM1N2ZkOWUwNGEwZjQ1YjUyOC4uNmI0ZTg4NDhlMzBhOWRiZjkx
ZmIzZjhjOTZmMjQzMDgyYjgxYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzODQ0LDcgKzEzODQ0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9q
aXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAogICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAg
ICAgc2NyYXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtpbmQpOwor
ICAgICAgICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2lu
ZCwgUHV0QnlWYWxOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRk
MzQyN2JjODJlOGM5YjI0N2FjODcxYTAyMDAwMWJiMjM4MjlmMjYuLmQxMDlmMjRjYmZiZTc1ODQ0
ODJiNzYwYmY2M2RkNDcxMDA0Y2VmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTM5ODQsNyArMzk4NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0
Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0g
UHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlW
YWxOb25lKTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChq
aXQpOwogICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJl
bCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0
NDFmZGE2ODc2ZTY1MmM5ODQ2MDFhMmIzYjc5ZDM0Li41MzBmOTdhNzU3YmJhMWEyNmVlZWM5OTAz
ZjljNTdkYjBlYTU3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpA
QCAtMTQwLDYgKzE0MCw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVk
ZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1
YjRhZGU0NDRjNDNmNWFkZGYyMzE3ZjQyNjViNy4uY2I0OGFkZmZmMTZkYjYzMjQxYzI1MGQ5NzI4
MmRkYTY1NTQ0OTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0
YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYg
KzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RC
dWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVp
bGRMaXN0KSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmlj
dE9wdGltaXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplKSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBt
YWNybyhQdXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRj
aCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDEzZDNkOTY5NjQ0Nzg3ZDEyMmYz
M2VkMzhhOGM3NjJhYTQxNzFlZDkuLmQyYjI4YmI0OTNjY2RhOGM2ZGVlNTlmOGRjYzZkOTQwZDg0
ZTFhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09Q
KHB1c2hfd2l0aF9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlz
KQorICAgICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVG
SU5FX1NMT1dfT1AocHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
cHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2Nv
cGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggNjk1N2E3MjI1NzU2YjQ0YzZkZmU3OWM5MzQwZTU0ZGI3ZTVlMmU3Ny4uZmVhZTJkMjdm
NGU2ZDgyYjU4OGJkYjMxN2M0MTY3Y2NhMjVkN2VkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC00MDAsNiArNDAwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgogICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwo
T3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAorICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHV0QnlWYWxGbGFncyBwdXRCeVZhbEZsYWdz
KE9wKTsKKwogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwg
YW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZh
bEluZm8qLCBSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRp
ZmllciYsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNj
ZjRiZjA2ZWVkNDU3M2EzOWNiNTZiY2NhNjVkNWEuLjViYzBmYWE0MjM5NjE1MmI1N2QwYjE3OWNi
ZjYxNjk4ZTNkYzY1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMiBAQCB2b2lkIEpJ
VEdldEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4
IGNhbGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFN
b2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1
dEtpbmQgcHV0S2luZCwgUHV0QnlWYWxGbGFncyBmbGFncykKICAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQogICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQogewog
ICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIs
NiArMTUzLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChVTkxJS0VMWShtX2ZsYWdz
ICYgUHV0QnlWYWxQcml2YXRlTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBE
aXJlY3QpOworICAgICAgICBBU1NFUlQobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKTsKKyAgICAg
ICAgaWYgKG1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpCisgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgfQorCiAg
ICAgaWYgKG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgewogICAgICAgICBpZiAobV9wdXRLaW5k
ID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3Ry
aWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggYmZiOTAyMTZiMjljMjdmZmQwZWQ4ZDdmMGY1ODdlMDhm
ZTZlNzMxNi4uMTQ4ZjFiYzliZjBkM2I2MTIzMjljMzQ1NGU0MDhjZDYxZTAyM2QwZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJK
SVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1dEJ5
VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQu
aCIKIApAQCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0
b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2lu
ZCwgUHV0QnlWYWxGbGFncyk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3Jv
QXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDAsNiArMTQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFB1
dEJ5VmFsRmxhZ3MgbV9mbGFnczsKIH07CiAKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1
YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKaW5kZXggMTY0M2JkYTViOWExM2I0ODQyNjZlZjY3NmExM2NiMzgxNDg3YWQ1MC4uNDQ4Njg0
ZTUxMjJhM2FlODUzODM2NGJhNzU1Y2Y1ODc1MDFhM2E5NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY5MSw2ICs2OTEsMTggQEAgQUxXQVlTX0lOTElORSBCaW5h
cnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUp
CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitB
TFdBWVNfSU5MSU5FIFB1dEJ5VmFsRmxhZ3MgSklUOjpwdXRCeVZhbEZsYWdzKE9wKQoreworICAg
IHJldHVybiBQdXRCeVZhbE5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHV0
QnlWYWxGbGFncyBKSVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZh
bERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFnczsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAw
MmU0OGRjNjMzNC4uOWE3OWU1NDg0MDJmMWM5M2MwZGE2ZThjMjgxOWE4NGZiNzExNzFhYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC02NzgsNiAr
Njc4LDExMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJ
RChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwg
c2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCit9IC8vIGV4dGVybiAiQyIKKwordXNpbmcg
UHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk0mLCBDb2RlQmxv
Y2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9wZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJik+Owor
QUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNl
VmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEpTVmFsdWUgdmFsdWUsIFB1dEtpbmQgcHV0
S2luZCwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJpdmF0
ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
dWlkKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBBU1NFUlQocHV0
S2luZCA9PSBEaXJlY3RBZGRQcml2YXRlIHx8IHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0ZSk7
CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+aXNQ
cm94eSgpID8gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9iYWxP
YmplY3QsIGlkZW50LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNs
b3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKworICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUgJiYg
Zm91bmQpCisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgZWxzZSBpZiAo
cHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRlICYmICFmb3VuZCkKKyAgICAgICAgdGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3Io
Z2xvYmFsT2JqZWN0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDA7CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3Qo
YmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBDb21t
b25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2Jq
ZWN0LCBpZGVudCwgdmFsdWUsIHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNh
bGxiYWNrKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitl
eHRlcm4gIkMiIHsKKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2
YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBwdXRQcml2YXRl
RmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIHVpZCwgdmFsdWUs
IERpcmVjdEFkZFByaXZhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpKTsKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCBiYXNlT2JqZWN0LCB1aWQsIHZhbHVlLCBEaXJlY3RBZGRQcml2YXRlLCBbPV0oVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3BlcnR5
U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUs
IGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNl
T2JqZWN0KSk7CisKKyAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSkpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RB
ZGRQcml2YXRlKTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVT
dHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVs
ZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgdWlkLCB2YWx1ZSwgRGly
ZWN0UHV0UHJpdmF0ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
K30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQWNjZXNzVHlwZSBh
Y2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
QmFzZSkpOworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUs
IGJhc2VPYmplY3QsIHVpZCwgdmFsdWUsIERpcmVjdFB1dFByaXZhdGUsIFsmXShWTSYgdm0sIENv
ZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90
JiBwdXRTbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElD
RXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFz
ZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmpl
Y3QpKTsKKworICAgICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBl
PihzdHViSW5mby0+YWNjZXNzVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkK
KyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNl
T2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFB1dFBy
aXZhdGUpOworICAgIH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
Cit9CisKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNTdHJpbmdPclN5bWJvbChKU1ZhbHVl
IHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZS5pc1N0cmluZygpIHx8IHZhbHVlLmlzU3ltYm9s
KCk7CkBAIC03ODEsNiArODg4LDE2IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAKICAgICBz
Y29wZS5yZWxlYXNlKCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNT
dHJpY3RNb2RlKTsKKyAgICBpZiAocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAg
IC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBub24tZXhp
c3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2UgYmVoYXZp
b3VyLgorICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5h
dChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpOworICAg
ICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xv
dCk7CisgICAgICAgIGlmIChmb3VuZCA9PSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlWYWxU
aHJvd0lmRXhpc3RzKSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgZm91bmQgPyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9i
amVjdCkgOiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBDb21tb25TbG93UGF0aHM6
OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVmZjgyYTMwMGMuLjQ1
YzIzZjBjYWFmNDEyZDNkN2VmZmY2NTRmYjM2OTUxYWIxZmYzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0
cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2
YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5B
TDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
QnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRp
cmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJ
bmZvKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAppbmRleCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgz
NzFjMmY2Li4yYjNiOTllM2Y1YzQ0N2U4OGIzMzhjN2JhNjg2MjI1ODIzMDc2NjQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjg2
LDcgKzI4Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtpbmQpOwor
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1f
Y29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kLCBwdXRCeVZhbEZsYWdzKGJ5dGVjb2RlKSk7
CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGVtaXRXcml0ZUJhcnJpZXIo
YmFzZSwgdmFsdWUsIFNob3VsZEZpbHRlckJhc2UpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVt
cCgpKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJl
Z3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCi0gICAgICAgIGRpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgUHV0QnlWYWxOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDkxODIwNDE1NTRiZGM3NmMxOTFjYjEzODVkMTNhOWM4
MWZmZDQ1ZWIuLmExNDEwNWM5MTlkY2ExYTk5MjNmNThkNWJjOWUxZTRlOTNjODFkYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTIwLDYgKzUyMCwxMCBAQCBzdGF0
aWMgVl9KSVRPcGVyYXRpb25fR1NzaUpKSSBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rp
b24oY29uc3QgUHV0UHJvcGVydAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAg
ICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0U3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RBZGRQcml2
YXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0
OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRlKQorICAgICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0OwogICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKICAgICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
KQpAQCAtNTMyLDYgKzUzNiwxMCBAQCBzdGF0aWMgVl9KSVRPcGVyYXRpb25fR1NzaUpKSSBhcHBy
b3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcAogICAgIGlmIChz
bG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAg
ICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7Cisg
ICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUpCisgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYg
KHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRp
b25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJl
Y3QpCkBAIC02MjQsNiArNjMyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hl
UHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFj
Y2Vzc0NoYWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNv
bmRpdGlvblNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHV0UHJpdmF0ZSAm
JiBwdXRLaW5kICE9IERpcmVjdEFkZFByaXZhdGUpOwogICAgICAgICAgICAgICAgICAgICBhdXRv
IGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2VD
ZWxsLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtNjQxLDYgKzY1
MCwxMyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
QWRkUHJpdmF0ZSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRl
TmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25k
aXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgbmV3U3Ry
dWN0dXJlLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlv
blNldC5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25D
YWNoZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNj
ZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVy
ZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hh
aW4pKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxl
Q3VzdG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDcx
MjViZDRmNTFhZjgxNWI5ZDUwNjYxZWI3YTNjMjQxYTVhZDYwM2IuLjc1NjhkMjM2ZDNhZmI1ZmMx
NGE2Mzg3NDUxODc2Zjg5OTJmOTQ2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAj
aW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgog
I2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKaW5kZXggMjI1NGZjYzQyOTYxN2NlODM5N2QyNGU1NTBlMWFjZWM2
N2I2MTQ0My4uODY5YWIyNmNiM2Q5ZjliMWU5NzhjN2FkNzE2ODNmOGI4NGM3YzkwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDU5
LDE0ICsxMDU5LDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFs
X2RpcmVjdCkKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIGJvb2wgaXNT
dHJpY3RNb2RlID0gY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29sIGlzUHJpdmF0
ZU5hbWVBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlWYWxQcml2YXRlTmFtZTsKICAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAvLyBEZXNwaXRl
IGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBv
c2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGlu
ZGljZXMuCiAgICAgICAgIEFTU0VSVChpc0luZGV4KHN1YnNjcmlwdC5hc1VJbnQzMigpKSk7Cisg
ICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZUFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3Qt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0LmFzVUludDMyKCksIHZhbHVl
LCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0
SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAogICAg
IGlmIChzdWJzY3JpcHQuaXNEb3VibGUoKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5h
bWVBY2Nlc3MpOwogICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQu
YXNEb3VibGUoKTsKICAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwogICAgICAgICBpZiAoc3Vic2NyaXB0
QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQz
MikpIHsKQEAgLTEwODAsOSArMTA4MywxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAorICAgIEFTU0VSVChwcm9wZXJ0eS5pc1By
aXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlTmFtZUFjY2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVp
bnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBp
c1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhT
aG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7CisgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lQWNj
ZXNzKSB7CisgICAgICAgICAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKyAg
ICAgICAgICAgIC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8g
YSBub24tZXhpc3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxp
a2UgYmVoYXZpb3VyLgorICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAg
ICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBi
b29sKGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpKQorICAgICAgICAg
ICAgICAgIExMSU5UX1RIUk9XKGZvdW5kID8gY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJv
cihnbG9iYWxPYmplY3QpIDogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgICAgIH0KICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVj
dCwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRo
UmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDkzYzI5MDI1YjBkOTMwNWQ5OTU3MTAzZTE2
NWI3YWE4OTE0Y2JiMWQuLjM0YWVkMmI5NDc0ZjQwZTNhNGRhYzU4NjEwNjE5Y2MyMWUzMTkzODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtCkBAIC0xNTA5LDY0ICsxNTA5LDY5IEBAIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIHNsb3dQYXRoTmFtZSwgb3NyRXhpdFBvaW50KQorICAgIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfJW9wY29kZU5hbWUlLCAlb3Bjb2RlU3RydWN0JSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICAg
ICAgZ2V0KG1fYmFzZSwgdDIpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBtb3ZlIHQw
LCB0MgorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
cmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKKyAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgSW50MzJUYWcsIHQx
LCAub3BHZXRCeVZhbFNsb3cpCisgICAgICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0
MF0sIHQzCisgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCisgICAgICAgIGJpZXEg
dDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCisgICAgICAgIGJpbmVxIHQy
LCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cworCisgICAgLm9wR2V0
QnlWYWxJc0NvbnRpZ3VvdXM6CisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRC
eVZhbFNsb3cKKyAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICAgICAgam1wIC5vcEdldEJ5
VmFsRG9uZQorCisgICAgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgorICAgICAgICBiaW5lcSB0
MiwgRG91YmxlU2hhcGUsIC5vcEdldEJ5VmFsTm90RG91YmxlCisgICAgICAgIGJpYWVxIHQxLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNM
ZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0
MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgIyBG
SVhNRTogVGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgorICAgICAgICBmZDJpaSBm
dDAsIHQxLCB0MgorICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBqbXAgLm9wR2V0QnlW
YWxOb3RFbXB0eQorCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6CisgICAgICAgIHN1YmkgQXJy
YXlTdG9yYWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNo
YXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBiaWFlcSB0
MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVj
dG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgbG9hZGkgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKworICAg
IC5vcEdldEJ5VmFsRG9uZToKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgYmllcSB0
MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgLm9wR2V0QnlWYWxOb3RFbXB0
eToKKyAgICAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICAgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHZhbHVlUHJvZmlsZSgl
b3Bjb2RlU3RydWN0JSwgdDUsIHQyLCB0MSkKKyAgICAgICAgZGlzcGF0Y2goKQogCi1sbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICBn
ZXQobV9iYXNlLCB0MikKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0
MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBtb3ZlIHQwLCB0MgotICAgIGFy
cmF5UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwg
dDEpCi0gICAgZ2V0KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBsb2Fk
cCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwotICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1h
c2ssIHQyCi0gICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXMK
LSAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMK
LQotLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6Ci0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5v
cEdldEJ5VmFsU2xvdwotICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgotICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLSAgICBqbXAgLm9wR2V0QnlWYWxEb25l
Ci0KLS5vcEdldEJ5VmFsTm90Q29udGlndW91czoKLSAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUs
IC5vcEdldEJ5VmFsTm90RG91YmxlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5
VmFsU2xvdwotICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKLSAgICBiZG5lcXVuIGZ0MCwgZnQw
LCAub3BHZXRCeVZhbFNsb3cKLSAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hc3NpdmVseSBv
cHRpbWl6ZWQuCi0gICAgZmQyaWkgZnQwLCB0MSwgdDIKLSAgICBnZXQobV9kc3QsIHQwKQotICAg
IGptcCAub3BHZXRCeVZhbE5vdEVtcHR5Ci0KLS5vcEdldEJ5VmFsTm90RG91YmxlOgotICAgIHN1
YmkgQXJyYXlTdG9yYWdlU2hhcGUsIHQyCi0gICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgYmlhZXEgdDEs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rv
ckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6
Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQotCi0ub3BHZXRCeVZhbERv
bmU6Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BH
ZXRCeVZhbFNsb3cKLS5vcEdldEJ5VmFsTm90RW1wdHk6Ci0gICAgc3RvcmVpIHQyLCBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyLCB0MSkKLSAgICBkaXNwYXRjaCgp
CisgICAgLm9wR2V0QnlWYWxTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGhOYW1l
KQorICAgICAgICBkaXNwYXRjaCgpCiAKLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAub3Ny
UmV0dXJuUG9pbnQ6CisgICAgICAgIG9zckV4aXRQb2ludChzaXplLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgIGVuZCkKK2VuZAogCi0ub3NyUmV0dXJuUG9pbnQ6CitnZXRCeVZhbE9wKGdldF9ieV92
YWwsIE9wR2V0QnlWYWwsIF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCwgbWFjcm8oc2l6ZSwg
bWV0YWRhdGEsIHJldHVybikKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3Bf
Z2V0X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCiAgICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKLQogZW5kKQogCitn
ZXRCeVZhbE9wKGdldF9ieV92YWxfZGlyZWN0LCBPcEdldEJ5VmFsRGlyZWN0LCBfc2xvd19wYXRo
X2dldF9ieV92YWxfZGlyZWN0LCBtYWNybyhhLCBiLCBjKSBlbmQpCiAKIG1hY3JvIHB1dEJ5VmFs
T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGI2ZWU5OWUzNjNh
ZjFmZmQ0MWI5MTI1NDRjNTBkZTkyZjFhNGYyZDMuLjgzZGRlZDJkN2QxMzViNjdmYTA1N2JjNzQ3
MDViNDY0NWQ4ZmM1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNDkyLDE4NCArMTQ5MiwxODcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCittYWNybyBnZXRCeVZhbE9wKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjdCwgc2xvd1BhdGhOYW1lKQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfJW9wY29kZU5hbWUlLCAlb3Bjb2RlU3RydWN0JSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3Vs
dCwgc2NyYXRjaCkKKyAgICAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKKyAgICAgICAgICAg
IHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAgICB2YWx1ZVByb2Zp
bGUoJW9wY29kZVN0cnVjdCUsIHQ1LCByZXN1bHQpCisgICAgICAgICAgICBkaXNwYXRjaCgpCisg
ICAgICAgIGVuZAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlW
YWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1h
Y3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICAgICAgZ2V0KG1fZHN0LCBz
Y3JhdGNoKQotICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHJlc3VsdCkKLSAgICAgICAgZGlzcGF0Y2go
KQotICAgIGVuZAorICAgICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0
Y2gpCisgICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKKyAgICAgICAgICAgIGZpbmlz
aEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5p
c2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHJl
c3VsdAotICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgZW5kCisg
ICAgICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0
Y2gyKQorICAgICAgICAgICAgZmQycSByZXN1bHQsIHNjcmF0Y2gxCisgICAgICAgICAgICBzdWJx
IG51bWJlclRhZywgc2NyYXRjaDEKKyAgICAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gx
LCBzY3JhdGNoMikKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5pc2hEb3VibGVHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICAgICAgZmQycSByZXN1bHQsIHNjcmF0
Y2gxCi0gICAgICAgIHN1YnEgbnVtYmVyVGFnLCBzY3JhdGNoMQotICAgICAgICBmaW5pc2hHZXRC
eVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCi0gICAgZW5kCisgICAgICAgIG1ldGFkYXRhKHQ1LCB0
MikKIAotICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDIpCisgICAg
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxT
bG93KQogCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNl
bGwoc2l6ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0KLSAgICBtb3ZlIHQwLCB0MgotICAg
IGFycmF5UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0
NSwgdDEpCi0KLSAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCi0gICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIHN4aTJxIHQxLCB0
MQotCi0gICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0Mywg
bnVtYmVyVGFnKQotICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJUYWcKLQotICAgIGFuZGkgSW5k
ZXhpbmdTaGFwZU1hc2ssIHQyCi0gICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJ
c0NvbnRpZ3VvdXMKLSAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5v
dENvbnRpZ3VvdXMKLQotLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6Ci0gICAgYmlhZXEgdDEsIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xl
bmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEg
W3QzLCB0MSwgOF0sIHQyCi0gICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93Ci0gICAgam1wIC5v
cEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6Ci0gICAgYmluZXEgdDIs
IERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhb
dDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRkIFt0Mywg
dDEsIDhdLCBmdDAKLSAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKLSAgICBm
ZDJxIGZ0MCwgdDIKLSAgICBzdWJxIG51bWJlclRhZywgdDIKLSAgICBqbXAgLm9wR2V0QnlWYWxE
b25lCi0gICAgCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFnZVNo
YXBlLCB0MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UKLSAgICBiaWFlcSB0MSwgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVu
Z3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkcSBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0MSwgOF0sIHQyCi0gICAgYnRxeiB0MiwgLm9wR2V0
QnlWYWxTbG93Ci0KLS5vcEdldEJ5VmFsRG9uZToKLSAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4
XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIpCi0gICAgZGlzcGF0Y2goKQor
ICAgICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKIAotLm9wR2V0QnlWYWxOb3RJ
bmRleGVkU3RvcmFnZToKLSAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBoYXZlIGEg
dHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZyb250Lgot
ICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW3QwXSwgdDIKLSAgICBzdWJpIEZpcnN0VHlwZWRBcnJh
eVR5cGUsIHQyCi0gICAgYmlhZXEgdDIsIE51bWJlck9mVHlwZWRBcnJheVR5cGVzRXhjbHVkaW5n
RGF0YVZpZXcsIC5vcEdldEJ5VmFsU2xvdwotICAgIAotICAgICMgU3dlZXQsIG5vdyB3ZSBrbm93
IHRoYXQgd2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBzb21lIGJhc2ljIHRoaW5ncyBub3cuCisg
ICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBzeGkycSB0MSwg
dDEKIAotICAgIGlmIEFSTTY0RQotICAgICAgICBjb25zdCBsZW5ndGggPSB0NgotICAgICAgICBj
b25zdCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVu
Z3RoW3QwXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIHQxLCBsZW5ndGgsIC5vcEdldEJ5VmFsU2xv
dwotICAgIGVsc2UKLSAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFs
bHkgdW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24g
b3RoZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSB0MSwgSlNBcnJheUJ1ZmZlclZpZXc6Om1f
bGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZW5kCisgICAgICAgIGxvYWRDYWdlZEpT
VmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKKyAgICAgICAg
bW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwogCi0gICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW3QwXSwgdDMKLSAgICBjYWdlZFByaW1pdGl2ZSh0MywgbGVuZ3RoLCB0MCwgc2Ny
YXRjaCkKLQotICAgICMgTm93IGJpc2VjdCB0aHJvdWdoIHRoZSB2YXJpb3VzIHR5cGVzOgotICAg
ICMgICAgSW50OEFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQ4QXJyYXlUeXBlLAotICAgICMgICAg
VWludDhDbGFtcGVkQXJyYXlUeXBlLAotICAgICMgICAgSW50MTZBcnJheVR5cGUsCi0gICAgIyAg
ICBVaW50MTZBcnJheVR5cGUsCi0gICAgIyAgICBJbnQzMkFycmF5VHlwZSwKLSAgICAjICAgIFVp
bnQzMkFycmF5VHlwZSwKLSAgICAjICAgIEZsb2F0MzJBcnJheVR5cGUsCi0gICAgIyAgICBGbG9h
dDY0QXJyYXlUeXBlLAotCi0gICAgYmlhIHQyLCBVaW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVk
QXJyYXlUeXBlLCAub3BHZXRCeVZhbEFib3ZlVWludDE2QXJyYXkKLQotICAgICMgV2UgaGF2ZSBv
bmUgb2YgSW50OEFycmF5VHlwZSAuLiBVaW50MTZBcnJheVR5cGUuCi0gICAgYmlhIHQyLCBVaW50
OENsYW1wZWRBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEludDE2
QXJyYXlPclVpbnQxNkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5cGUg
Li4uIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZQotICAgIGJpYSB0MiwgSW50OEFycmF5VHlwZSAtIEZp
cnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDhBcnJheU9yVWludDhDbGFtcGVkQXJy
YXkKLQotICAgICMgV2UgaGF2ZSBJbnQ4QXJyYXlUeXBlLgotICAgIGxvYWRic2kgW3QzLCB0MV0s
IHQwCi0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbFVpbnQ4QXJy
YXlPclVpbnQ4Q2xhbXBlZEFycmF5OgotICAgIGJpYSB0MiwgVWludDhBcnJheVR5cGUgLSBGaXJz
dFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5Ci0KLSAgICAjIFdl
IGhhdmUgVWludDhBcnJheVR5cGUuCi0gICAgbG9hZGIgW3QzLCB0MV0sIHQwCi0gICAgZmluaXNo
SW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgotICAg
ICMgV2UgaGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCi0gICAgbG9hZGIgW3QzLCB0MV0sIHQw
Ci0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbEludDE2QXJyYXlP
clVpbnQxNkFycmF5OgotICAgICMgV2UgaGF2ZSBlaXRoZXIgSW50MTZBcnJheVR5cGUgb3IgVWlu
dDE2Q2xhbXBlZEFycmF5VHlwZS4KLSAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBlIC0gRmlyc3RU
eXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQotCi0gICAgIyBXZSBoYXZlIElu
dDE2QXJyYXlUeXBlLgotICAgIGxvYWRoc2kgW3QzLCB0MSwgMl0sIHQwCi0gICAgZmluaXNoSW50
R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbFVpbnQxNkFycmF5OgotICAgICMgV2UgaGF2
ZSBVaW50MTZBcnJheVR5cGUuCi0gICAgbG9hZGggW3QzLCB0MSwgMl0sIHQwCi0gICAgZmluaXNo
SW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbEFib3ZlVWludDE2QXJyYXk6Ci0gICAg
IyBXZSBoYXZlIG9uZSBvZiBJbnQzMkFycmF5VHlwZSAuLiBGbG9hdDY0QXJyYXlUeXBlLgotICAg
IGJpYSB0MiwgVWludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlW
YWxGbG9hdDMyQXJyYXlPckZsb2F0NjRBcnJheQotCi0gICAgIyBXZSBoYXZlIGVpdGhlciBJbnQz
MkFycmF5VHlwZSBvciBVaW50MzJBcnJheVR5cGUKLSAgICBiaWEgdDIsIEludDMyQXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MzJBcnJheQotCi0gICAgIyBX
ZSBoYXZlIEludDMyQXJyYXlUeXBlLgotICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAotICAgIGZp
bmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50MzJBcnJheToKLSAgICAj
IFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgICMgVGhpcyBpcyB0aGUgaGFyZGVzdCBwYXJ0
IGJlY2F1c2Ugb2YgbGFyZ2UgdW5zaWduZWQgdmFsdWVzLgotICAgIGxvYWRpIFt0MywgdDEsIDRd
LCB0MAotICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5VmFsU2xvdyAjIFRoaXMgY2FzZSBpcyBzdGls
bCBhd2t3YXJkIHRvIGltcGxlbWVudCBpbiBMTEludC4KLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0
MCwgdDEpCi0KLS5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXk6Ci0gICAgIyBX
ZSBoYXZlIG9uZSBvZiBGbG9hdDMyQXJyYXlUeXBlIG9yIEZsb2F0NjRBcnJheVR5cGUuIFNhZGx5
LCB3ZSBjYW5ub3QgaGFuZGxlIEZsb2F0MzJBcnJheQotICAgICMgaW5saW5lIHlldC4gVGhhdCB3
b3VsZCByZXF1aXJlIHNvbWUgb2ZmbGluZWFzbSBjaGFuZ2VzLgotICAgIGJpZXEgdDIsIEZsb2F0
MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFNsb3cKLQotICAg
ICMgV2UgaGF2ZSBGbG9hdDY0QXJyYXlUeXBlLgotICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAK
LSAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKLSAgICBmaW5pc2hEb3VibGVH
ZXRCeVZhbChmdDAsIHQwLCB0MSkKLQotLm9wR2V0QnlWYWxTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2goKQorICAgICAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAu
b3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBl
LCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3Vz
OgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
IGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0MgorICAgICAgICBi
dHF6IHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQorCisg
ICAgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgorICAgICAgICBiaW5lcSB0MiwgRG91YmxlU2hh
cGUsIC5vcEdldEJ5VmFsTm90RG91YmxlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAu
b3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZGQgW3Qz
LCB0MSwgOF0sIGZ0MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cK
KyAgICAgICAgZmQycSBmdDAsIHQyCisgICAgICAgIHN1YnEgbnVtYmVyVGFnLCB0MgorICAgICAg
ICBqbXAgLm9wR2V0QnlWYWxEb25lCisgICAgICAgIAorICAgIC5vcEdldEJ5VmFsTm90RG91Ymxl
OgorICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgorICAgICAgICBiaWEgdDIsIFNs
b3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5v
dEluZGV4ZWRTdG9yYWdlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVy
ICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZh
bFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZHEgQXJyYXlTdG9yYWdl
OjptX3ZlY3Rvclt0MywgdDEsIDhdLCB0MgorICAgICAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNs
b3cKKworICAgIC5vcEdldEJ5VmFsRG9uZToKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwg
OF0KKyAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCB0NSwgdDIpCisgICAgICAg
IGRpc3BhdGNoKCkKIAotLm9zclJldHVyblBvaW50OgotICAgIGdldHRlclNldHRlck9TUkV4aXRS
ZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQotICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHIwKQotICAgIHJldHVybihyMCkKKyAgICAu
b3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgorICAgICAgICAjIEZpcnN0IGxldHMgY2hlY2sg
aWYgd2UgZXZlbiBoYXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxl
cnBsYXRlIHVwIGZyb250LgorICAgICAgICBsb2FkYiBKU0NlbGw6Om1fdHlwZVt0MF0sIHQyCisg
ICAgICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKKyAgICAgICAgYmlhZXEgdDIsIE51
bWJlck9mVHlwZWRBcnJheVR5cGVzRXhjbHVkaW5nRGF0YVZpZXcsIC5vcEdldEJ5VmFsU2xvdwor
ICAgICAgICAKKyAgICAgICAgIyBTd2VldCwgbm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgdHlw
ZWQgYXJyYXkuIERvIHNvbWUgYmFzaWMgdGhpbmdzIG5vdy4KIAotZW5kKQorICAgICAgICBpZiBB
Uk02NEUKKyAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CisgICAgICAgICAgICBjb25zdCBz
Y3JhdGNoID0gdDcKKyAgICAgICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0
aFt0MF0sIGxlbmd0aAorICAgICAgICAgICAgYmlhZXEgdDEsIGxlbmd0aCwgLm9wR2V0QnlWYWxT
bG93CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBp
bnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5v
dCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgICAgIGJpYWVxIHQxLCBKU0FycmF5
QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZW5kCisK
KyAgICAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMKKyAgICAg
ICAgY2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgdDAsIHNjcmF0Y2gpCisKKyAgICAgICAgIyBO
b3cgYmlzZWN0IHRocm91Z2ggdGhlIHZhcmlvdXMgdHlwZXM6CisgICAgICAgICMgICAgSW50OEFy
cmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50OEFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50
OENsYW1wZWRBcnJheVR5cGUsCisgICAgICAgICMgICAgSW50MTZBcnJheVR5cGUsCisgICAgICAg
ICMgICAgVWludDE2QXJyYXlUeXBlLAorICAgICAgICAjICAgIEludDMyQXJyYXlUeXBlLAorICAg
ICAgICAjICAgIFVpbnQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBGbG9hdDMyQXJyYXlUeXBl
LAorICAgICAgICAjICAgIEZsb2F0NjRBcnJheVR5cGUsCisKKyAgICAgICAgYmlhIHQyLCBVaW50
MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEFib3ZlVWludDE2
QXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5cGUgLi4gVWludDE2
QXJyYXlUeXBlLgorICAgICAgICBiaWEgdDIsIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSAtIEZpcnN0
VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJyYXkKKworICAg
ICAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5cGUgLi4uIFVpbnQ4Q2xhbXBlZEFycmF5
VHlwZQorICAgICAgICBiaWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBl
LCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5CisKKyAgICAgICAgIyBX
ZSBoYXZlIEludDhBcnJheVR5cGUuCisgICAgICAgIGxvYWRic2kgW3QzLCB0MV0sIHQwCisgICAg
ICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDhBcnJh
eU9yVWludDhDbGFtcGVkQXJyYXk6CisgICAgICAgIGJpYSB0MiwgVWludDhBcnJheVR5cGUgLSBG
aXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5CisKKyAgICAg
ICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlUeXBlLgorICAgICAgICBsb2FkYiBbdDMsIHQxXSwgdDAK
KyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxVaW50
OENsYW1wZWRBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZS4K
KyAgICAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQw
LCB0MSkKKworICAgIC5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJyYXk6CisgICAgICAg
ICMgV2UgaGF2ZSBlaXRoZXIgSW50MTZBcnJheVR5cGUgb3IgVWludDE2Q2xhbXBlZEFycmF5VHlw
ZS4KKyAgICAgICAgYmlhIHQyLCBJbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUs
IC5vcEdldEJ5VmFsVWludDE2QXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgSW50MTZBcnJheVR5
cGUuCisgICAgICAgIGxvYWRoc2kgW3QzLCB0MSwgMl0sIHQwCisgICAgICAgIGZpbmlzaEludEdl
dEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDE2QXJyYXk6CisgICAgICAgICMg
V2UgaGF2ZSBVaW50MTZBcnJheVR5cGUuCisgICAgICAgIGxvYWRoIFt0MywgdDEsIDJdLCB0MAor
ICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbEFib3Zl
VWludDE2QXJyYXk6CisgICAgICAgICMgV2UgaGF2ZSBvbmUgb2YgSW50MzJBcnJheVR5cGUgLi4g
RmxvYXQ2NEFycmF5VHlwZS4KKyAgICAgICAgYmlhIHQyLCBVaW50MzJBcnJheVR5cGUgLSBGaXJz
dFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5CisK
KyAgICAgICAgIyBXZSBoYXZlIGVpdGhlciBJbnQzMkFycmF5VHlwZSBvciBVaW50MzJBcnJheVR5
cGUKKyAgICAgICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUs
IC5vcEdldEJ5VmFsVWludDMyQXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgSW50MzJBcnJheVR5
cGUuCisgICAgICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQzMkFycmF5OgorICAgICAgICAjIFdl
IGhhdmUgVWludDMyQXJyYXlUeXBlLgorICAgICAgICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFy
dCBiZWNhdXNlIG9mIGxhcmdlIHVuc2lnbmVkIHZhbHVlcy4KKyAgICAgICAgbG9hZGkgW3QzLCB0
MSwgNF0sIHQwCisgICAgICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5VmFsU2xvdyAjIFRoaXMgY2Fz
ZSBpcyBzdGlsbCBhd2t3YXJkIHRvIGltcGxlbWVudCBpbiBMTEludC4KKyAgICAgICAgZmluaXNo
SW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlPckZsb2F0
NjRBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIG9uZSBvZiBGbG9hdDMyQXJyYXlUeXBlIG9yIEZs
b2F0NjRBcnJheVR5cGUuIFNhZGx5LCB3ZSBjYW5ub3QgaGFuZGxlIEZsb2F0MzJBcnJheQorICAg
ICAgICAjIGlubGluZSB5ZXQuIFRoYXQgd291bGQgcmVxdWlyZSBzb21lIG9mZmxpbmVhc20gY2hh
bmdlcy4KKyAgICAgICAgYmllcSB0MiwgRmxvYXQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJh
eVR5cGUsIC5vcEdldEJ5VmFsU2xvdworCisgICAgICAgICMgV2UgaGF2ZSBGbG9hdDY0QXJyYXlU
eXBlLgorICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisgICAgICAgIGJkbmVxdW4gZnQw
LCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBmaW5pc2hEb3VibGVHZXRCeVZhbChmdDAs
IHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsU2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNs
b3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0Y2goKQorCisgICAgLm9zclJldHVyblBvaW50Ogor
ICAgICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfJW9wY29kZU5hbWUlLCBz
aXplKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bj
b2RlU3RydWN0JSwgdDUsIHIwKQorICAgICAgICByZXR1cm4ocjApCisgICAgZW5kKQorZW5kCisK
K2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfdmFsKQogCitnZXRCeVZhbE9wKGdldF9ieV92YWxfZGlyZWN0LCBPcEdldEJ5VmFsRGlyZWN0
LCBfc2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAppbmRleCA0YzYxNzMwZWRlYzhhZGViZTk1ZDY5ZmFhNzA1ZWMxYzIwYmY1ZTk4Li44
MzVjZDAzMDgyOTFhMmM4NzVmMjlkZWQ2YjFkYmY2OWNiNjcxNjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjcwLDEyICsyNzAsMTIgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciogcHJvcGVydHksIERvdFR5cGUgdHlwZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQp
CiAgICAgewogICAgICAgICBpZiAoYmFzZS0+aXNTdXBlck5vZGUoKSkKICAgICAgICAgICAgIHVz
ZXNTdXBlclByb3BlcnR5KCk7CiAgICAgICAgIAotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5v
ZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwg
KnByb3BlcnR5KTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSwgdHlwZSk7
CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsK
ICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtNjUxLDYgKzY1MSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBub2RlLT5pc0Fzc2lnbm1lbnRMb2NhdGlvbigpOwogICAgIH0KIAor
ICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBub2RlLT5pc1ByaXZhdGVMb2NhdGlvbigpOworICAgIH0KKwogICAg
IGJvb2wgaXNPYmplY3RMaXRlcmFsKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gbm9kZS0+aXNPYmplY3RMaXRlcmFsKCk7CkBAIC0xNDM4LDE1ICsxNDQzLDE1
IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBz
dGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3RO
b2RlKiBub2RlID0gbnVsbHB0cjsKICAgICBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNh
bGxQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5jYWxsUHJpdmF0ZU5hbWUoKSkpCi0gICAgICAgIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJB
cmVuYSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICBlbHNlIGlmICghcHJldmlvdXNCYXNl
V2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVByaXZhdGVOYW1lKCkpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIG9ubHkgbmVlZGVkIGJlY2F1c2Ugd2UgaGF2
ZW4ndCB0YXVnaHQgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB0byBpbmxpbmUKICAgICAgICAgLy8g
UmVmbGVjdC5hcHBseSB5ZXQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNjY4LgogICAgICAgICBpZiAoIWRvdC0+YmFzZSgpLT5pc1Jlc29sdmVOb2RlKCkg
fHwgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlkZW50aWZpZXIoKSAh
PSAiUmVmbGVjdCIpCi0gICAgICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxk
RGVwdGgpOworICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFw
cGx5Q2hpbGREZXB0aCk7CiAgICAgfQogICAgIGlmICghbm9kZSkKLSAgICAgICAgbm9kZSA9IG5l
dyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
OworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBh
cmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJl
c3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0
dXJuIG5vZGU7CiB9CkBAIC0xNTcxLDkgKzE1NzYsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cgogICAgIEFTU0VSVChsb2MtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29y
Tm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obG9jKTsKICAgICBpZiAo
b3AgPT0gT3BFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWdu
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBl
eHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25t
ZW50cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAotICAgIFJlYWRNb2RpZnlEb3ROb2Rl
KiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBu
ZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2ln
bm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbklu
Zm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9k
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggOTdjYWJlMWMy
NGNjYTYxNDI3NzZiY2I2MTBjODI0MDY2OGMxOWRmYS4uODExNDVkNjc3OWI2NmM2ZWU3ODFlY2Iy
Y2E3ZjRlMWI0MzZkMzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
QEAgLTkzOSwxNCArOTM5LDE4IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAg
ICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJ
REVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247Ci0g
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJyMnOworICAgIGJvb2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc0J1aWx0aW5OYW1lKQogICAgICAg
ICBzaGlmdCgpOwogICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJy
ZW50U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJl
bnRMaW5lU3RhcnRPZmZzZXQoKTsKLSAgICAKKworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAg
ICAgICBzaGlmdCgpOworCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAg
ICAgIHNoaWZ0KCk7CiAgICAgCkBAIC05NjEsMTEgKzk2NSwxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExD
aGFyPjo6cAogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIo
KSAtIGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVu
dGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBpZiAobV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoIWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVy
KG1fdm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgaWYgKCFpc1Nh
ZmVCdWlsdGluSWRlbnRpZmllcihtX3ZtLCBpZGVudCkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2Yg
JyIsIGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9u
cy4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIGlmIChpc0J1aWx0aW5O
YW1lKQogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyKG1f
dm0sIG1fdm0ucHJvcGVydHlOYW1lcy0+bG9va1VwUHJpdmF0ZU5hbWUoKmlkZW50KSk7CiAgICAg
ICAgICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRL
ZXl3b3JkKQogICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS5wcm9wZXJ0
eU5hbWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKQEAgLTk3NiwyMCArOTgwLDIxIEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5
cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBudWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0
aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jk
cykpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgYXV0byBpZGVudFR5cGUgPSBpc1ByaXZhdGVO
YW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8
IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25v
cmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6
bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgICAgICBBU1NFUlQoKHJlbWFpbmluZyA8
IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAgICAgICAgICAgaWYgKCFlbnRyeSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlkZW50
VHlwZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tl
blR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAh
PSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IElERU5UOworICAg
ICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1v
ZGUgPyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gSURFTlQ7
CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOwor
ICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBsYXRlIDw+CkBAIC0xMDA0LDIzICsxMDA5
LDI3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29y
ZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJy
ZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247Ci0gICAgaWYgKGlzUHJpdmF0
ZU5hbWUpCisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOworICAg
IGJvb2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uOworICAgIGlmIChpc0J1aWx0aW5OYW1lKQogICAgICAgICBzaGlmdCgpOwogCiAg
ICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAg
ICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKIAog
ICAgIFVDaGFyIG9yQWxsQ2hhcnMgPSAwOwotICAgIAorCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUp
CisgICAgICAgIHNoaWZ0KCk7CisKICAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkg
ewogICAgICAgICBvckFsbENoYXJzIHw9IG1fY3VycmVudDsKICAgICAgICAgc2hpZnQoKTsKICAg
ICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewotICAgICAg
ICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOworICAgICAgICBBU1NFUlQoIWlzQnVpbHRpbk5hbWUp
OwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRp
ZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxz
aG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUp
OwogICAgIH0KQEAgLTEwMzksMTEgKzEwNDgsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlm
aWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoIWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKG1f
dm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVC
dWlsdGluSWRlbnRpZmllcihtX3ZtLCBpZGVudCkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIs
IGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4i
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIGlmIChpc0J1aWx0aW5OYW1l
KQogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyKG1fdm0s
IG1fdm0ucHJvcGVydHlOYW1lcy0+bG9va1VwUHJpdmF0ZU5hbWUoKmlkZW50KSk7CiAgICAgICAg
ICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkKQogICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS5wcm9wZXJ0eU5h
bWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKQEAgLTEwNTQsNyArMTA2Myw3IEBAIHRlbXBsYXRl
IDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUg
TGV4ZXI8VUNoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBu
dWxscHRyOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29y
ZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9y
ZVJlc2VydmVkV29yZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxl
bmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjpt
YWluVGFibGUuZW50cnkoKmlkZW50KTsKQEAgLTEwNzQsOCArMTA4MywxMyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEpTVG9rZW5UeQogewogICAgIHRva2VuRGF0YS0+ZXNjYXBlZCA9IHRydWU7CiAgICAgYXV0
byBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gKmlkZW50aWZpZXJTdGFydCA9PSAnIyc7CisgICAgYXV0byBpZGVudFR5cGUgPSBp
c1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKICAgICBib29sIGJ1ZmZlclJlcXVp
cmVkID0gZmFsc2U7CiAKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsK
KwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlmIChMSUtFTFkoaXNJZGVudFBhcnQobV9j
dXJyZW50KSkpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC0xMDk1LDcgKzExMDksOCBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+IEpTVG9rZW5UeQogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHBhcnNlVW5p
Y29kZUVzY2FwZSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWNoYXJhY3Rlci5pc1ZhbGlkKCkp
KQogICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlci5pc0luY29tcGxldGUoKSA/IFVOVEVSTUlO
QVRFRF9JREVOVElGSUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LIDogSU5WQUxJRF9JREVOVElG
SUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LOwotICAgICAgICBpZiAoVU5MSUtFTFkobV9idWZm
ZXIxNi5zaXplKCkgPyAhaXNJZGVudFBhcnQoY2hhcmFjdGVyLnZhbHVlKCkpIDogIWlzSWRlbnRT
dGFydChjaGFyYWN0ZXIudmFsdWUoKSkpKQorICAgICAgICBib29sIGlzSWRlbnRpZmllclN0YXJ0
ID0gaXNQcml2YXRlTmFtZSA/IG1fYnVmZmVyMTYuc2l6ZSgpID09IDE6ICFtX2J1ZmZlcjE2LnNp
emUoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRpZmllclN0YXJ0ID8gIWlzSWRlbnRT
dGFydChjaGFyYWN0ZXIudmFsdWUoKSkgOiAhaXNJZGVudFBhcnQoY2hhcmFjdGVyLnZhbHVlKCkp
KSkKICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0lERU5USUZJRVJfVU5JQ09ERV9FU0NBUEVf
RVJST1JUT0s7CiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKQogICAgICAgICAg
ICAgcmVjb3JkVW5pY29kZUNvZGVQb2ludChjaGFyYWN0ZXIudmFsdWUoKSk7CkBAIC0xMTI0LDEz
ICsxMTM5LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHRlbXBsYXRlPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5CiAgICAgICAgIEFTU0VSVChzaG91
bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5
ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAgICAgICAgaWYgKCFlbnRyeSkKLSAg
ICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAg
ICAgICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5
LT5sZXhlclZhbHVlKCkpOwogICAgICAgICBpZiAoKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklD
VCkgfHwgc3RyaWN0TW9kZSkKICAgICAgICAgICAgIHJldHVybiBidWZmZXJSZXF1aXJlZCA/IFVO
RVhQRUNURURfRVNDQVBFX0VSUk9SVE9LIDogdG9rZW47CiAgICAgfQogCi0gICAgcmV0dXJuIElE
RU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJv
b2wgY2hhcmFjdGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3RlcikK
QEAgLTI0MDgsMTQgKzI0MjMsMjEgQEAgc3RhcnQ6CiAgICAgICAgIG1faGFzTGluZVRlcm1pbmF0
b3JCZWZvcmVUb2tlbiA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAg
ICAgICBnb3RvIHN0YXJ0OwotICAgIGNhc2UgQ2hhcmFjdGVySGFzaDoKKyAgICBjYXNlIENoYXJh
Y3Rlckhhc2g6IHsKICAgICAgICAgLy8gSGFzaGJhbmcgaXMgb25seSBwZXJtaXR0ZWQgYXQgdGhl
IHN0YXJ0IG9mIHRoZSBzb3VyY2UgdGV4dC4KLSAgICAgICAgaWYgKHBlZWsoMSkgPT0gJyEnICYm
ICFjdXJyZW50T2Zmc2V0KCkpIHsKKyAgICAgICAgYXV0byBuZXh0ID0gcGVlaygxKTsKKyAgICAg
ICAgaWYgKG5leHQgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIHNo
aWZ0KCk7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblNpbmdsZUxp
bmVDb21tZW50OwogICAgICAgICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgY291bGQgYmUg
YSB2YWxpZCBQcml2YXRlTmFtZS4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRz
KCkgJiYgKGlzSWRlbnRTdGFydChuZXh0KSB8fCBuZXh0ID09ICdcXCcpKSB7CisgICAgICAgICAg
ICBsZXhlckZsYWdzLnJlbW92ZShMZXhlckZsYWdzOjpEb250QnVpbGRLZXl3b3Jkcyk7CisgICAg
ICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisgICAgICAgIH0KICAgICAgICAgZ290byBpbnZhbGlk
Q2hhcmFjdGVyOworICAgIH0KICAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3Rh
cnQ6CiAgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICAgICBn
b3RvIHBhcnNlSWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCmluZGV4IGZkOTdhMGNhOTM1ZTdlNTc3OGEwOTM4NTAyMmY5ODY3ODAxNGEz
MjQuLjA2ZTYwMmE3YmRhNzJiYjI4MjE5OGYyOTdkODNhNDFhYThlNTEyNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC0zMjcsMTAg
KzMyNywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERv
dEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAg
ICBpbmxpbmUgQmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RG90VHlwZSB0eXBlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCisgICAgICAgICwgbV90
eXBlKHR5cGUpCisgICAgeworICAgIH0KKworICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRv
dEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKKyAgICAg
ICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgewogICAg
IH0KICAgICAKQEAgLTQxOCwxMSArNDI0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdz
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURv
dE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZVN1
YkV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBt
X2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhh
cmdzKQogICAgIHsKICAgICB9CkBAIC00MzcsMTQgKzQ0MSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUq
IGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3Rh
bmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KQorICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUq
IGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3Rh
bmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKQogICAgICAgICAsIG1fZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KGRpc3Rh
bmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQot
ICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rpb25D
YWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkp
CisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5
cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3Rh
bmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkp
CiAgICAgewogICAgIH0KQEAgLTc1MCwyMSArNzU0LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFz
c2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJh
c2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAg
LCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZWFkTW9k
aWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RU
eXBlIHR5cGUsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisg
ICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAg
ICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAg
ICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgICAg
ICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA5ZDFjZmE0ZjE3NjEzMDJhMzNiYmFlMzFl
ZjYwZmRmY2FmMjA3ZGY1Li4xMWJmNGE2ODRhMWJkOWEwOTNlYjhlYjE2ZTFlMTM3MjY2MjBkMzkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMzM1LDcgKzMzNSw3
IEBAIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkoY29u
c3QgSWRlbnRpZmllciYgcHJvcE5hbWUpCiBib29sIFByb3BlcnR5TGlzdE5vZGU6OnNob3VsZENy
ZWF0ZUxleGljYWxTY29wZUZvckNsYXNzKFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCiB7CiAgICAg
d2hpbGUgKGxpc3QpIHsKLSAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNz
RmllbGQoKSkKKyAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQo
KSB8fCBsaXN0LT5tX25vZGUtPmlzUHJpdmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGxpc3QgPSBsaXN0LT5tX25leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCmluZGV4IDQ5YWFjNDczNTgwNzBlM2YzOGI3OGMyMTJmMDIzMjkxMzVhOTZm
YmEuLjI2M2Y2NWZkMmU2MmVkMGE5OGFiYzk4ZGQ0NTVmYTBjNDYzNzBlOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4Miw2ICsxODIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9ICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3Rh
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1By
aXZhdGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzTG9jYXRpb24oKTsg
fQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fzc2lnblJlc29sdmVOb2RlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTcxMiw3ICs3MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0
YXRpYywgTGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQ
YXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVp
bnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0g
OCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyIH07CisgICAgICAgIGVudW0gVHlwZSA6IHVp
bnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0g
OCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKICAgICAgICAg
ZW51bSBQdXRUeXBlIDogdWludDhfdCB7IFVua25vd24sIEtub3duRGlyZWN0IH07CiAKICAgICAg
ICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUs
IFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczMSw2ICs3MzIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7
IHJldHVybiBpc0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAg
ICAgICBib29sIGlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5j
ZUNsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29s
IGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5C
eUR1cGxpY2F0ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSAmIFByaXZhdGU7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVs
ZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9
CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlk
ZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NDEsNyArNzQzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWduOwot
ICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA2OworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3
OwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5z
aWduZWQgbV9wdXRUeXBlIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxlbWVu
dFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwpAQCAtODEzLDkgKzgxNSwz
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgZW51
bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUgfTsKKyAgICBjbGFzcyBCYXNlRG90
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEb3RB
Y2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBl
KTsKKworICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudDsgfQorICAgICAgICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdl
dFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0
UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Jhc2U7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CisgICAg
ICAgIERvdFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUg
ZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CisgICAgcHVibGljOgorICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBl
KTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudDsgfQpAQCAtODI0LDEwICs4NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0K
ICAgICAgICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CiAKICAgICBjbGFzcyBTcHJlYWRFeHByZXNz
aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKQEAgLTk0MCw5ICs5NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBG
dW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBw
dWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRz
Tm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CkBAIC05NTAsOCArOTcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1f
YXJnczsKICAgICB9OwogCkBAIC05ODgsNyArMTAwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25D
YWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5u
ZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKQEAgLTk5Nyw3ICsxMDE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3Mg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwg
c2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIEFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKQEAg
LTE0MzIsMjggKzE0NTEsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9yaWdo
dEhhc0Fzc2lnbm1lbnRzIDogMTsKICAgICB9OwogCi0gICAgY2xhc3MgQXNzaWduRG90Tm9kZSBm
aW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKKyAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2Rl
LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAg
ICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1f
aWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBib29sIG1f
cmlnaHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgUmVhZE1vZGlmeURvdE5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgZmluYWwgOiBwdWJsaWMg
QmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBEb3RUeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICB1bnNpZ25lZCBtX29wZXJhdG9yIDog
MzE7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzIDogMTsKQEAgLTIyMzYsNyAr
MjI1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVmaW5lRmllbGROb2RlIGZp
bmFsIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBj
bGFzcyBUeXBlIHsgTmFtZSwgQ29tcHV0ZWROYW1lIH07CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7IE5hbWUsIFByaXZhdGVOYW1lLCBDb21wdXRlZE5hbWUgfTsKICAgICAgICAgRGVmaW5lRmll
bGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBFeHByZXNz
aW9uTm9kZSosIFR5cGUpOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCBjMmZhNjA3ZjI3OGYyN2MzMzUxZWQxOTg3YjgzMWVhNjkyNDJk
OTk2Li41YjU5YmZiZjg1N2UyYjEyMjE5YTNmNzU0Yzc2M2I3OWE4YWQ1M2IxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC04MjAsNiArODIwLDggQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VWYXJpYWJsZURlY2wKICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IDA7CiAgICAg
ICAgIGRlY2xhcmF0aW9ucysrOwogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gZmFsc2U7
CisKKyAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgdXNlIGEg
cHJpdmF0ZSBuYW1lIHRvIGRlY2xhcmUgYSB2YXJpYWJsZSIpOwogICAgICAgICBpZiAobWF0Y2hT
cGVjSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYg
KGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xhcmF0aW9uIHx8IGRl
Y2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24pLCAKICAg
ICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9y
IGEgTGV4aWNhbERlY2xhcmF0aW9uIik7CkBAIC0xMjc1LDYgKzEyNzcsOCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VEZQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6
OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChkZXN0cnVjdHVyaW5nS2luZFRv
VmFyaWFibGVLaW5kTmFtZShraW5kKSk7CisgICAgICAgICAgICBpZiAoa2luZCAhPSBEZXN0cnVj
dHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZmFp
bElmVHJ1ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgdXNlIGEgcHJpdmF0ZSBuYW1lIGFz
IGEgIiwgZGVzdHJ1Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2luZE5hbWUoa2luZCkpOwogICAgICAg
ICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhIHBhcmFtZXRlciBwYXR0ZXJuIG9yIGEg
JyknIGluIHBhcmFtZXRlciBsaXN0Iik7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZSht
YXRjaChMRVQpICYmIChraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvTGV0
IHx8IGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9Db25zdCksICJDYW5u
b3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRp
b24iKTsKQEAgLTI5MzAsNiArMjkzNCwxOSBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHBy
b3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VC
UkFDS0VULCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKKyAgICAgICAgICAgIEFTU0VS
VChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4gdG9rZW4g
PSBtX3Rva2VuOworICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAg
ICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiU3Rh
dGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAgIGZhaWxJ
ZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdp
dGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAg
ICAgbmV4dCgpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVOUEFS
RU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUi
KTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJp
dmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVj
bGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAg
ICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVy
dHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5G
bGFnKQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk0NSw4ICsyOTYy
LDEwIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJD
YW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25zOjp1
c2VDbGFzc0ZpZWxkcygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBDbGFzc0VsZW1l
bnRUYWc6Okluc3RhbmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1v
ZGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVyKTsKLSAgICAg
ICAgICAgIGlmIChpZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewogICAgICAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rv
ciwgIkNhbm5vdCBkZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKKyAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMu
Y29uc3RydWN0b3JQcml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGNsYXNzIGZp
ZWxkIG5hbWVkICcjY29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1f
cGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0s
IG51bUNvbXB1dGVkRmllbGRzKyspOwpAQCAtMzAxMCw2ICszMDI5LDEwIEBAIHBhcnNlTWV0aG9k
OgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAg
ICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRl
ciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpKSB7
CisgICAgICAgIC8vIEZhaWwgaWYgdGhlcmUgYXJlIG5vIHBhcmVudCBwcml2YXRlIG5hbWUgc2Nv
cGVzIGFuZCBhbnkgdXNlZC1idXQtdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzLgorICAgICAgICBz
ZW1hbnRpY0ZhaWxJZkZhbHNlKGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3Bl
KCksICJDYW5ub3QgcmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcyIpOworICAgIH0K
ICAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0
aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25z
dHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNz
U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBj
bGFzc0V4cHJlc3Npb247CkBAIC0zMDMzLDYgKzMwNTYsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0
YW5jZQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAg
ICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBl
OjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CisgICAgICAgIGNhc2Ug
UFJJVkFURU5BTUU6CisgICAgICAgICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQ
cml2YXRlTmFtZTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFNUUklO
RzoKICAgICAgICAgY2FzZSBJREVOVDoKICAgICAgICAgbmFtZWRLZXl3b3JkOgpAQCAtMzA2Nyw2
ICszMDkzLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgaWYgKGNvbnN1bWUo
RVFVQUwpKQogICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKGNvbnRleHQpOwogCisgICAgICAgIGlmICh0eXBlID09IERlZmluZUZpZWxkTm9kZTo6VHlw
ZTo6UHJpdmF0ZU5hbWUpCisgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUo
aWRlbnQsIGZhbHNlKTsKKwogICAgICAgICBUcmVlU3RhdGVtZW50IGRlZmluZUZpZWxkID0gY29u
dGV4dC5jcmVhdGVEZWZpbmVGaWVsZChmaWVsZExvY2F0aW9uLCBpZGVudCwgaW5pdGlhbGl6ZXIs
IHR5cGUpOwogICAgICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywg
ZGVmaW5lRmllbGQpOwogICAgIH0KQEAgLTQ3MzksNiArNDc2OCwyMiBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgcmVjb3JkQ2FsbE9yQXBwbHlEZXB0aChQYXJzZXJUeXBlKiwgVk0mLCBPcHRpb25hbDx0
eXBlbmFtZSBQYQogewogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgorYm9vbCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6ZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGNvbnN0IElkZW50aWZpZXIq
IGlkZW50KQoreworICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIFNjb3BlUmVm
IGN1cnJlbnQgPSBjdXJyZW50UHJpdmF0ZU5hbWVTY29wZSgmZm91bmQpOworICAgIGlmICghZm91
bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWN1cnJlbnQtPmhhc1ByaXZhdGVO
YW1lKCppZGVudCkpCisgICAgICAgIGN1cnJlbnQtPnVzZVByaXZhdGVOYW1lKCppZGVudCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKQEAgLTQ4
NTQsNiArNDg5OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAKICAgICAgICAgICAgIFNh
dmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgICAgICAg
ICBuZXh0KCk7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5B
TUUpLCAiQ2Fubm90IGFjY2VzcyBwcml2YXRlIGlkZW50aWZpZXJzIGluIGFuIG9wdGlvbmFsIGNo
YWluIik7CiAgICAgICAgICAgICBpZiAobWF0Y2goT1BFTkJSQUNLRVQpIHx8IG1hdGNoKE9QRU5Q
QVJFTikgfHwgbWF0Y2goQkFDS1FVT1RFKSkKICAgICAgICAgICAgICAgICB0eXBlID0gbV90b2tl
bi5tX3R5cGU7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTQ5NDEsOCArNDk4NywyMSBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubm9uVHJp
dmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGV4
cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIG5l
eHRFeHBlY3RJZGVudGlmaWVyKFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3JkcyB8IExleGVy
RmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpOworICAgICAgICAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICAgICAgYXV0
byB0eXBlID0gRG90VHlwZTo6TmFtZTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2goUFJJVkFU
RU5BTUUpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CisgICAgICAgICAg
ICAgICAgICAgIGZhaWxJZlRydWUoYmFzZUlzU3VwZXIsICJDYW5ub3QgYWNjZXNzIHByaXZhdGUg
bmFtZXMgZnJvbSBzdXBlciIpOworICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3Vy
cmVudFNjb3BlKCktPmV2YWxDb250ZXh0VHlwZSgpID09IEV2YWxDb250ZXh0VHlwZTo6SW5zdGFu
Y2VGaWVsZEV2YWxDb250ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFp
bElmRmFsc2UoY3VycmVudFNjb3BlKCktPmhhc1ByaXZhdGVOYW1lKCppZGVudCksICJDYW5ub3Qg
cmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBmaWVsZCAnIiwgaWRlbnQtPmltcGwoKSwgIici
KTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShlbnN1cmVQcml2YXRl
TmFtZVVzZWQoaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSBwcml2YXRlIG5hbWVzIG91dHNpZGUg
b2YgY2xhc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0
ZU5hbWUgPSBpZGVudDsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZh
cmlhYmxlKGlkZW50LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBl
OjpQcml2YXRlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBJREVO
VDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQs
ICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUgYWZ0ZXIgIiwgb3B0aW9uYWxDaGFpbkJhc2UgPyAi
Jz8uJyIgOiAiJy4nIik7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90
QWNjZXNzKHN0YXJ0TG9jYXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNz
aW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kUG9zaXRpb24oKSk7CisgICAgICAgICAg
ICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9jYXRpb24sIGJhc2Us
IGlkZW50LCB0eXBlLCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kUG9z
aXRpb24oKSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGJhc2VJc1N1cGVyICYmIGN1
cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRGdW5jdGlvblNjb3BlKCktPnNldElubmVyQXJyb3dGdW5jdGlvblVzZXNTdXBlclByb3Bl
cnR5KCk7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtNTEzNyw2ICs1MTk2LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERF
TEVURVRPS0VOOgogICAgICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGNvbnRleHQuaXNSZXNv
bHZlKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSB1bnF1YWxpZmllZCBwcm9wZXJ0eSAnIiwgbV9wYXJz
ZXJTdGF0ZS5sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAg
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNvbnRleHQuaXNQcml2YXRlTG9jYXRpb24oZXhw
ciksICJDYW5ub3QgZGVsZXRlIHByaXZhdGUgZmllbGQgIiwgbV9wYXJzZXJTdGF0ZS5sYXN0UHJp
dmF0ZU5hbWUtPmltcGwoKSk7CiAgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlRGVsZXRl
Tm9kZShsb2NhdGlvbiwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9r
ZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRl
ZmF1bHQ6CkBAIC01MjA3LDcgKzUyNjcsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAg
ICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgogICAgICAgICBvdXQucHJpbnQo
IkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAKKworICAgIGNhc2UgUFJJVkFURU5BTUU6CisgICAgICAgIG91dC5w
cmludCgiVW5leHBlY3RlZCBwcml2YXRlIG5hbWUgIiwgZ2V0VG9rZW4oKSk7CisgICAgICAgIHJl
dHVybjsKKwogICAgIGNhc2UgQVdBSVQ6CiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnBy
aW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA3OWVhMDk2NmRiNjI0NTk0ZjJhYzJjMzhj
Zjg0YmMzYmMzNmVjMzVkLi41YmM0NjMwN2EyNTEzMTAxZDJmMWE4OWI1ZWQyZmRlMmFlNjIwYzNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE4MSw2ICsxODEsNyBA
QCBwdWJsaWM6CiAgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV9p
c0V2YWxDb250ZXh0KGZhbHNlKQogICAgICAgICAsIG1faGFzTm9uU2ltcGxlUGFyYW1ldGVyTGlz
dChmYWxzZSkKKyAgICAgICAgLCBtX2lzUHJpdmF0ZU5hbWVTY29wZShmYWxzZSkKICAgICAgICAg
LCBtX2lzQ2xhc3NTY29wZShmYWxzZSkKICAgICAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShFdmFs
Q29udGV4dFR5cGU6Ok5vbmUpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCkBAIC0yODksNiArMjkwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNHZW5lcmF0b3JCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNHZW5lcmF0b3JCb3VuZGFyeTsgfQogICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb247IH0KICAgICBib29sIGlzQXN5bmNGdW5jdGlvbkJv
dW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeTsgfQorICAg
IGJvb2wgaXNQcml2YXRlTmFtZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ByaXZhdGVOYW1l
U2NvcGU7IH0KICAgICBib29sIGlzQ2xhc3NTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFz
c1Njb3BlOyB9CiAKICAgICBib29sIGhhc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
QXJndW1lbnRzOyB9CkBAIC0zMDUsOCArMzA3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hbGxv
d3NMZXhpY2FsRGVjbGFyYXRpb25zID0gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIHNldElzUHJp
dmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBtX2lzUHJpdmF0ZU5hbWVTY29wZSA9IHRy
dWU7CisgICAgfQorCiAgICAgdm9pZCBzZXRJc0NsYXNzU2NvcGUoKQogICAgIHsKKyAgICAgICAg
c2V0SXNQcml2YXRlTmFtZVNjb3BlKCk7CiAgICAgICAgIG1faXNDbGFzc1Njb3BlID0gdHJ1ZTsK
ICAgICB9CiAKQEAgLTQ3MSw3ICs0NzksNDQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5nZXQoKSk7CiAgICAgfQotICAg
IAorCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0ZU5hbWUoaWRl
bnQpOworICAgIH0KKworICAgIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMoU2NvcGUm
IG90aGVyKQorICAgIHsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLmNvcHlVbmRlY2xhcmVk
UHJpdmF0ZU5hbWVzKG90aGVyLm1fbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgfQorCisgICAgYm9v
bCBoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAobV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXMo
KSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnku
dmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBtX2xl
eGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgIH0KKworICAgIERlY2xh
cmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsK
KyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0
OjpWYWxpZDsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVj
bGFyZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxp
Y2F0ZURlY2xhcmF0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBoYXNEZWNsYXJlZFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBoYXNEZWNsYXJlZFBhcmFtZXRlcihpZGVudC5p
bXBsKCkpOwpAQCAtODM0LDYgKzg3OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0FyZ3Vt
ZW50czsKICAgICBib29sIG1faXNFdmFsQ29udGV4dDsKICAgICBib29sIG1faGFzTm9uU2ltcGxl
UGFyYW1ldGVyTGlzdDsKKyAgICBib29sIG1faXNQcml2YXRlTmFtZVNjb3BlOwogICAgIGJvb2wg
bV9pc0NsYXNzU2NvcGU7CiAgICAgRXZhbENvbnRleHRUeXBlIG1fZXZhbENvbnRleHRUeXBlOwog
ICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kOwpAQCAtOTA1LDcgKzk1MSw3IEBAIHB1Ymxp
YzoKICAgICB+UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJ
ZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50
PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0
LCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXIm
LCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9u
PiogPSBudWxscHRyKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25z
dCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xMTc4LDYgKzEy
MjQsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ss
IGkpOwogICAgIH0KIAorICAgIFNjb3BlUmVmIGN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKGJvb2wg
KmZvdW5kID0gMCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6
ZSgpIC0gMTsKKyAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAg
ICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAg
ICAgICAgICAgIGktLTsKKyAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgKmZvdW5kID0g
bV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpOworICAgICAgICByZXR1cm4gU2Nv
cGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisgICAgfQorCisgICAgYm9vbCBjb3B5VW5kZWNsYXJl
ZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fc2Nv
cGVTdGFjay5pc0VtcHR5KCkpOworICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFBy
aXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IGN1cnJlbnQuaW5kZXgoKSAt
IDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNj
b3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAgICAg
cmV0dXJuICFjdXJyZW50LT5oYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpOworCisg
ICAgICAgIGN1cnJlbnQtPmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKG1fc2NvcGVTdGFja1tp
XSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIFNjb3BlUmVmIGNsb3Nlc3RQ
YXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCkKICAgICB7CiAgICAgICAgIHVu
c2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKQEAgLTE0NTIsNiArMTUyNCwxNiBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09IGV4cGVj
dGVkOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaEFuZFVwZGF0ZShKU1Rv
a2VuVHlwZSBleHBlY3RlZCwgY29uc3QgSlNUb2tlbiYgdG9rZW4pCisgICAgeworICAgICAgICBp
ZiAobWF0Y2goZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBtX3Rva2VuID0gdG9rZW47CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQ29udGV4dHVhbEtleXdv
cmQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CkBAIC0xNzAyLDYgKzE3ODQs
OCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KFRyZWVCdWlsZGVyJiwgVHJlZUV4
cHJlc3Npb24pOwogCisgICAgQUxXQVlTX0lOTElORSBib29sIGVuc3VyZVByaXZhdGVOYW1lVXNl
ZChjb25zdCBJZGVudGlmaWVyKik7CisKICAgICBBTFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9w
ZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBib29sIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7
CiAgICAgCkBAIC0xNzk2LDYgKzE4ODAsNyBAQCBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblBh
cnNlUGhhc2UgZnVuY3Rpb25QYXJzZVBoYXNlIHsgRnVuY3Rpb25QYXJzZVBoYXNlOjpCb2R5IH07
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RJZGVudGlmaWVyIHsgbnVsbHB0ciB9Owog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0RnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9Owor
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0UHJpdmF0ZU5hbWUgeyBudWxscHRyIH07CiAg
ICAgICAgIGJvb2wgYWxsb3dBd2FpdCB7IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1BhcnNpbmdD
bGFzc0ZpZWxkSW5pdGlhbGl6ZXIgeyBmYWxzZSB9OwogICAgIH07CkBAIC0xOTQ1LDcgKzIwMzAs
NyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2Fs
bGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2lu
Z0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0
aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgVmVjdG9yPEpT
VGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGlu
ZTsKICAgICBTdHJpbmcgZXJyTXNnOwpAQCAtMTk2MCw2ICsyMDQ1LDExIEBAIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVy
cm9yLCBjb25zdCBJCiAgICAgQVNTRVJUKG1fc291cmNlLT5zdGFydENvbHVtbigpID4gT3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSk7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBtX3Nv
dXJjZS0+c3RhcnRDb2x1bW4oKS56ZXJvQmFzZWRJbnQoKTsKIAorICAgIGlmIChpc0V2YWxOb2Rl
PFBhcnNlZE5vZGU+KCkgJiYgdmFyaWFibGVzVW5kZXJURFogJiYgdmFyaWFibGVzVW5kZXJURFot
PnByaXZhdGVOYW1lc1NpemUoKSkgeworICAgICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SXNQcml2
YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHZhcmlhYmxlc1VuZGVyVERaLT5jb3B5UHJpdmF0ZU5h
bWVzKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIH0KKwogICAgIGF1
dG8gcGFyc2VSZXN1bHQgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFyc2lu
Z0NvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5l
TnVtYmVyKCk7CkBAIC0yMDQ0LDYgKzIxMzQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoCiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9IERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25lLAogICAgIERlYnVnZ2VyUGFyc2VEYXRhKiBkZWJ1
Z2dlclBhcnNlRGF0YSA9IG51bGxwdHIsCisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
dmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLAogICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQb3Np
dGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMgPSBudWxscHRyKQogewogICAgIEFTU0VSVCgh
c291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKQEAgLTIwNTUsNyArMjE0Niw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNl
KCkuaXM4Qml0KCkpIHsKICAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBz
b3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1
cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5
cGUsIGRlYnVnZ2VyUGFyc2VEYXRhKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBh
cnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4o
KSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6
bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNl
ci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBh
cnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9n
cmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAg
ICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2Rl
OjpCdWlsdGluKSB7CkBAIC0yMDY4LDcgKzIxNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2Vk
Tm9kZT4gcGFyc2UoCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShk
ZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiA9PSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXMncyBzcGVjaWFsIGNvbnN0cnVjdG9ycyBzaG91
bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwogICAgICAgICBQYXJzZXI8TGV4ZXI8VUNo
YXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1v
ZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9w
TGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+
KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEpOwotICAgICAgICByZXN1bHQg
PSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4
dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAg
ICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1v
ZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFy
c2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGlu
c3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBkYmQ2ZDY1MTRjZmJjZmUyMzEzNjUzYzg2ZTFj
NGFlMDMzYjhmMjQzLi5mNTY5MDRjODk4MjFlN2FhOGVjNWMxYjUwMjQ5N2Q5YTMwMGViNTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExNCw2
ICsxMTQsNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBET1VCTEUsCiAgICAgQklHSU5ULAog
ICAgIElERU5ULAorICAgIFBSSVZBVEVOQU1FLAogICAgIFNUUklORywKICAgICBURU1QTEFURSwK
ICAgICBSRUdFWFAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCmluZGV4IGY5YmIwN2I0ZGQ0MDg5YzdiMWUzYTBmM2Y1OTU0MWIzMTdhNTJkN2YuLmU5YjZk
N2U5NDY3NDRlMWEwOGRjMWNjMjhhNDZiNzEzNzczYzk4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJs
ZUV4cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhw
ciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5j
dGlvbkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwg
RG90RXhwciwgQ2FsbEV4cHIsCi0gICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBV
bmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sCisgICAgICAgIE5ld0V4cHIsIFBy
ZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sIFBy
aXZhdGVEb3RFeHByLAogICAgICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBU
eXBlb2ZFeHByLAogICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByLCBCaW5kaW5n
RGVzdHJ1Y3R1cmluZywgUmVzdFBhcmFtZXRlciwKICAgICAgICAgQXJyYXlEZXN0cnVjdHVyaW5n
LCBPYmplY3REZXN0cnVjdHVyaW5nLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKQEAgLTE4MCw3ICsx
ODAsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiB0eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lID8gUHJpdmF0ZURvdEV4cHIg
OiBEb3RFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBh
dHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC00MDMsNyArNDAz
LDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlwZSA9PSBE
b3RFeHByIHx8IHR5cGUgPT0gQnJhY2tldEV4cHI7CisgICAgICAgIHJldHVybiB0eXBlID09IFJl
c29sdmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IFByaXZhdGVEb3RFeHByIHx8
IHR5cGUgPT0gQnJhY2tldEV4cHI7CisgICAgfQorCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlv
bihFeHByZXNzaW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUHJp
dmF0ZURvdEV4cHI7CiAgICAgfQogCiAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbihFeHBy
ZXNzaW9uVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggOGU2OTE1MWM3YjZjYjMxMTFiMGZlNzdjZTg5
NzMwNzQwNjJmNWY1YS4uMWY1NzA4OGEzNGM2NjNjYTcwMmY3N2Q0Nzc0MDY5NmUyNjc2ODhlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwCkBAIC0yOSw2ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorVmFyaWFi
bGVFbnZpcm9ubWVudCYgVmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIG90aGVyKQoreworICAgIG1fbWFwID0gb3RoZXIubV9tYXA7CisgICAg
bV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7Cisg
ICAgbV9yYXJlRGF0YS5yZXNldCgpOworICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKQorICAgICAg
ICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVE
YXRhPigqb3RoZXIubV9yYXJlRGF0YSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiB2b2lkIFZh
cmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGZpbmRS
ZXN1bHQgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOwpAQCAtODAsNiArOTAsNyBAQCB2b2lkIFZh
cmlhYmxlRW52aXJvbm1lbnQ6OnN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCiB7CiAg
ICAgbV9tYXAuc3dhcChvdGhlci5tX21hcCk7CiAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9
IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5zd2FwKG90aGVy
Lm1fcmFyZURhdGEpOwogfQogCiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJs
ZUFzSW1wb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikK
QEAgLTEwMCw3ICsxMTEsNyBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZh
cmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIDogbV9pc0V2
ZXJ5dGhpbmdDYXB0dXJlZChlbnYuaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSkKIHsKICAgICBWZWN0
b3I8c3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
PiwgMzI+IHNvcnRlZEVudHJpZXM7Ci0gICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGVudi5zaXplKCkpOworICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShlbnYubWFwU2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnYpCiAgICAgICAg
IHNvcnRlZEVudHJpZXMuYXBwZW5kKHsgcGFpci5rZXkuZ2V0KCksIHBhaXIudmFsdWUgfSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmgKaW5kZXggNTMyZDE0NmVmZDFmY2FlNTMyNjllNzVkZjZmNWZkYmVhMTk5MmM1Mi4uMGMxZDBh
YzNlYmFkY2E4ZWMzOGE2Yzg4ZWE2MzEzOWI0OTBhMzM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTI3LDYgKzI3LDgg
QEAKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5j
dGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xv
cHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9w
cHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2
YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJl
ZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXND
b25zdDsgfQpAQCAtNTMsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7
IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNW
YXI7IH0KIApAQCAtNzQsNyArNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0ltcG9ydGVkTmFt
ZXNwYWNlID0gMSA8PCA2LAogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJ
c1BhcmFtZXRlciA9IDEgPDwgOCwKLSAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRh
dGUgPSAxIDw8IDkKKyAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8
IDksCisgICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAogICAgIH07CiAgICAgdWludDE2
X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTgzLDE1ICs4OCw1NSBAQCBzdHJ1Y3QgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5PgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFs
c2U7CiB9OwogCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CitwdWJsaWM6CisgICAgUHJpdmF0
ZU5hbWVFbnRyeSh1aW50MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQorCisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
VXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
VXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJ
c0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQorCisgICAgdWludDE2X3QgYml0
cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFByaXZhdGVOYW1lRW50cnkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
Yml0cyA9PSBvdGhlci5tX2JpdHM7CisgICAgfQorCisgICAgZW51bSBUcmFpdHMgOiB1aW50MTZf
dCB7CisgICAgICAgIElzVXNlZCA9IDEgPDwgMCwKKyAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwg
MSwKKyAgICB9OworCitwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKK307CisK
K3N0cnVjdCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5h
bWVFbnRyeT4geworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxz
ZTsKK307CisKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogcHJpdmF0ZToKICAgICB0eXBl
ZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gTWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2
YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lczsK
IHB1YmxpYzoKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgPSBkZWZhdWx0OwotICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKSA9IGRlZmF1bHQ7Ci0g
ICAgVmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZh
dWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9y
PShWYXJpYWJsZUVudmlyb25tZW50JiYpID0gZGVmYXVsdDsKKyAgICBWYXJpYWJsZUVudmlyb25t
ZW50KCkgeyB9CisgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYg
b3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwg
bV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAg
ICAgICAsIG1fcmFyZURhdGEoV1RGTW92ZShvdGhlci5tX3JhcmVEYXRhKSkKKyAgICB7CisgICAg
fQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3Ro
ZXIpCisgICAgICAgIDogbV9tYXAob3RoZXIubV9tYXApCisgICAgICAgICwgbV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFy
ZURhdGEob3RoZXIubV9yYXJlRGF0YSA/IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpIDogbnVsbHB0cikKKyAgICB7CisgICAg
fQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmly
b25tZW50JiBvdGhlcik7CiAKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgYmVnaW4o
KSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJh
dG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CkBAIC05OSw3ICsxNDQsOCBAQCBwdWJs
aWM6CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBh
ZGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4g
bV9tYXAuYWRkKGlkZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpIHsgcmV0dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBBTFdBWVNfSU5M
SU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkg
KyBwcml2YXRlTmFtZXNTaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNp
emUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikg
Y29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgcmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpIHsgcmV0dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgTWFwOjppdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KQEAgLTExNiwx
MSArMTYyLDEwNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7IH0KICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiAhbV9tYXAuc2l6ZSgpOyB9CiAKKyAgICB1c2luZyBQcml2YXRlTmFt
ZXNSYW5nZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKKwor
ICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVu
dGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVy
LmltcGwoKSk7IH0KKworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
YXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAg
ICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAg
ICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7
CisgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworICAgIH0KKyAg
ICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpCisgICAgeworICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFt
ZShpZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgbWV0YS5zZXRJc1VzZWQoKTsKKyAgICAgICAg
aWYgKG1ldGEuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgZmluZChpZGVudGlmaWVyKS0+dmFs
dWUuc2V0SXNDYXB0dXJlZCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5h
bWVzUmFuZ2UgcHJpdmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0
aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVy
ZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQocHJpdmF0ZU5hbWVzU2l6ZSgp
ID4gMCk7CisgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBwcml2YXRlTmFtZXNTaXplKCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuY29udGFpbnMoaWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjb3B5UHJpdmF0ZU5hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBpZiAoIW90aGVyLm1fcmFyZURhdGEpCisgICAgICAgICAgICBvdGhlci5tX3Jh
cmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigp
OworICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9y
IChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShl
bnRyeS52YWx1ZS5pc1VzZWQoKSAmJiBlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpKQorICAgICAg
ICAgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoZW50cnku
a2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMoVmFyaWFibGVF
bnZpcm9ubWVudCYgb3V0ZXIpIGNvbnN0IHsKKyAgICAgICAgLy8gVXNlZCBieSB0aGUgUGFyc2Vy
IHRvIHRyYW5zZmVyIHJlY29yZGVkIHVzZXMgb2YgUHJpdmF0ZU5hbWVzIGZyb20gYW4KKyAgICAg
ICAgLy8gaW5uZXIgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBpbnRvIGFuIG91dGVyIG9uZSwgaW4g
Y2FzZSBhIFBORSBpcyB1c2VkCisgICAgICAgIC8vIGVhcmxpZXIgaW4gdGhlIHNvdXJjZSBjb2Rl
IHRoYW4gaXQgaXMgZGVmaW5lZC4KKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDAp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52YWx1ZS5pc0Rl
Y2xhcmVkKCkpCisgICAgICAgICAgICAgICAgICAgIG91dGVyLmdldE9yQWRkUHJpdmF0ZU5hbWUo
ZW50cnkua2V5LmdldCgpKS5zZXRJc1VzZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIHN0cnVjdCBSYXJlRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKKworICAgICAgICBSYXJlRGF0YSgpIHsgfQorICAgICAgICBSYXJlRGF0
YShSYXJlRGF0YSYmIG90aGVyKQorICAgICAgICAgICAgOiBtX3ByaXZhdGVOYW1lcyhXVEZNb3Zl
KG90aGVyLm1fcHJpdmF0ZU5hbWVzKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIFJh
cmVEYXRhKGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBSYXJlRGF0YSYgb3Bl
cmF0b3I9KGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBQcml2YXRlTmFtZXMg
bV9wcml2YXRlTmFtZXM7CisgICAgfTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ2Fj
aGVkVmFyaWFibGVFbnZpcm9ubWVudDsKIAogICAgIE1hcCBtX21hcDsKICAgICBib29sIG1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQgeyBmYWxzZSB9OworCisgICAgUHJpdmF0ZU5hbWVFbnRyeSYgZ2V0
T3JBZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKKyAgICB7CisgICAgICAg
IGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlx
dWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpbXBsLCBQcml2YXRlTmFtZUVudHJ5KDApKS5p
dGVyYXRvci0+dmFsdWU7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ29tcGFjdFZhcmlh
YmxlRW52aXJvbm1lbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCmluZGV4IGJhYjZkNDdhMGE0YTM3MGE3Nzc3ODFmMTk0OTJkMmU4MTU1NDcwYzgu
LmNkY2ExZmQ0OTI5MzkyYThmOTNlNTA1ZDFmOGY2MGE5ZDA2Zjg0NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg0Myw2ICs4NDMsMTIg
QEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmNvZGUoZW5jb2RlciwgeyAq
c291cmNlIH0pOwogICAgIH0KKworICAgIFNvdXJjZVR5cGU8VD4qIGRlY29kZUFzUHRyKERlY29k
ZXImIGRlY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghdGhpcy0+
aXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPnRlbXBsYXRlIGJ1ZmZlcjxUPigpLT5k
ZWNvZGUoZGVjb2Rlcik7CisgICAgfQogfTsKIAogY2xhc3MgQ2FjaGVkU2ltcGxlSnVtcFRhYmxl
IDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gewpAQCAtOTkw
LDIzICs5OTYsNDUgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZElu
aXRpYWxpemVyIDogMTsKIH07CiAKK2NsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJl
RGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3By
aXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAg
IH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1l
bnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5h
bWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitw
cml2YXRlOgorICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJp
bmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0
cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRz
PiBtX3ByaXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQg
OiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoKICAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
JiBlbnYpCiAgICAgewogICAgICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gZW52Lm1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmVuY29kZShlbmNvZGVyLCBlbnYubV9t
YXApOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBlbnYubV9yYXJlRGF0YS5n
ZXQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgZW52KSBjb25zdAogICAgIHsKICAgICAgICAgZW52Lm1faXNFdmVyeXRo
aW5nQ2FwdHVyZWQgPSBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5kZWNv
ZGUoZGVjb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFi
bGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNv
ZGUoZGVjb2RlciwgKmVudi5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0
ZToKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgQ2FjaGVkSGFzaE1hcDxD
YWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBX
VEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBtX21hcDsKKyAg
ICBDYWNoZWRQdHI8Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhPiBtX3JhcmVEYXRh
OwogfTsKIAogY2xhc3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMg
Q2FjaGVkT2JqZWN0PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50PiB7CkBAIC0xMTMzLDYgKzEx
NjEsMjIgQEAgcHJpdmF0ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7CiB9OwogCitjbGFzcyBDYWNo
ZWRTeW1ib2xUYWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZTo6
U3ltYm9sVGFibGVSYXJlRGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0
YSkKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0
YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKSBjb25zdAor
ICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLm1f
cHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFzaFNldDxDYWNo
ZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9w
cml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCkBAIC0xMTQzLDYgKzEx
ODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmVzdGVkTGV4aWNhbFNjb3BlID0gc3ltYm9sVGFi
bGUubV9uZXN0ZWRMZXhpY2FsU2NvcGU7CiAgICAgICAgIG1fc2NvcGVUeXBlID0gc3ltYm9sVGFi
bGUubV9zY29wZVR5cGU7CiAgICAgICAgIG1fYXJndW1lbnRzLmVuY29kZShlbmNvZGVyLCBzeW1i
b2xUYWJsZS5tX2FyZ3VtZW50cy5nZXQoKSk7CisgICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVu
Y29kZXIsIHN5bWJvbFRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIFN5bWJv
bFRhYmxlKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTExNTYsNiArMTIwMSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBzY29wZWRBcmd1bWVu
dHNUYWJsZSA9IG1fYXJndW1lbnRzLmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKHNjb3Bl
ZEFyZ3VtZW50c1RhYmxlKQogICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fYXJndW1lbnRzLnNl
dChkZWNvZGVyLnZtKCksIHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1bWVudHNUYWJsZSk7CisgICAg
ICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxl
LT5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJh
cmVEYXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICpzeW1i
b2xUYWJsZS0+bV9yYXJlRGF0YSk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gc3ltYm9s
VGFibGU7CiAgICAgfQogCkBAIC0xMTY2LDYgKzEyMTYsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6
IDM7CiAgICAgQ2FjaGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50
czsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsK
IH07CiAKIGNsYXNzIENhY2hlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAppbmRleCAzMGI1OGI2YWNkZWNkNThiMDMwN2JkNTI4NDZlYTQ2NTgy
YjliMDlkLi4wNTFlYTdhYTY2ODJkMDhkZGNlMDg3ZjE5Mjk1NDE2M2NiMjlkMTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTc2LDcgKzc2LDcg
QEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChW
TSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKIHsKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hl
VHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKLSAgICAg
ICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWls
dGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2Nr
VHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRy
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRU
eXBlKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlu
a2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVy
cm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwg
ZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJpYWJsZXNVbmRlclREWik7CiAgICAgaWYgKCFy
b290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCBjNjNhMDI5MTEx
NzI5NWQxOTE5YmEyODAyYTJjMzkwYWM1MTY2NzA4Li41Nzc4MDcxYmU0ZWFiM2Y0M2ViOGI4MDdm
YTQ1ZTNiYjZlYzk5ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMiw2ICszMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRF
X05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJp
dmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1lIyNTeW1i
b2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQorI2RlZmluZSBJTklUSUFMSVpFX1BS
SVZBVEVfRklFTERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVGaWVsZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiIyIgI25hbWUpKQogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRl
bnRpZmllcnMoVk0mIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpAQCAtNDUsNiArNDYsNyBA
QCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BF
UlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9L
Tk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCisgICAgSlNDX0NPTU1PTl9JREVOVElGSUVS
U19FQUNIX1BSSVZBVEVfRklFTEQoSU5JVElBTElaRV9QUklWQVRFX0ZJRUxEX05BTUUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCmluZGV4IDQ3MDIwMmY5MTc5MjVkNmQzY2IyYmZmOGI0OWMxZGY5ODJlNzNkZjguLmU0OGFi
MDEzNmMwMTJmYzNkYzcwYTMxZmZjYzg4ZWVjZmExNjI0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjA1LDYgKzIwNSw5
IEBACiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNybyh5ZWFyKQogCisjZGVmaW5lIEpT
Q19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKG1hY3JvKSBcCisgICAgbWFj
cm8oY29uc3RydWN0b3IpCisKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tF
WVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhhd2FpdCkgXAogICAgIG1hY3JvKGJyZWFrKSBcCkBA
IC0zMTksNiArMzIyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0NfQ09NTU9OX1BS
SVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVO
VElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwKIAorI2RlZmlu
ZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMKG5hbWUpIGNvbnN0
IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZUZpZWxkOworICAgICAgICBKU0NfQ09NTU9OX0lERU5U
SUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVf
RklFTERfR0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVM
RF9HTE9CQUwKKwogICAgICAgICBTeW1ib2xJbXBsKiBsb29rVXBQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CiAgICAgICAgIElkZW50aWZpZXIgZ2V0UHVibGljTmFtZShWTSYs
IFN5bWJvbEltcGwqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMmEzM2JkMzM1NmRmY2E5NDQ0YWEwYmVmMmM3
OGVlNjliMmM3MDdkNi4uOGFhNDQ2M2Q4OGYxMjcyMDM2MTZjNmMyOGM2ODcyOGMzNjA2YTI3YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC0xMjk3LDYgKzEyOTcsNzIgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9i
eV92YWxfd2l0aF90aGlzKQogICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHksIHNsb3QpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV92YWxfZGlyZWN0KQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2Rl
ID0gcGMtPmFzPE9wR2V0QnlWYWxEaXJlY3Q+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBH
RVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKworICAgIGlmIChMSUtFTFko
YmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBT
dHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7
CisgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUp
KSB7CisgICAgICAgICAgICBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbVN0cmlu
ZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9tU3RyaW5nKGdsb2JhbE9iamVj
dCk7CisgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgICAgIGlmIChleGlz
dGluZ0F0b21TdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlz
dGluZ0F0b21TdHJpbmcuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklM
RUQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChz
dWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFz
VUludDMyKCk7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29k
ZUJsb2NrKTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0YWRhdGEu
bV9hcnJheVByb2ZpbGU7CisKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgewor
ICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAg
ICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRl
eChnbG9iYWxPYmplY3QsIGkpKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZC
b3VuZHMoKTsKKyAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAg
ICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgICAg
ICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCisgICAgICAgICAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKworICAgICAgICAg
ICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlm
IChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA8IG9i
amVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3Vi
bGU6CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mjk0MAorICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVj
dC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgICAgICBza2lwTWFya2luZ091dE9mQm91
bmRzID0gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1
Y3R1cmUodm0pKSAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFza2lwTWFya2luZ091dE9mQm91bmRz
ICYmICFDb21tb25TbG93UGF0aHM6OmNhbkFjY2Vzc0FyZ3VtZW50SW5kZXhRdWlja2x5KCpvYmpl
Y3QsIGkpKQorICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsK
KyAgICAgICAgfQorCisgICAgICAgIFJFVFVSTl9QUk9GSUxFRChqc1VuZGVmaW5lZCgpKTsKKyAg
ICB9CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3Qp
OworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQu
dG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworCisg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworCisgICAgYm9vbCBmb3VuZCA9IChiYXNlVmFsdWUu
YXNDZWxsKCktPmlzUHJveHkoKSAmJiBwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAg
ID8gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChhc09iamVjdChiYXNlVmFsdWUpLCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9w
ZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgaWYgKCFmb3VuZCAmJiBwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpCisgICAg
ICAgIFRIUk9XKGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOwor
ICAgIFJFVFVSTl9QUk9GSUxFRChmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eSkgOiBqc1VuZGVmaW5lZCgpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1dF9ieV9pZF93aXRoX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYjcxMzVlMmI3ODRhYjY4
ZGI1ZjU1OGZhNzg1MDRjYWIwOTY0M2M2MS4uM2ZkNGE5YjE5NTUxZWZmYTNkOWQ5NjFlMWUwNTA5
MGE2NjY5ZWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKQEAgLTI3Miw2ICsyNzIsNyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9i
eV92YWxfZGlyZWN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lk
X3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxf
d2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFf
cHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAppbmRleCBhZjk4ZDRkMjdiNDFkMTQzMzZhMDIxOGU4MGI3NmNlNGQ4YjQw
YjcyLi5kODFlNTg2NjQxYmQ2ZmMyYmFjZDBmYjQxNzk5MWNiZjE1ZjU5YjIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAt
MzI5LDYgKzMyOSwxNiBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIpOwogfQogCitKU09i
amVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFr
ZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNv
dXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7Cit9CisKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmlu
ZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAg
cmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBy
ZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
VHlwZU5vdGhpbmcpOworfQorCiBFeGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlF
cnJvcihnbG9iYWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCAzNWFkMTI1NTRjNzAxMjdlNGJmYjc1NTFlYmIzYzE3
OGVlYjRjNmUxLi4wMjEzMGFlYmFhMjhiNzdmNzljMTZlMDFmMjk2MzE1NWI4MmE3OWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCkBA
IC01Myw2ICs1Myw4IEBAIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRl
ckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xvCiBKU09iamVjdCogY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0
KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNP
YmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmKTsKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVF
cnJvcihKU0dsb2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVO
YW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uRm9yVmFs
dWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0
aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggYjNjOTgwYTQ2NjJhZWVlYTEyNDBhNTY2YzVkNGExOGE5Mjg3MWY3ZS4uZjU4NDQ3ZGYw
N2YwN2JjNTEzOTM2NDZmODEyZmNhN2Y4YmE0MTc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjk4LDYgKzI5OCwxMiBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHRhcmdldC0+aGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgpKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNy
ZWF0ZVByaXZhdGVTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51
bGxTeW1ib2woKS5nZXQoKSkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJMRUQKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENhbGwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CkBAIC0xMTU0LDYgKzExNjAsMTIgQEAg
Y2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZl
YXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCkpOwogICAgICAgICB9KTsKICNlbmRp
ZiAvLyBFTkFCTEUoSU5UTCkKKworICAgIC8vIFByaXZhdGVTeW1ib2xzIC8gUHJpdmF0ZU5hbWVz
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBT
dHJpbmcoKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbCkpOworICAgICAgICB9KTsKKwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZX1NUUkVBTUlOR19BUEkpCiAgICAg
Ly8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5Q29tcGlsZVN0
cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4
IDZkNWFiNjgyYzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3YzguLjk2YzhkYmQ0MzA2Nzkx
ZTFhNWU2MTE4YTY1MjNlNTRkODNmM2E1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwCkBAIC0zMzksNiArMzM5LDEwIEBAIHZvaWQgSlNTY29wZTo6Y29sbGVj
dENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVmFyaWFibGVFbnZpcm9u
bWVuCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9j
ayk7CiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKGxvY2tlciksIGl0
ZXIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAg
ICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKKyAgICAgICAgaWYgKHN5bWJvbFRhYmxl
LT5oYXNQcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBzeW1i
b2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZh
dGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IGJjNDlkYzk4MmM3MzI4MmJl
ZGViMmIxZGVmYzc2N2E4NWFiMzVhZjkuLjc3OTBjZjU3M2QyNmY5NTJmNDk5OWE1M2YzYzI3NWQ2
NzUxYTNjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAKQEAgLTE4Myw2ICsxODMsMTEgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9u
ZVNjb3BlUGFydChWTSYgdm0pCiAgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRl
cikKICAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fdW5pcXVlVHlwZVNldE1h
cC5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CiAgICAgICAgIH0KKworICAgICAgICB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5h
bWUpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCAxYzM4NmVjNGJmOGY1
NjI5YzE1MTZlNWQ4NDA4YmM0YzA4YjYxMjEwLi44N2I0ZGJiYmEzOGNmMGEyZGVmNDljNmEzZTVm
YmVlZjU3NmU1NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xJbXBsLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NTAsNiArNDUwLDggQEAgcHVibGljOgogICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlwZVNldD4s
IElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IE9mZnNldFRvVmFyaWFibGVN
YXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9FbnRyeVZl
YzsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRp
ZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJh
bmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRv
clJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNTk0LDcg
KzU5NiwyNSBAQCBwdWJsaWM6CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAgICAgYWRkKGxvY2tlciwga2V5LCBzdGQ6OmZvcndhcmQ8RW50cnk+KGVudHJ5
KSk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZXMoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVEYXRhICYmIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsgfQor
ICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlIHByaXZhdGVOYW1lcygp
CisgICAgeworICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFy
ZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAg
ICAgQVNTRVJUKGhhc1ByaXZhdGVOYW1lcygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRv
clJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1lKFVu
aXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgeworICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXkt
PmlzU3ltYm9sKCkpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3Jh
cmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisKKyAgICAg
ICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhrZXkpKTsKKyAg
ICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSk7CisgICAgfQorCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CiAgICAgdm9pZCBzZXQoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwgRW50cnkmJiBlbnRyeSkKICAgICB7CkBA
IC03MTcsMTggKzczNywyMSBAQCBwcml2YXRlOgogICAgIFNjb3BlT2Zmc2V0IG1fbWF4U2NvcGVP
ZmZzZXQ7CiBwdWJsaWM6CiAgICAgbXV0YWJsZSBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsKLXBy
aXZhdGU6Ci0gICAgdW5zaWduZWQgbV91c2VzTm9uU3RyaWN0RXZhbCA6IDE7Ci0gICAgdW5zaWdu
ZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4aWNhbFNjb3Bl
LgotICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsgLy8gU2NvcGVUeXBlCi0gICAgCisKICAg
ICBzdHJ1Y3QgU3ltYm9sVGFibGVSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgVW5pcXVlSURNYXAgbV91bmlxdWVJRE1hcDsKICAgICAg
ICAgT2Zmc2V0VG9WYXJpYWJsZU1hcCBtX29mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgICAgIFVu
aXF1ZVR5cGVTZXRNYXAgbV91bmlxdWVUeXBlU2V0TWFwOwogICAgICAgICBXcml0ZUJhcnJpZXI8
Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKKyAgICAgICAgUHJpdmF0ZU5hbWVTZXQgbV9wcml2YXRl
TmFtZXM7CiAgICAgfTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RF
dmFsIDogMTsKKyAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1m
dW5jdGlvbiBMZXhpY2FsU2NvcGUuCisgICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBT
Y29wZVR5cGUKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW1ib2xUYWJsZVJhcmVEYXRhPiBtX3Jh
cmVEYXRhOwogCiAgICAgV3JpdGVCYXJyaWVyPFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3Vt
ZW50czsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNzk3YmQ3ZTU1YjgwMDMyNzI1YmIxYTQzODU0NjNhYzI2NGIyOGRkMi4uYmYzZDMzY2Yw
ZDdhMWYxZjQ1NmQ2N2U1NTQ2ZTcwZTYxZGRlYjk0ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wMi0w
NSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEFk
ZCBzdXBwb3J0IGZvciBwcml2YXRlIGNsYXNzIGZpZWxkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwYW5kcyB1cG9uIHRoZSBlYXJsaWVyIHB1Ymxp
YyBmaWVsZHMgcGF0Y2gsIGFkZGluZyBhIG51bWJlciBvZiBwcml2YXRlCisgICAgICAgIGZpZWxk
IHRlc3RzLgorCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0
aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2Fj
aGVkLWJ5dGVjb2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtb24tcHJveHkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3Mt
ZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZ2V0LWJ5LXZhbC1k
aXJlY3QtZ2V0cHJpdmF0ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFt
ZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qczogQWRkZWQuCisgICAgICAgICogdGVz
dDI2Mi9jb25maWcueWFtbDoKKwogMjAyMC0wMi0wNCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWth
bGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgUXVhbnRpZmllcnMgYWZ0ZXIgbG9va2FoZWFkIGFz
c2VydGlvbnMgc2hvdWxkIGJlIHN5bnRheCBlcnJvcnMgaW4gVW5pY29kZSBwYXR0ZXJucyBvbmx5
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5j
dGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhlOWFlZDRkMWEzMWJlMGE4MmJjZjA5ODAyMzFmMGJjYmQ1MTBjYzUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1h
cy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
Q2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5l
dyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDcwODY5OGY2NTE5OWU3Njk5MjlkZmQ5ZWQyYTU1YjU2M2FiZTA4NQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5q
cwpAQCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VDbGFzc0ZpZWxk
cz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKK30KKworY2xhc3MgQyB7CisgICAgI2YgPSAzOworCisgICAgbWV0aG9kKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChj
Lm1ldGhvZCgpLCAzKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1vbi1wcm94eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2YwNGU2ZDU0YTY2ZWY1MmJkNWZkMzEzZGI3N2Iz
MjYyY2ZlZTlmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb24tcHJveHkuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAg
IGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9u
IGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0
aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSAr
ICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xl
dCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9u
IChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAg
ICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAg
ICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQg
PSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3Rl
ZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9k
J10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1v
dXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1v
Zi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NDRkNmIyMTNiY2E1ODU5YmViN2MyZWI2MmU0NjhkMmNi
ZTdiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAg
aWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9IGAKK3ZhciBDID0gY2xh
c3MgeworICAgIGFzc2VydE91dE9mTGluZVZhbHVlKCkgeworICAgICAgICBhc3NlcnQodGhpcy4j
ZjIwMCwgImZvbyIpOworICAgIH0KK2A7CisKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkr
KykgeworICAgIGtsYXNzU291cmNlICs9ICIgICAgI2YiICsgaSArICI7XG4iOworfQorCitrbGFz
c1NvdXJjZSArPSAiICAgICNmMjAwID0gXCJmb29cIjtcbn0iOworCitldmFsKGtsYXNzU291cmNl
KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYy5hc3NlcnRPdXRPZkxpbmVWYWx1ZSgpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDY5NmJhY2Nm
OTI3MGNlYWUwZWI5MzI3ZTQwY2QwOTg5OTZhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpAQCAtMCwwICsxLDE1IEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9u
IGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IobWVzc2FnZSk7Cit9CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihp
KSA9PiBpLiNiIik7CisKKyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fz
c2VydChpbnN0LmEoaW5zdCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtc3RyZXNzLWluc3RhbmNlLmpzCmluZGV4IDU2NjI0ZmJlZWRiYjAyOGI5NGUwZDZlNjExZmU0
OTkzNmQyNTI1OGYuLjNjOWI1ODhlYmVjOWY0YjZkMmE2OTFjNGY3ZDZiOGMzNWFkOTMzZWUgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAt
Myw5ICszLDEzIEBACiBjbGFzcyBBIHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9
IDA7CisgICAgI2QgPSAxOwogICAgIGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAg
ICNmID0gZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0g
ZXZhbCgidHJ1ZSIpOworICAgICNpID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZh
bC1kaXJlY3QtZ2V0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0
LWdldHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY3NzhjYWYyZjgzNzc5NGJiZmU0ZmMwYTQ3MGJl
OTQwNzU1Y2NhMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwt
ZGlyZWN0LWdldHByaXZhdGUuanMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNz
RmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdl
dEJ5VmFsRGlyZWN0IHNob3VsZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZl
IHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3ID0gZmFsc2U7Citj
bGFzcyBDIHsKKyAgICAjeCA9IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkg
cmV0dXJuIHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0
aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFn
XSgpIHsgcmV0dXJuICJ3aXRoICN4IjsgfQorfQorCit0cnkgeworICAgIGZvciAoaSA9IDA7IGkg
PCA1MDsgKytpKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQg
PSBDLngoYyk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGkpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke2N9KSB0byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1
bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAo
aSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93
IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHku
anMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3Bl
cnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg0Y2QwMTZhNTUxYWJiNTc4NzdlMmE3NDc1ZjliZTAyNzU2Njkx
MDIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNz
LWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6
IChleHBlY3RlZEVycm9yLCBmdW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBp
bnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUgKyAiIGJ1dCB0aHJv
d3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBbe30uI3hdID0gMTsg
CisgICAgICAgICN4ID0gImZvbyI7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZjk0OTVmOTU2OWQ0
ZjgyMGEzNGQyNWUwNWMxM2ZkZTg5YmZhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8v
IFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5E
ZWZhdWx0KCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmll
bGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQg
d2l0aCAiUHV0QnlWYWxUaHJvd0lmRXhpc3RzIiBzaG91bGQgdGhyb3cgaWYgb3ZlcndyaXRpbmcg
YW4gYWxyZWFkeSBleGlzdGluZyBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBm
YWxzZTsKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8
IDI5ID8gdGhpcyA6IGM7CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4
ID0gaSsrOworICAgIHgoKSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0
cnkgeworICAgIGZvciAobGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9
IG5ldyBDQzsKKyAgICAgICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsK
KyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAz
MCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAg
ICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBl
RXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM5MWZhY2JmNDRj
OGMwNWQ4MTBmZjFmM2ZlY2I4NDVlYzMwZDUwNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwzMSBAQAor
Ly8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1
bk5vSklUKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NG
aWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0QnlWYWxQcml2YXRlTmFtZSIgc2hvdWxkIHRo
cm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9
IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeDsKKyAgICBjb25zdHJ1Y3Rvcigp
IHsgcmV0dXJuIGkgPCAzMCA/IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91
dCAjeCIgfTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4ID0gaSsrOyB9Cisg
ICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giIH0KK30KKwor
dHJ5IHsKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9i
aiA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KG9iaik7CisgICAgICAgIGlmIChy
ZXN1bHQgIT09IGopCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgk
e29ian0pIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNo
IChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIC8vIHJ2YWwgb2YgQXNzaWdubWVudEV4cHJl
c3Npb24gaXMgZXZhbHVhdGVkIGJlZm9yZSBQcml2YXRlRmllbGRGaW5kKCN4LCBscmVmKSBpcyBw
ZXJmb3JtZWQsCisgICAgLy8gdGh1cyBgaWAgaGFzIGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4K
KyAgICBpZiAoaSAhPT0gMzEgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAg
ICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbAppbmRleCAyMzgzNTgxM2JlMzkxZTJhM2I1MDNmMDc4ZjQ4M2FiM2QwYjhkMjI4
Li43NWU0MDhjNjNmY2E2YWUyODE2ZjI5ZGM2ZGM2ZjFjODkzYTUyYzA4IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55
YW1sCkBAIC0zLDYgKzMsNyBAQAogZmxhZ3M6CiAgIEJpZ0ludDogdXNlQmlnSW50CiAgIFdlYWtS
ZWY6IHVzZVdlYWtSZWZzCisgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VDbGFzc0ZpZWxkcwog
ICBjbGFzcy1maWVsZHMtcHVibGljOiB1c2VDbGFzc0ZpZWxkcwogc2tpcDoKICAgZmVhdHVyZXM6
CkBAIC0xMSw3ICsxMiw2IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAgLSBj
bGFzcy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBj
bGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2
YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391161</attachid>
            <date>2020-02-19 07:59:53 -0800</date>
            <delta_ts>2020-02-24 08:02:42 -0800</delta_ts>
            <desc>Patch v9</desc>
            <filename>bug-206431-20200219105952.patch</filename>
            <type>text/plain</type>
            <size>179083</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2OTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
OWY4OTE0MTIyOTU0OWYxMzBlM2Y0NjVmNGUxMTcyZDY5ZDE2OWExLi5iYWZlN2U4NTJhNDVjM2Rk
MzZkMmNjNWE4OTZlNzdkN2YyN2IxMzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzIgQEAKKzIwMjAtMDItMTkgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZGlu
ZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMgcGF0Y2gsIHdlIGltcGxlbWVu
dCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNhbnQgcGFydHMpIG9mIHRoZSBp
bnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvKS4K
KworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBjaGFuZ2VzIGhlcmU6CisKKyAg
ICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUgY29uY2VwdCBvZiBwcml2YXRl
IG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAgICAtIDEgbmV3IG9wY29kZSAo
b3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNvZGUgKG9wX3B1dF9ieV92YWxf
ZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNyZWF0aW5nIFN5bWJvbCBvYmpl
Y3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4cG9zZWQgYXMgYQorICAgICAg
ICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0ZVN5bWJvbCkuCisgICAgICAg
ICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQgYnkgbmFtZSAobm90IGEgdmFs
aWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAgICAgICAgICAgYXJlIGxvYWRl
ZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBtb2Rp
ZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIG9wX3B1dF9ieV92YWxfZGly
ZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0QnlWYWxGbGFncykgd2hpY2gg
YXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBvdmVyd3JpdGluZyBvciBk
ZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVyZW5jZXMgYXJlCisgICAgICAg
IHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAgICAgICAgUHJpdmF0ZSBmaWVs
ZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRoZWlyIHVzZS4gVGhpcyBwcmV2
ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0aGUgc2FtZSBjbGFzcyBzb3Vy
Y2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUgZmllbGRzLCBiZWNhdXNlIHRo
ZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVkIGZyb20gdGhlIGNsYXNzIHNj
b3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBwcm9wb3NhbCB0
ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5IHdlIHVzZSBCeVZhbCBsb29r
dXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAgICBUbyBpbGx1c3RyYXRlLCB0
eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBsaWtlOgorCisgICAgICAgIDxG
aWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVu
dFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUg
ICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3Vu
ZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgZ2V0X2J5
X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHByb2JhYmx5ICd0aGlzJz4sIDxz
eW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAg
ICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAg
ICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYy
NDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4s
IDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3Ro
aXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lPgorCisgICAgICAg
IDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4s
IDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJv
bV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAg
ICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3ltYm9s
PiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlWYWxUaHJvd0lmRXhpc3RzPgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5k
LmguCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5l
cmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpp
bnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXREaXJlY3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHJpdmF0ZUZpZWxkQWRkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcml2YXRlRmllbGRQdXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmFzZURv
dE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6
OmVtaXRQdXRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAgICAg
ICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
UHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSUNT
dGF0cy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdl
bmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjpwdXRCeVZhbEZsYWdzKToKKyAgICAgICAgKEpTQzo6SklUOjpwdXRCeVZhbEZsYWdzPE9w
UHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmlzUHJpdmF0ZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1
bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9k
ZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENo
YXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNl
SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlk
ZW50aWZpZXJTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXhXaXRob3V0Q2xl
YXJpbmdMaW5lVGVybWluYXRvcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6RG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUp
OgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRD
cmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZURvdE5vZGU6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNv
bnN0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVu
dHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZW5zdXJlUHJpdmF0ZU5hbWVV
c2VkKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25z
dCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhh
c1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnVzZVByaXZhdGVOYW1lKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6Y3VycmVudFByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNv
cHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyOjptYXRjaEFuZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9r
ZW5zLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0p
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAgICAgKEpT
Qzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZU5hbWVFbnRyeTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVO
YW1lRW50cnk6OnNldElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNl
dElzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1lbnQpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6Y29weVByaXZhdGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE6OlJhcmVEYXRhKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Z2V0T3JBZGRQcml2YXRlTmFtZSk6
CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hl
ZE9wdGlvbmFsOjpkZWNvZGVBc1B0ciBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFy
aWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRT
eW1ib2xUYWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAg
ICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWRlZmluZWRQcml2
YXRlTmFtZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
UHJpdmF0ZVN5bWJvbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpjb2xs
ZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDItMTggIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIG9zX2xvZyBQcmlu
dFN0cmVhbQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDkxZTQyN2MzMGM1
MTE2M2VkZDlmMTA2ZDQyZjk1ZTA5ZDAyYmU5YzQuLjg2NzcyZmE2YzYyODE5OTZhZTQyMjJkNDgz
MzRiZDg2ZjlkYjk5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUy
OSw2ICs1MjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVS
UwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlv
bi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRlY29kZS9QdXRCeVZhbEZs
YWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0
dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhZjQyYzJhZThmZTU5MmJmNmQ2ODI4NTM4OTc2ZDBjZjZkYTZkYjFmLi4z
MDc1YmZhYTU0ZjBkOGNhMzRiNzQwMmNhZjhjMDVmMzZiNGExY2NjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDcgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRC
OEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5h
bWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkx
NkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAv
KiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdD
NEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00
MDk4LDYgKzQwOTksOCBAQAogCQk4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGgg
PSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRC
ODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRl
cm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
WWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBE
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBD
QjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNDAsNiArODM0
Myw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAq
LywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICov
LAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICovLAor
CQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywKKwkJ
CQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJCTBG
OUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQyMEJG
Njg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FBMjBC
RjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC0xMDA3OSw2ICsxMDA4
NCw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0
dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQdXRC
eUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYz
IC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcw
MDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZD
OEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdC
ODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NmYxYzY5NDg1YzZmY2JlZTQ4N2U1YWM5
ODZjYTQ2MzYzNTNhZWJlLi40MzE0YmUzMWMyZGRiYjk1YWNiYWRkODZmMjQwMDE1MDFhMGQ3OTU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjQsNiArMjY0LDcgQEAgYnl0ZWNv
ZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKK2J5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAog
Ynl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4
IDEwODMwN2YzNjVkODk5OGE1MTI0MDBiNjdlNmZiMDFjMTQwMDc4YzEuLjg0NDA5MjRiYTUxNDA2
YzcwMDZlMzA4ODlkZmViZTBhMjhhNTUyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE2Nyw3ICsxNjcsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFt
aW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5n
SW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIAorICAgIG1h
Y3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVT
eW1ib2wpCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NU
QVRJQ19TWU1CT0xTKG5hbWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xJbXBsOjpT
dGF0aWNTeW1ib2xJbXBsIG5hbWUjI1N5bWJvbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGQzNzIzNmY0MGFhODk5MTI3Yzc0
OWViZGI5ODY5NmM3Nzg1ZDhjYjMuLjAyYzAxYmQ3YzJlOGMyNmE2OTVmOGEzNjZiNjU4YmFjNmM5
Y2ViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
RHVtcGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkludGVycHJldGVySW5saW5l
cy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZs
YWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNsdWRlICJVbmxpbmtlZENv
ZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEyNmEwZjcyNzUzNmYxYmUz
N2M0ZS4uOWE3NDQzYTVkNTc1NTVmYTdjMTA2ZGRiYmJjNmVmMzE0NTgzM2U1NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00Nyw2ICs0
Nyw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3Bl
cnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAg
OlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTQz
LDYgKzU0NCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBH
ZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3ZhbF9kaXJlY3QsCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisg
ICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAg
IGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTY2LDYgKzU3OCw3
IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFncywKICAgICB9LAogICAg
IG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXgg
NjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4uMTVjMTNiZjdhODlmNjdk
Mjg1OWNiY2Y2MTYxYzMzOTA3ODM0YTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMTEsNiArMjExLDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lz
dGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvclN0cnVjdHVyZVBuYW1lLCBl
bnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wRW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51
bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKKyAg
ICBVU0VTKE9wR2V0QnlWYWxEaXJlY3QsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BJbkJ5
VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNv
bnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1
ZSwgcHJvdG90eXBlKQpAQCAtNDE5LDYgKzQyMCw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1
CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRzdCkKICAgICBERUZTKE9wSW5zdGFuY2VvZkN1c3Rv
bSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZhbCwgZHN0KQorICAgIERFRlMoT3BHZXRCeVZhbERp
cmVjdCwgZHN0KQogICAgIERFRlMoT3BUeXBlb2YsIGRzdCkKICAgICBERUZTKE9wSWRlbnRpdHlX
aXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERFRlMoT3BJc0VtcHR5LCBkc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2NjlmN2NhZDg4ODNkZWNmMzUx
MzI3ODQ0OWM4MjRmLi5kNjM4NWIzYmZhZjE4MTE3ZGVlNjIwYzFjMWE3MzRlNTcxMzNmNTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJPcGNvZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURl
cHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCAxYjZlNzI2MjQwOWM4
NTc0MzJkNGIyZmNmYWNmMTdjNzYwZDE3YjY0Li4wMmE2Y2YwNDhkMTI0YTJlOWVlMGI1MzQwMmJk
ZmJkODI0ZTBjNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
aW5rVGltZUNvbnN0YW50LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKICAgICB2KEFycmF5LCBudWxscHRyKSBcCiAgICAgdihhcHBseUZ1bmN0aW9uLCBudWxscHRy
KSBcCiAgICAgdihjYWxsRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGNyZWF0ZVByaXZhdGVT
eW1ib2wsIG51bGxwdHIpCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChu
YW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNzc2YThjY2E4MTExMTg0NzI4ZWZhNjAyNTc1
MTZhOWVkMDQ0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKK3sKKyAgICBDb21tYVByaW50ZXIgY29t
bWEoInwiKTsKKyAgICBpZiAoZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVOYW1lKQorICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJQcml2YXRlTmFtZSIpOworICAgIGlmIChmbGFncyAmIFB1dEJ5VmFs
VGhyb3dJZkV4aXN0cykKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVGhyb3dJZkV4aXN0cyIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4OTViNjc4NjA3YzlhMzA5MDkz
MzcyODE4YzBlOGZmMzdmYWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJs
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBQdXRCeVZhbEZsYWdzIDogaW50MzJfdCB7
CisgICAgUHV0QnlWYWxOb25lID0gMCwKKworICAgIFB1dEJ5VmFsUHJpdmF0ZU5hbWUgPSAxLAor
CisgICAgUHV0QnlWYWxUaHJvd0lmRXhpc3RzID0gMiwKKworICAgIC8vIFRoZSBQcml2YXRlRmll
bGRBZGQgb3BlcmF0aW9uIG11c3QgdGhyb3cgaWYgYW4gZW50cnkgZm9yIHRoZSBwcml2YXRlIHJl
Y29yZCBkb2VzIG5vdCBleGlzdAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZpZWxkQWRkID0gUHV0QnlW
YWxQcml2YXRlTmFtZSB8IFB1dEJ5VmFsVGhyb3dJZkV4aXN0cywKKyAgICBQdXRCeVZhbFByaXZh
dGVGaWVsZFB1dCA9IFB1dEJ5VmFsUHJpdmF0ZU5hbWUsCit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3MpOworCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRL
aW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCmluZGV4IDYx
MTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1YzhhZjY0ODA4MGM0YzYuLjBkMzliMDM1ODk2ZTllZjYx
OTYzNDIzYTYxZTY4MTNlYjgwN2E1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBQ
dXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QgfTsKK2VudW0gUHV0S2luZCB7IERpcmVjdCwgTm90
RGlyZWN0LCBEaXJlY3RBZGRQcml2YXRlLCBEaXJlY3RQdXRQcml2YXRlIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNGRjMGU5MTViYzM4MjMx
OWE5MmE5NjcxYjYzYjI4YjQ3MGRlODEzZC4uZTNmYWRkY2JhOTY2MjVlOWRlNzMyYWRhNDgxN2Ni
MDE1ZTk1NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2soCiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+
cGFyc2VNb2RlKCkpKTsKICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxk
TG9jYXRpb25zID0gZXhlY3V0YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0aW9ucygpOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2Rl
PigKLSAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwg
c3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFi
bGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0
ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFi
bGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFi
bGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxw
dHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFs
Q29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxp
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZmEzYWJiZDExYWRhMTFjZWQ4YWJkN2EwNTVkMjY1
NzkwMWNkZWIyNS4uZmQ4NmQwYzQ2NTYxYWE5YjJhYmMyNzY3YjlhNmE3ZTA4ZTA1OTMwMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKQEAgLTE4NTAsNiArMTg1MCwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJh
dG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCYgbAogCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSA6IFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgICAg
ICBzeW1ib2xUYWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnkua2V5LmdldCgpLCBu
ZXdFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUg
aXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3RoZXJ3aXNlIGl0IGlzbid0
IG5lZWRlZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDY2NjMKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVOYW1l
KCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5Lmtl
eS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFi
bGVzOwpAQCAtMjYzNyw5ICsyNjQyLDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHkpCit7CisgICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBkc3QsIGJh
c2UsIHByb3BlcnR5KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0
OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAgT3BQdXRCeVZhbERpcmVj
dDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsTm9uZSk7CiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNjYxLDYgKzI2NzIsMTggQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVu
c2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0Ojpl
bWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxQcml2YXRlRmllbGRBZGQp
OworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbFByaXZhdGVGaWVsZFB1dCk7CisgICAg
cmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1w
bGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVtaXQodGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJhZTc0YmFmZjU1Yi4uOTY0
M2E4NGJjY2I4MDYwNjM1ZjdmNmM3ZDY2YWIxYzZjNDY5OTc3ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
Nzg2LDExICs3ODYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJl
Z2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEdldEJ5VmFs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJ
bnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQg
aW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3Rl
cklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdp
bigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA2N2Vj
OTZlYzAzMjJkZDZiMzA3Yjc3YWU0YThjYTViMjRjOTUyM2Y1Li4zMWY0NTcxY2M3MWI5ZDYxZjcx
ZDRkODFmNTFhYWY3NGI1MDNkODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NDksOSArNTQ5LDE5IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBmCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3RPckNv
bnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
IGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7Ci0gICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3Ag
anVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KKyAgICAvLyBQcml2YXRlTmFt
ZXMgYXJlIGhvaXN0ZWQgYW5kIHdlIG5lZWQgdG8gZGVjbGFyZSB0aGVtIGJlZm9yZSBjb21wdXRl
ZCBwcm9wZXJ0aWVzIGFyZSBoYW5kbGVkLgogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlz
OwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisgICAgZm9yICg7IHA7IHAgPSBwLT5t
X25leHQpIHsKKyAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6
OlByaXZhdGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZHN0ID0gcC0+bV9u
b2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1
Y3RvcjsKKyAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoZ2VuZXJhdG9yLCBkc3QsICpw
LT5tX25vZGUpOworICAgIH0KKworICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFu
ZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCisgICAgcCA9IHRoaXM7CiAgICAgZm9yICg7
IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBw
LT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9w
ZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAtNzEzLDYgKzcyMywx
OCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVt
aXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAgIGlmIChub2RlLnR5cGUo
KSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Y3JlYXRlUHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxs
cHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgICAgICBD
YWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogc3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkp
LCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50
cywgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVidWdnYWJsZUNhbGw6Ok5v
KTsKKworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFt
ZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29wZVJl
Z2lzdGVyKCksIHZhciwgc3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShub2RlLm1f
YXNzaWduKTsKICAgICBpZiAobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKQogICAgICAgICBlbWl0
UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBuZXdPYmopOwpAQCAtODM3LDE2
ICs4NTksNjYgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAg
ICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5n
ZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9p
ZGVudCk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJh
dG9yLCBmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShmaW5hbERlc3QuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgcmV0dXJuIHJldDsKIH0KIAorUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAg
aWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2Nh
bCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJp
YWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQo
KSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBp
ZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVU
aGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCB0
aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURv
dE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0
b3IsIGRzdCwgYmFzZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6
OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUp
Cit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0
dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UsIHByaXZhdGVOYW1l
LmdldCgpLCB2YWx1ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
eworICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVy
YXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1ZSk7Cit9CisKK1Jl
Z2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdFB1dFByb3BlcnR5
KGdlbmVyYXRvciwgYmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNjM0LDEx
ICsxNzA2LDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0T3B0aW9uYWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwg
c3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgaWYgKGJhc2VJ
c1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50
KTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
OworICAgIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rpb24uZ2V0KCksIGJh
c2UuZ2V0KCkpOwogCiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAgLTE5NTksNiArMjAy
OSwyMiBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3Rh
cnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRvdEFjY2Vzc29yLT5p
c1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZh
dGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNl
LmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVl
ID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdl
dCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFs
dWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZShkc3QsIG9sZFZhbHVlKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFz
ZUlzU3VwZXIpIHsKQEAgLTIxODIsNiArMjI2OCwyMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2Rl
OjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCks
IGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAg
ICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUo
KSkgeworICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAg
VmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0
ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRo
cm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdl
dEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAg
ICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0
KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUodmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVy
biBnZW5lcmF0b3IubW92ZShkc3QsIHByb3BEc3QuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgp
KSB7CiAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CkBAIC0yOTE4
LDExICszMDE5LDcgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9y
Lm1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0
KCkpOwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQs
IGZvcndhcmRSZXN1bHQuZ2V0KCkpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CisgICAg
ZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgZm9yd2FyZFJlc3VsdC5nZXQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LmdldCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3Qs
IGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogfQpAQCAtMjkzNCwyMSArMzAzMSwxMyBAQCBSZWdpc3Rl
cklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9y
LmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBt
X3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhw
cmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7
Ci0gICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlKTsKKwogICAgIFJlZ2lzdGVySUQq
IHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9y
aWdodCwgc3RhdGljX2Nhc3Q8SlNDOjpPcGVyYXRvcj4obV9vcGVyYXRvciksIE9wZXJhbmRUeXBl
cyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkp
KTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1fYmFzZS0+
aXNTdXBlck5vZGUoKSkKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2Uu
Z2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAgICBlbHNl
Ci0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50
LCB1cGRhdGVkVmFsdWUpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGVtaXRQdXRQcm9wZXJ0eShn
ZW5lcmF0b3IsIGJhc2UuZ2V0KCksIHVwZGF0ZWRWYWx1ZSwgdGhpc1ZhbHVlKTsKICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtNDM0Niw2ICs0NDM1LDE3IEBAIHZvaWQgRGVm
aW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdl
bmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxl
IHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTogeworICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm1faWRlbnQpOworICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVz
dCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsg
bV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRBZGQoZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
LCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTogewogICAgICAg
ICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xhc3MgZmllbGRzCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgxYmM5ZDJmMWIxZC4uYTNmMzRmOGM2MjEy
N2M5ZTg2ZDJhMDk1MGMwNTZiZjU5MWQ5ZGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5j
bHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4OGY4ZTFjMmEw
YjY3MGJmOTlmLi41NGRhMzFhZTAwZTAwMmZmNmRjMjQ0MTFkZmQ1NDk2ZWNiNGFkY2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTQs
NiArMjk0LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNv
ZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKIAogICAgIGNhc2Ugb3BfeWllbGQ6
CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25tZW50OgorICAgIGNh
c2Ugb3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6IC8vIEZJWE1FOiBvcF9nZXRfYnlfdmFsX2RpcmVjdCB3
aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRzLgogICAgIGNhc2Ug
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2YWxfcHJvbG9ndWU6CiAg
ICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNjQyYjE2MzU2ZjkwZTlj
Mzg2MDJlYmM1N2ZkOWUwNGEwZjQ1YjUyOC4uNmI0ZTg4NDhlMzBhOWRiZjkxZmIzZjhjOTZmMjQz
MDgyYjgxYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTEzODQ0LDcgKzEzODQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1Zh
bHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2Nr
KCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAgc2NyYXRjaEdQ
UiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtpbmQpOworICAgICAgICBzY3Jh
dGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCwgUHV0QnlWYWxO
b25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDRkMzQyN2JjODJlOGM5
YjI0N2FjODcxYTAyMDAwMWJiMjM4MjlmMjYuLmQxMDlmMjRjYmZiZTc1ODQ0ODJiNzYwYmY2M2Rk
NDcxMDA0Y2VmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTM5ODQsNyArMzk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4
LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgSlNW
YWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3Rlciwg
ZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkg
PT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlWYWxOb25lKTsKIAog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NDFmZGE2ODc2ZTY1
MmM5ODQ2MDFhMmIzYjc5ZDM0Li41MzBmOTdhNzU3YmJhMWEyNmVlZWM5OTAzZjljNTdkYjBlYTU3
MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQwLDYgKzE0
MCw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlk
U3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxG
bGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggNWQzMDkyOGY0YTg1YjRhZGU0NDRjNDNm
NWFkZGYyMzE3ZjQyNjViNy4uY2I0OGFkZmZmMTZkYjYzMjQxYzI1MGQ5NzI4MmRkYTY1NTQ0OTU2
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlz
dCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QpIFwK
ICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KSBcCisg
ICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKSBc
CisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXpl
KSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlk
UmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDA5MWM0Zjc4MmEwNzg0ZmM0NTI1ZWQyMDc5NjljZDFi
Nzg3NDRlODYuLjE5NmM1NTU2NzQ4NGYzNmUxZDkyMWZiYTdhZmRjYmZiZThlYzkwN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9z
Y29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQp
CiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAgICAgICBE
RUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
cHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X3ZhbF93
aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0
aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggN2I0NDA3
NDk2MzMzNmZjYjg5NDFlYmQwNWI1OTczMTI5YTllODY1NS4uMmM5NGEyYWExNTI3MTBhM2RhMDM0
MmYyYjQzOGFmNWZjYTBiMzIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0zOTcsNiAr
Mzk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgog
ICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAorICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KKyAgICAgICAgUHV0QnlWYWxGbGFncyBwdXRCeVZhbEZsYWdzKE9wKTsKKwogICAg
ICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFs
LgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZhbEluZm8qLCBSZWdp
c3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYsIEp1bXBM
aXN0JiBzbG93Q2FzZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDkyMGI3MjAzZTNjZjRiZjA2ZWVkNDU3
M2EzOWNiNTZiY2NhNjVkNWEuLjViYzBmYWE0MjM5NjE1MmI1N2QwYjE3OWNiZjYxNjk4ZTNkYzY1
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMiBAQCB2b2lkIEpJVEdldEJ5SWRXaXRo
VGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklU
UHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBj
b25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBK
U1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2RlIGVjbWFNb2Rl
LCBQdXRLaW5kIHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2lu
ZCwgUHV0QnlWYWxGbGFncyBmbGFncykKICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCiAgICAgICAg
IGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJl
Z2lzdGVycywgYmFzZSwgdmFsdWUpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQogICAgICwg
bV9wdXRLaW5kKHB1dEtpbmQpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQogewogICAgIG1fc3R1Yklu
Zm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsNiArMTUzLDE0IEBA
IHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxl
ciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChVTkxJS0VMWShtX2ZsYWdzICYgUHV0QnlWYWxQ
cml2YXRlTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAg
ICAgICBBU1NFUlQobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKTsKKyAgICAgICAgaWYgKG1fZmxh
Z3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgfQorCiAgICAgaWYgKG1fZWNt
YU1vZGUgPT0gU3RyaWN0TW9kZSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdCkK
ICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKaW5kZXggYmZiOTAyMTZiMjljMjdmZmQwZWQ4ZDdmMGY1ODdlMDhmZTZlNzMxNi4uMTQ4
ZjFiYzliZjBkM2I2MTIzMjljMzQ1NGU0MDhjZDYxZTAyM2QwZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25z
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMx
LDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAg
IENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2
YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHV0QnlWYWxG
bGFncyk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7
CiAgICAgCkBAIC0xNDAsNiArMTQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9k
ZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFB1dEJ5VmFsRmxhZ3Mg
bV9mbGFnczsKIH07CiAKIGNsYXNzIEpJVEluQnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlk
R2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMjNm
ZjVjODFjMWMwMzIyMmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNiNy4uNzM5MTRmNDA5ZmI5MTYzMWY4
NjM3MWFiNGRlYTZkZmMxMzc1YmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKQEAgLTY2Myw2ICs2NjMsMTggQEAgQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2Zp
bGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiAgICAgcmV0dXJu
IGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitBTFdBWVNfSU5MSU5F
IFB1dEJ5VmFsRmxhZ3MgSklUOjpwdXRCeVZhbEZsYWdzKE9wKQoreworICAgIHJldHVybiBQdXRC
eVZhbE5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHV0QnlWYWxGbGFncyBK
SVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkK
K3sKKyAgICByZXR1cm4gb3AubV9mbGFnczsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNl
bmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggZTM2MjY3MzI1Yzc0YWUyMmY4NjE4ZWE5ZTJhZDAwMmU0OGRjNjMzNC4u
OWE3OWU1NDg0MDJmMWM5M2MwZGE2ZThjMjgxOWE4NGZiNzExNzFhYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC02NzgsNiArNjc4LDExMyBAQCB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmpl
Y3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgc2xvdCwgKnN0dWJJ
bmZvLCBEaXJlY3QpOwogfQogCit9IC8vIGV4dGVybiAiQyIKKwordXNpbmcgUHV0UHJpdmF0ZUZp
ZWxkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1
cmUqLCBQdXRQcm9wZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJik+OworQUxXQVlTX0lOTElO
RSBzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQsIEpTVmFsdWUgdmFsdWUsIFB1dEtpbmQgcHV0S2luZCwgY29uc3Qg
UHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJpdmF0ZUZpZWxkQ2FsbGJh
Y2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAgICBB
U1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBBU1NFUlQocHV0S2luZCA9PSBEaXJl
Y3RBZGRQcml2YXRlIHx8IHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0ZSk7CisKKyAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHJvcGVydHlTbG90
IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93
blByb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+aXNQcm94eSgpID8gSlNP
YmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50
LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUgJiYgZm91bmQpCisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZGVmaW5lZFBy
aXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgZWxzZSBpZiAocHV0S2luZCA9PSBE
aXJlY3RQdXRQcml2YXRlICYmICFmb3VuZCkKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IDA7CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVjdCwg
dHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBDb21tb25TbG93UGF0aHM6
OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBpZGVudCwg
dmFsdWUsIHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKHZtLCBj
b2RlQmxvY2ssIHN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitleHRlcm4gIkMiIHsK
Kwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIHVpZCwgdmFsdWUsIERpcmVjdEFkZFBy
aXZhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlw
ZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmpl
Y3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsK
KyAgICBwdXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2Jq
ZWN0LCB1aWQsIHZhbHVlLCBEaXJlY3RBZGRQcml2YXRlLCBbPV0oVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xv
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpP
cGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3Qt
PmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisK
KyAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1Yklu
Zm8tPmFjY2Vzc1R5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChzdHVi
SW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpCisgICAgICAg
ICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwg
c3RydWN0dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RBZGRQcml2YXRlKTsK
KyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgdWlkLCB2YWx1ZSwgRGlyZWN0UHV0UHJpdmF0
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2Ft
cGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworICAg
IHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3Qs
IHVpZCwgdmFsdWUsIERpcmVjdFB1dFByaXZhdGUsIFsmXShWTSYgdm0sIENvZGVCbG9jayogY29k
ZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xh
c3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAg
ICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+
YWNjZXNzVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkKKyAgICAgICAgICAg
IHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1
Y3R1cmUsIGlkZW50LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFB1dFByaXZhdGUpOworICAg
IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cit9CisKIEFMV0FZ
U19JTkxJTkUgc3RhdGljIGJvb2wgaXNTdHJpbmdPclN5bWJvbChKU1ZhbHVlIHZhbHVlKQogewog
ICAgIHJldHVybiB2YWx1ZS5pc1N0cmluZygpIHx8IHZhbHVlLmlzU3ltYm9sKCk7CkBAIC03ODEs
NiArODg4LDE2IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsK
KyAgICBpZiAocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIC8vIFRocm93IGEg
VHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBub24tZXhpc3RlbnQgcHJpdmF0
ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2UgYmVoYXZpb3VyLgorICAgICAg
ICBhdXRvIGJ5dGVjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChieVZhbEluZm8t
PmJ5dGVjb2RlSW5kZXgpLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpOworICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgICAg
IGlmIChmb3VuZCA9PSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3Rz
KSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgZm91
bmQgPyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkgOiBjcmVh
dGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdp
dGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNs
b3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4
IDYyMTBjNWEwNzM0MTk2ODNkNjBlYThjNDhjZDQzZWVmZjgyYTMwMGMuLjQ1YzIzZjBjYWFmNDEy
ZDNkN2VmZmY2NTRmYjM2OTUxYWIxZmYzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlz
dChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVj
dFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
Owordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikg
V1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lO
VEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCBhYmY1MmY3MTNlOGFhMGFmYjVlODA1YzdjZjNmMWQzODgzNzFjMmY2Li4yYjNi
OTllM2Y1YzQ0N2U4OGIzMzhjN2JhNjg2MjI1ODIzMDc2NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEp
LCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtpbmQpOworICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29kZUJsb2NrLT5l
Y21hTW9kZSgpLCBwdXRLaW5kLCBwdXRCeVZhbEZsYWdzKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGVtaXRXcml0ZUJhcnJpZXIoYmFzZSwgdmFsdWUs
IFNob3VsZEZpbHRlckJhc2UpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKQEAgLTU4
Niw3ICs1ODYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCBy
ZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6
IE5vdERpcmVjdCk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlW
YWxOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDVjYzdkZjljNTQxODlj
N2NiM2Q0MDkxYjVjNGY0YzhiZGFlZWYxNGMuLjM1OWM2NTA3MTI5YWU1M2I3NzkwZDcwZDEwMDM3
MzAyMzE1YTVhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzY1LDcgKzM2NSw3IEBAIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8s
IE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2luZCwgcHV0QnlWYWxGbGFn
cyhieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBkb25l
Q2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTU5OSw3ICs1OTksNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAg
IHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGly
ZWN0KTsKKyAgICAgICAgcmVnVDEsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBkaXJlY3QgPyBE
aXJlY3QgOiBOb3REaXJlY3QsIFB1dEJ5VmFsTm9uZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRl
RmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA5MTgyMDQxNTU0YmRjNzZjMTkx
Y2IxMzg1ZDEzYTljODFmZmQ0NWViLi5hMTQxMDVjOTE5ZGNhMWE5OTIzZjU4ZDViYzllMWU0ZTkz
YzgxZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUyMCw2ICs1
MjAsMTAgQEAgc3RhdGljIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBwcm9wcmlhdGVHZW5lcmlj
UHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnQKICAgICBpZiAoc2xvdC5pc1N0cmljdE1v
ZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0g
RGlyZWN0QWRkUHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkQWRk
UHJpdmF0ZVN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0ZSkK
KyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdDsKICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7CiAgICAgfQogICAgIGlmIChwdXRL
aW5kID09IERpcmVjdCkKQEAgLTUzMiw2ICs1MzYsMTAgQEAgc3RhdGljIFZfSklUT3BlcmF0aW9u
X0dTc2lKSkkgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFBy
b3AKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmlj
dE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RBZGRQcml2YXRlKQorICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0aW1pemU7
CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFB1dFByaXZhdGUpCisgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0KQpAQCAtNjI0LDYgKzYzMiw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWlu
PiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0g
Tm90RGlyZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwdXRLaW5kICE9IERpcmVj
dFB1dFByaXZhdGUgJiYgcHV0S2luZCAhPSBEaXJlY3RBZGRQcml2YXRlKTsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFs
T2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2Fj
aGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsK
QEAgLTY0MSw2ICs2NTAsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGlmIChwdXRL
aW5kID09IERpcmVjdEFkZFByaXZhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlk
ZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9
IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJsb2NrLCBnbG9iYWxP
YmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAg
bmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBpZGVudCwgb2Zmc2V0
LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3Rv
dHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xv
dC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAppbmRleCA3MTI1YmQ0ZjUxYWY4MTViOWQ1MDY2MWViN2EzYzI0MWE1YWQ2MDNiLi43NTY4
ZDIzNmQzYWZiNWZjMTRhNjM4NzQ1MTg3NmY4OTkyZjk0NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTks
NiArNTksNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRC
eUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5
VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDIyNTRmY2M0Mjk2MTdjZTgzOTdk
MjRlNTUwZTFhY2VjNjdiNjE0NDMuLjg2OWFiMjZjYjNkOWY5YjFlOTc4YzdhZDcxNjgzZjhiODRj
N2M5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcApAQCAtMTA1OSwxNCArMTA1OSwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsK
ICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAg
Ym9vbCBpc1ByaXZhdGVOYW1lQWNjZXNzID0gYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5VmFsUHJp
dmF0ZU5hbWU7CiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAg
ICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1
ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2
YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNV
SW50MzIoKSkpOworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgICAg
ICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdC5hc1VJ
bnQzMigpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJv
dyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsK
ICAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKKyAgICAgICAgQVNTRVJU
KCFpc1ByaXZhdGVOYW1lQWNjZXNzKTsKICAgICAgICAgZG91YmxlIHN1YnNjcmlwdEFzRG91Ymxl
ID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CiAgICAgICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUlu
dDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1YnNjcmlwdEFzRG91YmxlKTsKICAgICAgICAg
aWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vi
c2NyaXB0QXNVSW50MzIpKSB7CkBAIC0xMDgwLDkgKzEwODMsMTggQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIGlmIChVTkxJS0VMWSh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKKyAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgIGlm
IChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgp
LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1
dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQ
cml2YXRlTmFtZUFjY2VzcykgeworICAgICAgICAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0
ZU5hbWUoKSk7CisgICAgICAgICAgICAvLyBUaHJvdyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5n
IHRvIHN0b3JlIHRvIGEgbm9uLWV4aXN0ZW50IHByaXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxh
ciB0byBhIFREWi1saWtlIGJlaGF2aW91ci4KKyAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkp
OworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
YmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgICAgICAgICBp
ZiAoZm91bmQgPT0gYm9vbChieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3Rz
KSkKKyAgICAgICAgICAgICAgICBMTElOVF9USFJPVyhmb3VuZCA/IGNyZWF0ZVJlZGVmaW5lZFBy
aXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSA6IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVy
cm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICB9CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6
cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA5M2MyOTAyNWIwZDkz
MDVkOTk1NzEwM2UxNjViN2FhODkxNGNiYjFkLi4zNGFlZDJiOTQ3NGY0MGUzYTRkYWM1ODYxMDYx
OWNjMjFlMzE5Mzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTUwOSw2NCArMTUwOSw2OSBAQCBs
bGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQpCiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5hbWUsIG9zckV4aXRQb2ludCkKKyAgICBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgJW9wY29kZVN0cnVjdCUsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgICAgICBtZXRhZGF0YSh0
NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAg
ICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgICAgIGdldChtX3Byb3Bl
cnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMs
IEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6
bV9idXR0ZXJmbHlbdDBdLCB0MworICAgICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0Mgor
ICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cworICAg
ICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMK
KworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgorICAgICAgICBiaWFlcSB0MSwgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3Ro
W3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhd
LCB0MgorICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAg
IGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKKyAg
ICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAg
ICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxl
bmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0
MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93
CisgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAg
ICAgICAgZmQyaWkgZnQwLCB0MSwgdDIKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAg
am1wIC5vcEdldEJ5VmFsTm90RW1wdHkKKworICAgIC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAg
ICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRB
cnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAg
ICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6
dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBsb2Fk
aSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAg
ICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwg
OF0sIHQxCisKKyAgICAub3BHZXRCeVZhbERvbmU6CisgICAgICAgIGdldChtX2RzdCwgdDApCisg
ICAgICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdl
dEJ5VmFsTm90RW1wdHk6CisgICAgICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2
YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1LCB0MiwgdDEpCisgICAgICAgIGRpc3BhdGNo
KCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtZXRhZGF0YSh0
NSwgdDIpCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbW92ZSB0
MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLCB0MiwgdDUsIHQxKQotICAgIGdldChtX3Byb3BlcnR5LCB0MykKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNs
b3cpCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMKLSAgICBhbmRpIElu
ZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFs
SXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxO
b3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNM
ZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2FkaSBUYWdPZmZzZXRbdDMsIHQxLCA4
XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCi0gICAgam1wIC5v
cEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6Ci0gICAgYmluZXEgdDIs
IERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhb
dDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRu
ZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgIyBGSVhNRTogVGhpcyBjb3VsZCBi
ZSBtYXNzaXZlbHkgb3B0aW1pemVkLgotICAgIGZkMmlpIGZ0MCwgdDEsIHQyCi0gICAgZ2V0KG1f
ZHN0LCB0MCkKLSAgICBqbXAgLm9wR2V0QnlWYWxOb3RFbXB0eQotCi0ub3BHZXRCeVZhbE5vdERv
dWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgotICAgIGJpYSB0MiwgU2xvd1B1
dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdwot
ICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUu
bGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2FkaSBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkg
QXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLQot
Lm9wR2V0QnlWYWxEb25lOgotICAgIGdldChtX2RzdCwgdDApCi0gICAgYmllcSB0MiwgRW1wdHlW
YWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93Ci0ub3BHZXRCeVZhbE5vdEVtcHR5OgotICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEpCi0g
ICAgZGlzcGF0Y2goKQorICAgIC5vcEdldEJ5VmFsU2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRo
KHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0Y2goKQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRj
aCgpCisgICAgLm9zclJldHVyblBvaW50OgorICAgICAgICBvc3JFeGl0UG9pbnQoc2l6ZSwgbWV0
YWRhdGEsIHJldHVybikKKyAgICBlbmQpCitlbmQKIAotLm9zclJldHVyblBvaW50OgorZ2V0QnlW
YWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWws
IG1hY3JvKHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJl
dHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRhdGEodDIsIHQzKQogICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjAp
Ci0KIGVuZCkKIAorZ2V0QnlWYWxPcChnZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVj
dCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCwgbWFjcm8oYSwgYiwgYykgZW5kKQogCiBt
YWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQog
ICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRl
eCBiNmVlOTllMzYzYWYxZmZkNDFiOTEyNTQ0YzUwZGU5MmYxYTRmMmQzLi44M2RkZWQyZDdkMTM1
YjY3ZmEwNTdiYzc0NzA1YjQ2NDVkOGZjNTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTQ5MiwxODQgKzE0
OTIsMTg3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlW
YWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNsb3dQYXRoTmFtZSkKKyAgICBsbGludE9w
V2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgJW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgICAgICBtYWNybyBmaW5pc2hH
ZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAgICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gp
CisgICAgICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQorICAgICAgICAg
ICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCB0NSwgcmVzdWx0KQorICAgICAgICAgICAg
ZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKLSAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAg
IGdldChtX2RzdCwgc2NyYXRjaCkKLSAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRj
aCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByZXN1bHQpCi0gICAg
ICAgIGRpc3BhdGNoKCkKLSAgICBlbmQKKyAgICAgICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwo
cmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAgICAgb3JxIG51bWJlclRhZywgcmVzdWx0CisgICAg
ICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAgICAgIGVuZAogCi0g
ICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQotICAgICAgICBvcnEg
bnVtYmVyVGFnLCByZXN1bHQKLSAgICAgICAgZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
KQotICAgIGVuZAorICAgICAgICBtYWNybyBmaW5pc2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNj
cmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQorICAg
ICAgICAgICAgc3VicSBudW1iZXJUYWcsIHNjcmF0Y2gxCisgICAgICAgICAgICBmaW5pc2hHZXRC
eVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNo
RG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIpCi0gICAgICAgIGZkMnEg
cmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdWJxIG51bWJlclRhZywgc2NyYXRjaDEKLSAgICAg
ICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQotICAgIGVuZAorICAgICAgICBt
ZXRhZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jh
c2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAs
IC5vcEdldEJ5VmFsU2xvdykKIAotICAgIGdldChtX2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotCi0gICAgbW92
ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQ
cm9maWxlLCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAg
ICBzeGkycSB0MSwgdDEKLQotICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVy
Zmx5W3QwXSwgdDMsIG51bWJlclRhZykKLSAgICBtb3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCi0K
LSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUs
IC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwg
Lm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAg
IGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQw
KQotICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xv
dwotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgot
ICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFl
cSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAg
ICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlW
YWxTbG93Ci0gICAgZmQycSBmdDAsIHQyCi0gICAgc3VicSBudW1iZXJUYWcsIHQyCi0gICAgam1w
IC5vcEdldEJ5VmFsRG9uZQotICAgIAotLm9wR2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBB
cnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFw
ZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAg
YmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDAp
Ci0gICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0
cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotCi0ub3BHZXRCeVZhbERvbmU6Ci0gICAgc3RvcmVxIHQy
LCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyKQotICAg
IGRpc3BhdGNoKCkKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCiAKLS5v
cEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdl
IGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0
ZSB1cCBmcm9udC4KLSAgICBsb2FkYiBKU0NlbGw6Om1fdHlwZVt0MF0sIHQyCi0gICAgc3ViaSBG
aXJzdFR5cGVkQXJyYXlUeXBlLCB0MgotICAgIGJpYWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlU
eXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRCeVZhbFNsb3cKLSAgICAKLSAgICAjIFN3ZWV0
LCBub3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSB0eXBlZCBhcnJheS4gRG8gc29tZSBiYXNpYyB0
aGluZ3Mgbm93LgorICAgICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAg
ICAgc3hpMnEgdDEsIHQxCiAKLSAgICBpZiBBUk02NEUKLSAgICAgICAgY29uc3QgbGVuZ3RoID0g
dDYKLSAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZm
ZXJWaWV3OjptX2xlbmd0aFt0MF0sIGxlbmd0aAotICAgICAgICBiaWFlcSB0MSwgbGVuZ3RoLCAu
b3BHZXRCeVZhbFNsb3cKLSAgICBlbHNlCi0gICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFy
ZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJl
IG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KLSAgICAgICAgYmlhZXEgdDEsIEpTQXJyYXlC
dWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdwotICAgIGVuZAorICAgICAg
ICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJU
YWcpCisgICAgICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJUYWcKIAotICAgIGxvYWRwIEpTQXJy
YXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzCi0gICAgY2FnZWRQcmltaXRpdmUodDMsIGxl
bmd0aCwgdDAsIHNjcmF0Y2gpCi0KLSAgICAjIE5vdyBiaXNlY3QgdGhyb3VnaCB0aGUgdmFyaW91
cyB0eXBlczoKLSAgICAjICAgIEludDhBcnJheVR5cGUsCi0gICAgIyAgICBVaW50OEFycmF5VHlw
ZSwKLSAgICAjICAgIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSwKLSAgICAjICAgIEludDE2QXJyYXlU
eXBlLAotICAgICMgICAgVWludDE2QXJyYXlUeXBlLAotICAgICMgICAgSW50MzJBcnJheVR5cGUs
Ci0gICAgIyAgICBVaW50MzJBcnJheVR5cGUsCi0gICAgIyAgICBGbG9hdDMyQXJyYXlUeXBlLAot
ICAgICMgICAgRmxvYXQ2NEFycmF5VHlwZSwKLQotICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5Ci0KLSAg
ICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5cGUgLi4gVWludDE2QXJyYXlUeXBlLgotICAg
IGJpYSB0MiwgVWludDhDbGFtcGVkQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9w
R2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJheQotCi0gICAgIyBXZSBoYXZlIG9uZSBvZiBJ
bnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRBcnJheVR5cGUKLSAgICBiaWEgdDIsIEludDhB
cnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVp
bnQ4Q2xhbXBlZEFycmF5Ci0KLSAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2Fk
YnNpIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0
QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRBcnJheToKLSAgICBiaWEgdDIsIFVpbnQ4QXJy
YXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJh
eQotCi0gICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlUeXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0
MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50OENsYW1w
ZWRBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDhDbGFtcGVkQXJyYXlUeXBlLgotICAgIGxvYWRi
IFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlW
YWxJbnQxNkFycmF5T3JVaW50MTZBcnJheToKLSAgICAjIFdlIGhhdmUgZWl0aGVyIEludDE2QXJy
YXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5cGUuCi0gICAgYmlhIHQyLCBJbnQxNkFycmF5
VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDE2QXJyYXkKLQotICAg
ICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4KLSAgICBsb2FkaHNpIFt0MywgdDEsIDJdLCB0MAot
ICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50MTZBcnJheToK
LSAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBlLgotICAgIGxvYWRoIFt0MywgdDEsIDJdLCB0
MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxBYm92ZVVpbnQx
NkFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2YgSW50MzJBcnJheVR5cGUgLi4gRmxvYXQ2NEFy
cmF5VHlwZS4KLSAgICBiaWEgdDIsIFVpbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5
cGUsIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXkKLQotICAgICMgV2UgaGF2
ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWludDMyQXJyYXlUeXBlCi0gICAgYmlhIHQyLCBJ
bnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJy
YXkKLQotICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkaSBbdDMsIHQxLCA0
XSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCi0KLS5vcEdldEJ5VmFsVWludDMy
QXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQzMkFycmF5VHlwZS4KLSAgICAjIFRoaXMgaXMgdGhl
IGhhcmRlc3QgcGFydCBiZWNhdXNlIG9mIGxhcmdlIHVuc2lnbmVkIHZhbHVlcy4KLSAgICBsb2Fk
aSBbdDMsIHQxLCA0XSwgdDAKLSAgICBiaWx0IHQwLCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlz
IGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBpbXBsZW1lbnQgaW4gTExJbnQuCi0gICAgZmluaXNo
SW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFy
cmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2YgRmxvYXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJy
YXlUeXBlLiBTYWRseSwgd2UgY2Fubm90IGhhbmRsZSBGbG9hdDMyQXJyYXkKLSAgICAjIGlubGlu
ZSB5ZXQuIFRoYXQgd291bGQgcmVxdWlyZSBzb21lIG9mZmxpbmVhc20gY2hhbmdlcy4KLSAgICBi
aWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlW
YWxTbG93Ci0KLSAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2FkZCBbdDMs
IHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAg
ZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwgdDEpCi0KLS5vcEdldEJ5VmFsU2xvdzoKLSAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNo
KCkKKyAgICAgICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKKyAgICAgICAgYmllcSB0Miwg
SW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENv
bnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCisKKyAgICAub3BHZXRCeVZh
bElzQ29udGlndW91czoKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFs
U2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkcSBbdDMsIHQxLCA4XSwg
dDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGptcCAub3BHZXRC
eVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEg
dDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAg
ICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9w
R2V0QnlWYWxTbG93CisgICAgICAgIGZkMnEgZnQwLCB0MgorICAgICAgICBzdWJxIG51bWJlclRh
ZywgdDIKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQorICAgICAgICAKKyAgICAub3BHZXRC
eVZhbE5vdERvdWJsZToKKyAgICAgICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAg
ICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwg
Lm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJ
bmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3Qz
XSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRx
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0Miwg
Lm9wR2V0QnlWYWxTbG93CisKKyAgICAub3BHZXRCeVZhbERvbmU6CisgICAgICAgIHN0b3JlcSB0
MiwgW2NmciwgdDAsIDhdCisgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgdDUs
IHQyKQorICAgICAgICBkaXNwYXRjaCgpCiAKLS5vc3JSZXR1cm5Qb2ludDoKLSAgICBnZXR0ZXJT
ZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKLSAgICBtZXRhZGF0
YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIHQ1LCByMCkKLSAgICByZXR1
cm4ocjApCisgICAgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKKyAgICAgICAgIyBGaXJz
dCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMg
ZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KKyAgICAgICAgbG9hZGIgSlNDZWxsOjptX3R5
cGVbdDBdLCB0MgorICAgICAgICBzdWJpIEZpcnN0VHlwZWRBcnJheVR5cGUsIHQyCisgICAgICAg
IGJpYWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BH
ZXRCeVZhbFNsb3cKKyAgICAgICAgCisgICAgICAgICMgU3dlZXQsIG5vdyB3ZSBrbm93IHRoYXQg
d2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBzb21lIGJhc2ljIHRoaW5ncyBub3cuCiAKLWVuZCkK
KyAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAgICBjb25zdCBsZW5ndGggPSB0NgorICAgICAg
ICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3CisgICAgICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVy
Vmlldzo6bV9sZW5ndGhbdDBdLCBsZW5ndGgKKyAgICAgICAgICAgIGJpYWVxIHQxLCBsZW5ndGgs
IC5vcEdldEJ5VmFsU2xvdworICAgICAgICBlbHNlCisgICAgICAgICAgICAjIGxlbmd0aCBhbmQg
c2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVz
ZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMuCisgICAgICAgICAgICBiaWFl
cSB0MSwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93Cisg
ICAgICAgIGVuZAorCisgICAgICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0
MF0sIHQzCisgICAgICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5ndGgsIHQwLCBzY3JhdGNoKQor
CisgICAgICAgICMgTm93IGJpc2VjdCB0aHJvdWdoIHRoZSB2YXJpb3VzIHR5cGVzOgorICAgICAg
ICAjICAgIEludDhBcnJheVR5cGUsCisgICAgICAgICMgICAgVWludDhBcnJheVR5cGUsCisgICAg
ICAgICMgICAgVWludDhDbGFtcGVkQXJyYXlUeXBlLAorICAgICAgICAjICAgIEludDE2QXJyYXlU
eXBlLAorICAgICAgICAjICAgIFVpbnQxNkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBJbnQzMkFy
cmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50MzJBcnJheVR5cGUsCisgICAgICAgICMgICAgRmxv
YXQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBGbG9hdDY0QXJyYXlUeXBlLAorCisgICAgICAg
IGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlW
YWxBYm92ZVVpbnQxNkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlU
eXBlIC4uIFVpbnQxNkFycmF5VHlwZS4KKyAgICAgICAgYmlhIHQyLCBVaW50OENsYW1wZWRBcnJh
eVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEludDE2QXJyYXlPclVpbnQx
NkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50
OENsYW1wZWRBcnJheVR5cGUKKyAgICAgICAgYmlhIHQyLCBJbnQ4QXJyYXlUeXBlIC0gRmlyc3RU
eXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRBcnJheQor
CisgICAgICAgICMgV2UgaGF2ZSBJbnQ4QXJyYXlUeXBlLgorICAgICAgICBsb2FkYnNpIFt0Mywg
dDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRC
eVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5OgorICAgICAgICBiaWEgdDIsIFVpbnQ4
QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRB
cnJheQorCisgICAgICAgICMgV2UgaGF2ZSBVaW50OEFycmF5VHlwZS4KKyAgICAgICAgbG9hZGIg
W3QzLCB0MV0sIHQwCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5v
cEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXk6CisgICAgICAgICMgV2UgaGF2ZSBVaW50OENsYW1w
ZWRBcnJheVR5cGUuCisgICAgICAgIGxvYWRiIFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJ
bnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFy
cmF5OgorICAgICAgICAjIFdlIGhhdmUgZWl0aGVyIEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNs
YW1wZWRBcnJheVR5cGUuCisgICAgICAgIGJpYSB0MiwgSW50MTZBcnJheVR5cGUgLSBGaXJzdFR5
cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQxNkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZl
IEludDE2QXJyYXlUeXBlLgorICAgICAgICBsb2FkaHNpIFt0MywgdDEsIDJdLCB0MAorICAgICAg
ICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQxNkFycmF5
OgorICAgICAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBlLgorICAgICAgICBsb2FkaCBbdDMs
IHQxLCAyXSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9w
R2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgb25lIG9mIEludDMy
QXJyYXlUeXBlIC4uIEZsb2F0NjRBcnJheVR5cGUuCisgICAgICAgIGJpYSB0MiwgVWludDMyQXJy
YXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlPckZs
b2F0NjRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3Ig
VWludDMyQXJyYXlUeXBlCisgICAgICAgIGJpYSB0MiwgSW50MzJBcnJheVR5cGUgLSBGaXJzdFR5
cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQzMkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZl
IEludDMyQXJyYXlUeXBlLgorICAgICAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKKyAgICAgICAg
ZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxVaW50MzJBcnJheToK
KyAgICAgICAgIyBXZSBoYXZlIFVpbnQzMkFycmF5VHlwZS4KKyAgICAgICAgIyBUaGlzIGlzIHRo
ZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNpZ25lZCB2YWx1ZXMuCisgICAgICAg
IGxvYWRpIFt0MywgdDEsIDRdLCB0MAorICAgICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeVZhbFNs
b3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBpbXBsZW1lbnQgaW4gTExJbnQuCisg
ICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsRmxvYXQz
MkFycmF5T3JGbG9hdDY0QXJyYXk6CisgICAgICAgICMgV2UgaGF2ZSBvbmUgb2YgRmxvYXQzMkFy
cmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBTYWRseSwgd2UgY2Fubm90IGhhbmRsZSBGbG9h
dDMyQXJyYXkKKyAgICAgICAgIyBpbmxpbmUgeWV0LiBUaGF0IHdvdWxkIHJlcXVpcmUgc29tZSBv
ZmZsaW5lYXNtIGNoYW5nZXMuCisgICAgICAgIGJpZXEgdDIsIEZsb2F0MzJBcnJheVR5cGUgLSBG
aXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFNsb3cKKworICAgICAgICAjIFdlIGhhdmUg
RmxvYXQ2NEFycmF5VHlwZS4KKyAgICAgICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAorICAgICAg
ICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZmluaXNoRG91Ymxl
R2V0QnlWYWwoZnQwLCB0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNh
bGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3BhdGNoKCkKKworICAgIC5vc3JS
ZXR1cm5Qb2ludDoKKyAgICAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wXyVv
cGNvZGVOYW1lJSwgc2l6ZSkKKyAgICAgICAgbWV0YWRhdGEodDUsIHQyKQorICAgICAgICB2YWx1
ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1LCByMCkKKyAgICAgICAgcmV0dXJuKHIwKQorICAg
IGVuZCkKK2VuZAorCitnZXRCeVZhbE9wKGdldF9ieV92YWwsIE9wR2V0QnlWYWwsIF9sbGludF9z
bG93X3BhdGhfZ2V0X2J5X3ZhbCkKIAorZ2V0QnlWYWxPcChnZXRfYnlfdmFsX2RpcmVjdCwgT3BH
ZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCkKIAogbWFjcm8gcHV0
QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNGM2MTczMGVkZWM4YWRlYmU5NWQ2OWZhYTcwNWVj
MWMyMGJmNWU5OC4uODM1Y2QwMzA4MjkxYTJjODc1ZjI5ZGVkNmIxZGJmNjljYjY3MTYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTI3MCwxMiArMjcw
LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nl
c3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBEb3RUeXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAgaWYgKGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAg
ICAgICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAKLSAgICAgICAgRG90QWNj
ZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9j
YXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJv
cGVydHksIHR5cGUpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwg
ZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAgLTY1MSw2ICs2NTEs
MTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbm9kZS0+aXNBc3NpZ25tZW50TG9jYXRpb24o
KTsKICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKGNvbnN0IEV4cHJlc3Npb24m
IG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS0+aXNQcml2YXRlTG9jYXRpb24oKTsK
KyAgICB9CisKICAgICBib29sIGlzT2JqZWN0TGl0ZXJhbChjb25zdCBFeHByZXNzaW9uJiBub2Rl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGUtPmlzT2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQz
OCwxNSArMTQ0MywxNSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIERvdEFjY2Vzc29y
Tm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVu
Y3Rpb25DYWxsRG90Tm9kZSogbm9kZSA9IG51bGxwdHI7CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VX
YXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFByaXZhdGVOYW1lKCkpKQotICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RT
dGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAgIG5vZGUgPSBu
ZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CiAgICAgZWxzZSBpZiAo
IXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRp
ZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRl
TmFtZSgpKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBi
ZWNhdXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRoZSBieXRlY29kZSBnZW5lcmF0b3IgdG8gaW5saW5l
CiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAgICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNS
ZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5p
ZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQotICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2Fs
bE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwogICAgIH0KICAgICBpZiAoIW5vZGUpCi0gICAg
ICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRp
b24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3Rh
cnQsIGRpdm90RW5kKTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBk
b3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBub2Rl
LT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZz
ZXQpOwogICAgIHJldHVybiBub2RlOwogfQpAQCAtMTU3MSw5ICsxNTc2LDkgQEAgRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHIKICAgICBBU1NFUlQobG9jLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAg
ICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGxv
Yyk7CiAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQp
OworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0
aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBl
eHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CiAKLSAgICBSZWFk
TW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOworICAgIFJlYWRNb2RpZnlEb3RO
b2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlv
biwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgb3AsIGV4cHIs
IGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOwogICAgIG5vZGUtPnNldFN1
YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAg
ICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmlu
ZGV4IDk3Y2FiZTFjMjRjY2E2MTQyNzc2YmNiNjEwYzgyNDA2NjhjMTlkZmEuLjgxMTQ1ZDY3Nzli
NjZjNmVlNzgxZWNiMmNhN2Y0ZTFiNDM2ZDM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCkBAIC05MzksMTQgKzkzOSwxOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6
cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFz
dHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAg
IGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uOwotICAgIGlmIChpc1ByaXZhdGVOYW1lKQorCisgICAgYm9vbCBpc1ByaXZhdGVO
YW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAgICBib29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1cnJl
bnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNCdWlsdGlu
TmFtZSkKICAgICAgICAgc2hpZnQoKTsKICAgICAKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmll
clN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJMaW5l
U3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7Ci0gICAgCisKKyAgICBpZiAoaXNQcml2
YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1
cnJlbnQpKQogICAgICAgICBzaGlmdCgpOwogICAgIApAQCAtOTYxLDExICs5NjUsMTEgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJy
ZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7CiAgICAgICAgIGlkZW50ID0gbWFrZUlk
ZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAgaWYg
KG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewotICAgICAgICAgICAgaWYgKCFpc1NhZmVCdWls
dGluSWRlbnRpZmllcihtX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAg
ICAgIGlmICghaXNTYWZlQnVpbHRpbklkZW50aWZpZXIobV92bSwgaWRlbnQpICYmICFpc0J1aWx0
aW5OYW1lKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJUaGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVp
bHRpbiBmdW5jdGlvbnMuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICBp
ZiAoaXNCdWlsdGluTmFtZSkKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtl
SWRlbnRpZmllcihtX3ZtLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCpp
ZGVudCkpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0ucHJvcGVydHlOYW1l
cy0+dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
Jm1fdm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0ZU5hbWU7CkBAIC05NzYsMjAgKzk4
MCwyMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9y
ZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgIGF1dG8gaWRlbnRUeXBl
ID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CisgICAgaWYgKFVOTElLRUxZ
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4
ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc0J1aWx0aW5OYW1lKSB7CiAgICAg
ICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmlu
ZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSog
ZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwogICAgICAgICAgICAgQVNTRVJU
KChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgfHwgIWVudHJ5KTsKICAgICAgICAgICAgIGlm
ICghZW50cnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICAgICAgICAg
IHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRp
Y19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJl
dHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4g
OiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNU
KSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBpZGVudFR5cGU7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIElERU5UOworICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgIH0KIAotICAgIHJl
dHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQogCiB0ZW1wbGF0ZSA8PgpAQCAt
MTAwNCwyMyArMTAwOSwyNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVy
PiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICAgICAg
cmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURF
TlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNQcml2YXRl
TmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwotICAg
IGlmIChpc1ByaXZhdGVOYW1lKQorCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50
ID09ICcjJzsKKyAgICBib29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKyAgICBpZiAoaXNCdWlsdGluTmFtZSkKICAgICAgICAg
c2hpZnQoKTsKIAogICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291
cmNlUHRyKCk7CiAgICAgaW50IGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0
T2Zmc2V0KCk7CiAKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKLSAgICAKKworICAgIGlmIChp
c1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0
KG1fY3VycmVudCkpIHsKICAgICAgICAgb3JBbGxDaGFycyB8PSBtX2N1cnJlbnQ7CiAgICAgICAg
IHNoaWZ0KCk7CiAgICAgfQogICAgIAogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gJ1xc
JykpIHsKLSAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lKTsKKyAgICAgICAgQVNTRVJUKCFp
c0J1aWx0aW5OYW1lKTsKICAgICAgICAgc2V0T2Zmc2V0RnJvbVNvdXJjZVB0cihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMaW5lU3RhcnQpOwogICAgICAgICByZXR1cm4gcGFyc2VJZGVudGlm
aWVyU2xvd0Nhc2U8c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4odG9rZW5EYXRhLCBsZXhlckZsYWdz
LCBzdHJpY3RNb2RlKTsKICAgICB9CkBAIC0xMDM5LDExICsxMDQ4LDExIEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8VUNoYXI+OjpwCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGlkZW50ID0gbWFrZUlkZW50
aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKICAgICAgICAgaWYgKG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewotICAgICAgICAgICAgaWYgKCFpc1NhZmVCdWlsdGlu
SWRlbnRpZmllcihtX3ZtLCBpZGVudCkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgICAg
IGlmICghaXNTYWZlQnVpbHRpbklkZW50aWZpZXIobV92bSwgaWRlbnQpICYmICFpc0J1aWx0aW5O
YW1lKSB7CiAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJU
aGUgdXNlIG9mICciLCBpZGVudC0+c3RyaW5nKCksICInIGlzIGRpc2FsbG93ZWQgaW4gYnVpbHRp
biBmdW5jdGlvbnMuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICAgICBpZiAo
aXNCdWlsdGluTmFtZSkKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRl
bnRpZmllcihtX3ZtLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmxvb2tVcFByaXZhdGVOYW1lKCppZGVu
dCkpOwogICAgICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+
dW5kZWZpbmVkS2V5d29yZCkKICAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gJm1f
dm0ucHJvcGVydHlOYW1lcy0+dW5kZWZpbmVkUHJpdmF0ZU5hbWU7CkBAIC0xMDU0LDcgKzEwNjMs
NyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRh
dGEtPmlkZW50ID0gbnVsbHB0cjsKICAgICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8
IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25v
cmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAoVU5MSUtFTFko
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhl
ckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAg
ICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5n
IDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBl
bnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CkBAIC0xMDc0LDggKzEwODMsMTMg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBKU1Rva2VuVHkKIHsKICAgICB0b2tlbkRhdGEtPmVzY2FwZWQgPSB0
cnVlOwogICAgIGF1dG8gaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworICAg
IGJvb2wgaXNQcml2YXRlTmFtZSA9ICppZGVudGlmaWVyU3RhcnQgPT0gJyMnOworICAgIGF1dG8g
aWRlbnRUeXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CiAgICAgYm9v
bCBidWZmZXJSZXF1aXJlZCA9IGZhbHNlOwogCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAg
ICAgIHNoaWZ0KCk7CisKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBpZiAoTElLRUxZKGlz
SWRlbnRQYXJ0KG1fY3VycmVudCkpKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwpAQCAtMTA5NSw3
ICsxMTA5LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKU1Rva2VuVHkKICAgICAgICAgYXV0byBjaGFyYWN0
ZXIgPSBwYXJzZVVuaWNvZGVFc2NhcGUoKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFjaGFyYWN0
ZXIuaXNWYWxpZCgpKSkKICAgICAgICAgICAgIHJldHVybiBjaGFyYWN0ZXIuaXNJbmNvbXBsZXRl
KCkgPyBVTlRFUk1JTkFURURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSyA6IElO
VkFMSURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSzsKLSAgICAgICAgaWYgKFVO
TElLRUxZKG1fYnVmZmVyMTYuc2l6ZSgpID8gIWlzSWRlbnRQYXJ0KGNoYXJhY3Rlci52YWx1ZSgp
KSA6ICFpc0lkZW50U3RhcnQoY2hhcmFjdGVyLnZhbHVlKCkpKSkKKyAgICAgICAgYm9vbCBpc0lk
ZW50aWZpZXJTdGFydCA9IGlzUHJpdmF0ZU5hbWUgPyBtX2J1ZmZlcjE2LnNpemUoKSA9PSAxOiAh
bV9idWZmZXIxNi5zaXplKCk7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0lkZW50aWZpZXJTdGFy
dCA/ICFpc0lkZW50U3RhcnQoY2hhcmFjdGVyLnZhbHVlKCkpIDogIWlzSWRlbnRQYXJ0KGNoYXJh
Y3Rlci52YWx1ZSgpKSkpCiAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9JREVOVElGSUVSX1VO
SUNPREVfRVNDQVBFX0VSUk9SVE9LOwogICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmll
cikKICAgICAgICAgICAgIHJlY29yZFVuaWNvZGVDb2RlUG9pbnQoY2hhcmFjdGVyLnZhbHVlKCkp
OwpAQCAtMTEyNCwxMyArMTEzOSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5UeQogICAgICAg
ICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlm
ICghZW50cnkpCi0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4g
aWRlbnRUeXBlOwogICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9r
ZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNF
UlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gYnVmZmVy
UmVxdWlyZWQgPyBVTkVYUEVDVEVEX0VTQ0FQRV9FUlJPUlRPSyA6IHRva2VuOwogICAgIH0KIAot
ICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQogCiBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGNoYXJhY3RlclJlcXVpcmVzUGFyc2VTdHJpbmdTbG93Q2FzZShMQ2hh
ciBjaGFyYWN0ZXIpCkBAIC0yNDA4LDE0ICsyNDIzLDIxIEBAIHN0YXJ0OgogICAgICAgICBtX2hh
c0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4gPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9
IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKLSAgICBjYXNlIENoYXJhY3Rlckhhc2g6Cisg
ICAgY2FzZSBDaGFyYWN0ZXJIYXNoOiB7CiAgICAgICAgIC8vIEhhc2hiYW5nIGlzIG9ubHkgcGVy
bWl0dGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgc291cmNlIHRleHQuCi0gICAgICAgIGlmIChwZWVr
KDEpID09ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7CisgICAgICAgIGF1dG8gbmV4dCA9IHBl
ZWsoMSk7CisgICAgICAgIGlmIChuZXh0ID09ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7CiAg
ICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIGdv
dG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKICAgICAgICAgfQorICAgICAgICAvLyBPdGhlcndpc2Us
IGl0IGNvdWxkIGJlIGEgdmFsaWQgUHJpdmF0ZU5hbWUuCisgICAgICAgIGlmIChPcHRpb25zOjp1
c2VDbGFzc0ZpZWxkcygpICYmIChpc0lkZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkg
eworICAgICAgICAgICAgbGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5
d29yZHMpOworICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAg
IGdvdG8gaW52YWxpZENoYXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRl
SWRlbnRpZmllclN0YXJ0OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQog
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBmZDk3YTBjYTkzNWU3ZTU3NzhhMDkzODUw
MjJmOTg2NzgwMTRhMzI0Li4wNmU2MDJhN2JkYTcyYmIyODIxOThmMjk3ZDgzYTQxYWE4ZTUxMjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aApAQCAtMzI3LDEwICszMjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpCisgICAgaW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQor
ICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNj
ZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBl
IHR5cGUpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBl
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rp
b25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rp
b25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1l
bnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAg
ICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAg
LCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
Ci0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAg
ICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQpAQCAtNDM3LDE0ICs0NDEsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBB
cmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBB
cmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxs
T3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RD
YWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNl
LCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBB
cHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9z
dENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJh
c2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAg
ICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9z
dENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CkBAIC03NTAsMjEgKzc1NCwxNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2ln
bkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBc3Np
Z25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0
eXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2Rl
KGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJh
c2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQog
ICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBp
bmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRG90VHlwZSB0eXBlLCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwg
dHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RT
dGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVu
dChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fb3BlcmF0b3Io
b3BlcikKICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggOWQxY2ZhNGYxNzYx
MzAyYTMzYmJhZTMxZWY2MGZkZmNhZjIwN2RmNS4uMTFiZjRhNjg0YTFiZDlhMDkzZWI4ZWIxNmUx
ZTEzNzI2NjIwZDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAg
LTMzNSw3ICszMzUsNyBAQCBib29sIFByb3BlcnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1l
ZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1lKQogYm9vbCBQcm9wZXJ0eUxpc3RO
b2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyhQcm9wZXJ0eUxpc3ROb2RlKiBs
aXN0KQogewogICAgIHdoaWxlIChsaXN0KSB7Ci0gICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlz
Q29tcHV0ZWRDbGFzc0ZpZWxkKCkpCisgICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0
ZWRDbGFzc0ZpZWxkKCkgfHwgbGlzdC0+bV9ub2RlLT5pc1ByaXZhdGUoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBsaXN0ID0gbGlzdC0+bV9uZXh0OwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA0OWFhYzQ3MzU4MDcwZTNmMzhiNzhjMjEy
ZjAyMzI5MTM1YTk2ZmJhLi4yNjNmNjVmZDJlNjJlZDBhOThhYmM5OGRkNDU1ZmEwYzQ2MzcwZThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODIsNiArMTgyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5l
cmF0b3ImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBp
c0xvY2F0aW9uKCk7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25SZXNvbHZl
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03MTIsNyArNzEzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8s
IEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmlu
YWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBl
bnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0
LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiB9OworICAgICAgICBl
bnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0
LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0
IH07CiAgICAgICAgIGVudW0gUHV0VHlwZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVj
dCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lv
bk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBA
IC03MzEsNiArNzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0Zp
ZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5k
aW5nKCk7IH0KICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0K
ICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRlOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWRO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21w
dXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21w
dXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkg
eyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzQxLDcgKzc0Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNjsKKyAgICAgICAgdW5zaWdu
ZWQgbV90eXBlIDogNzsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7
CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQo
MSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyks
ICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKQEAg
LTgxMyw5ICs4MTUsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3Jp
cHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgeworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVOYW1lIH07CisgICAg
Y2xhc3MgQmFzZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEJhc2VEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgRG90VHlwZSk7CisKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2Jhc2U7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KKyAgICAgICAgRG90VHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQorCisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpOworCisgICAgcHJvdGVjdGVkOgorICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBt
X2lkZW50OworICAgICAgICBEb3RUeXBlIG1fdHlwZTsKKyAgICB9OworCisgICAgY2xhc3MgRG90
QWNjZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgRG90VHlwZSk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTgyNCwxMCArODQ3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0xvY2F0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0
ZUxvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlBy
aXZhdGVOYW1lOyB9CiAgICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsK
LSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwogCiAgICAgY2xhc3Mg
U3ByZWFkRXhwcmVzc2lvbk5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC05NDAsOSArOTYxLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9Owog
Ci0gICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBGdW5jdGlvbkNh
bGxEb3ROb2RlIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OworICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRz
Tm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtOTUwLDggKzk3MSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1
bWVudHNOb2RlKiBtX2FyZ3M7CiAgICAgfTsKIApAQCAtOTg4LDcgKzEwMDcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVi
bGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5
KTsKKyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1
bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3Qg
ZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CkBAIC05OTcsNyArMTAxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5j
dGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAg
ICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNO
b2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFu
Y2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CkBAIC0xNDMyLDI4ICsxNDUxLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFz
c2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1Ymxp
YyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAg
ICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIFJl
YWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZp
bmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVy
YXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIFJlYWRNb2RpZnlE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgRG90VHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lk
ZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgdW5zaWduZWQg
bV9vcGVyYXRvciA6IDMxOwogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7
CkBAIC0yMjM2LDcgKzIyNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlZmlu
ZUZpZWxkTm9kZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5hbWUsIENvbXB1dGVkTmFtZSB9OworICAgICAgICBl
bnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSwgQ29tcHV0ZWROYW1lIH07CiAgICAg
ICAgIERlZmluZUZpZWxkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyKiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMmExOTFjODU2MGM0ZTg3MzgwMTNlZjM1
YWVmZjJiY2M2N2VmYWQwZi4uZTI1YmY1NmRlOGY3YjJjNTljMWRkZDI3YjQ2ZWMzNjAzNzA1ZDMw
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODIwLDYgKzgy
MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5v
ZGUgPSAwOwogICAgICAgICBkZWNsYXJhdGlvbnMrKzsKICAgICAgICAgYm9vbCBoYXNJbml0aWFs
aXplciA9IGZhbHNlOworCisgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAi
Q2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSB0byBkZWNsYXJlIGEgdmFyaWFibGUiKTsKICAgICAg
ICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgZmFpbElmVHJ1ZSht
YXRjaChMRVQpICYmIChkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNs
YXJhdGlvbiB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xh
cmF0aW9uKSwgCiAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRp
ZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMTI3OCw2ICsxMjgwLDgg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGUKICAgICAgICAgICAgIGlmIChraW5kID09IERlc3Ry
dWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoZGVzdHJ1
Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2luZE5hbWUoa2luZCkpOworICAgICAgICAgICAgaWYgKGtp
bmQgIT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKQorICAgICAg
ICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHBy
aXZhdGUgbmFtZSBhcyBhICIsIGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtp
bmQpKTsKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIg
cGF0dGVybiBvciBhICcpJyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwogICAgICAgICB9CiAgICAgICAg
IGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVz
dHJ1Y3R1cmVUb0xldCB8fCBraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRv
Q29uc3QpLCAiQ2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4
aWNhbERlY2xhcmF0aW9uIik7CkBAIC0yOTM4LDYgKzI5NDIsMTkgQEAgcGFyc2VNZXRob2Q6CiAg
ICAgICAgICAgICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBwYXJz
ZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0aW9u
T3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUi
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CisgICAg
ICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSk7CisgICAgICAgICAgICBK
U1Rva2VuIHRva2VuID0gbV90b2tlbjsKKyAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CisgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6
OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CisgICAg
ICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNs
YXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgQVNTRVJUKGlkZW50
KTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRV
cGRhdGUoT1BFTlBBUkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGgg
cHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29w
ZS0+ZGVjbGFyZVByaXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxp
ZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2lj
ZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4o
dHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYg
S2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKQEAg
LTI5NTMsOCArMjk3MCwxMCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZhbHNl
KHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBp
ZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzR2V0dGVyICYmICFpc1Nl
dHRlcik7Ci0gICAgICAgICAgICBpZiAoaWRlbnQpCisgICAgICAgICAgICBpZiAoaWRlbnQpIHsK
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFt
ZXMuY29uc3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBjbGFzcyBmaWVsZCBuYW1lZCAnY29uc3Ry
dWN0b3InIik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBw
cm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yUHJpdmF0ZUZpZWxkLCAiQ2Fubm90IGRlY2xhcmUgcHJp
dmF0ZSBjbGFzcyBmaWVsZCBuYW1lZCAnI2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAg
ICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRl
bnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKQEAgLTMwMTgsNiArMzAzNywxMCBA
QCBwYXJzZU1ldGhvZDoKICAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRP
ZmZzZXQgLSAxOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xv
c2luZyAnfScgYWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2xh
c3NGaWVsZHMoKSkgeworICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJp
dmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1l
cy4KKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1l
c1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFt
ZXMiKTsKKyAgICB9CiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNs
YXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJv
bm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAgICBw
b3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsK
ICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtMzA0MSw2ICszMDY0LDkgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0
eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewor
ICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxk
Tm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAg
ICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5d29y
ZDoKQEAgLTMwODAsNiArMzEwNiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAg
IGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZpbmVG
aWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3BlKCkt
PnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBkZWZp
bmVGaWVsZCA9IGNvbnRleHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRlbnQs
IGluaXRpYWxpemVyLCB0eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291
cmNlRWxlbWVudHMsIGRlZmluZUZpZWxkKTsKICAgICB9CkBAIC00NzcyLDYgKzQ4MDEsMjIgQEAg
c3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSosIFZN
JiwgT3B0aW9uYWw8dHlwZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KK2Jvb2wgUGFyc2VyPExleGVyVHlwZT46OmVuc3VyZVByaXZhdGVOYW1lVXNlZChjb25z
dCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5j
dGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgZm91bmQgPSBmYWxzZTsK
KyAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFByaXZhdGVOYW1lU2NvcGUoJmZvdW5kKTsK
KyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjdXJyZW50
LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICBjdXJyZW50LT51c2VQcml2YXRlTmFt
ZSgqaWRlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CkBAIC00ODg3LDYgKzQ5MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogCiAg
ICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQp
OwogICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1h
dGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBpZGVudGlmaWVycyBpbiBh
biBvcHRpb25hbCBjaGFpbiIpOwogICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFDS0VUKSB8
fCBtYXRjaChPUEVOUEFSRU4pIHx8IG1hdGNoKEJBQ0tRVU9URSkpCiAgICAgICAgICAgICAgICAg
dHlwZSA9IG1fdG9rZW4ubV90eXBlOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00OTc0LDggKzUw
MjAsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBtX3BhcnNl
clN0YXRlLm5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgICAgICBKU1Rl
eHRQb3NpdGlvbiBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAgICAg
ICAgICAgICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5
d29yZHMgfCBMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAg
ICAgICAgICAgIGF1dG8gdHlwZSA9IERvdFR5cGU6Ok5hbWU7CisgICAgICAgICAgICAgICAgaWYg
KG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQp
OworICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90IGFj
Y2VzcyBwcml2YXRlIG5hbWVzIGZyb20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGN1cnJlbnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFsQ29udGV4
dFR5cGU6Okluc3RhbmNlRmllbGRFdmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFtZSgqaWRl
bnQpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIsIGlkZW50
LT5pbXBsKCksICInIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2Uo
ZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0ZSBu
YW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyU3Rh
dGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRT
Y29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0
eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4u
bV90eXBlID0gSURFTlQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNo
T3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFs
Q2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250
ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5p
ZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkp
OworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExv
Y2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5k
LCB0b2tlbkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShiYXNl
SXNTdXBlciAmJiBjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25V
c2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxNzAsNiAr
NTIyOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChj
b250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVy
dHkgJyIsIG1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3RyaWN0
IG1vZGUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJpdmF0
ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFyc2Vy
U3RhdGUubGFzdFByaXZhdGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNr
TGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgpAQCAtNTI0MCw3ICs1MzAwLDExIEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRv
a2VuVGV4dChXCiAgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAgICAg
ICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsK
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1FOgor
ICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2VuKCkp
OworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6CiAg
ICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAi
JyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzllYTA5NjZkYjYy
NDU5NGYyYWMyYzM4Y2Y4NGJjM2JjMzZlYzM1ZC4uNWJjNDYzMDdhMjUxMzEwMWQyZjFhODliNWVk
MmZkZTJhZTYyMGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0x
ODEsNiArMTgxLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQog
ICAgICAgICAsIG1faXNFdmFsQ29udGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hhc05vblNpbXBs
ZVBhcmFtZXRlckxpc3QoZmFsc2UpCisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1lU2NvcGUoZmFs
c2UpCiAgICAgICAgICwgbV9pc0NsYXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9ldmFsQ29u
dGV4dFR5cGUoRXZhbENvbnRleHRUeXBlOjpOb25lKQogICAgICAgICAsIG1fY29uc3RydWN0b3JL
aW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpAQCAtMjg5
LDYgKzI5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnkoKSBjb25z
dCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5bmNGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0Fz
eW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uQm91
bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNQcml2YXRlTmFtZVNjb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25zdCB7
IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA1LDggKzMwNywxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQogCisgICAg
dm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pc1ByaXZhdGVO
YW1lU2NvcGUgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3BlKCkKICAg
ICB7CisgICAgICAgIHNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBtX2lzQ2xhc3NT
Y29wZSA9IHRydWU7CiAgICAgfQogCkBAIC00NzEsNyArNDc5LDQ0IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuZ2V0KCkp
OwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmhhc1By
aXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzKFNjb3BlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy5j
b3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMpOworICAg
IH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCkg
PiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJsZXMu
cHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2Vk
KCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsK
KyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9
CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERl
Y2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNs
YXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2Fs
VmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICghYWRkUmVz
dWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6
OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQYXJh
bWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTgzNCw2ICs4NzksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9oYXNBcmd1bWVudHM7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAgYm9vbCBt
X2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5hbWVTY29w
ZTsKICAgICBib29sIG1faXNDbGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlwZSBtX2V2YWxD
b250ZXh0VHlwZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAgLTkwNSw3ICs5
NTEsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBh
cnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVy
cm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQs
IE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9
IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25z
dCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8
aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxs
b3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxK
U1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFz
dFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpA
QCAtMTE3OCw2ICsxMjI0LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29wZVJlZigm
bV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBTY29wZVJlZiBjdXJyZW50UHJpdmF0ZU5h
bWVTY29wZShib29sICpmb3VuZCA9IDApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0gbV9z
Y29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNp
emUoKSk7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFt
ZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAg
ICAgICpmb3VuZCA9IG1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAg
ICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wg
Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFtX3Njb3BlU3RhY2suaXNFbXB0eSgpKTsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVu
dCA9IGN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBjdXJy
ZW50LmluZGV4KCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlz
UHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlmICghaSkK
KyAgICAgICAgICAgIHJldHVybiAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRl
TmFtZXMoKTsKKworICAgICAgICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyht
X3Njb3BlU3RhY2tbaV0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBTY29w
ZVJlZiBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CkBAIC0xNDUy
LDYgKzE1MjQsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1f
dHlwZSA9PSBleHBlY3RlZDsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hB
bmRVcGRhdGUoSlNUb2tlblR5cGUgZXhwZWN0ZWQsIGNvbnN0IEpTVG9rZW4mIHRva2VuKQorICAg
IHsKKyAgICAgICAgaWYgKG1hdGNoKGV4cGVjdGVkKSkgeworICAgICAgICAgICAgbV90b2tlbiA9
IHRva2VuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaENv
bnRleHR1YWxLZXl3b3JkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewpAQCAt
MTcwMiw2ICsxNzg0LDggQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChUcmVlQnVp
bGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBlbnN1cmVQ
cml2YXRlTmFtZVVzZWQoY29uc3QgSWRlbnRpZmllciopOworCiAgICAgQUxXQVlTX0lOTElORSBp
bnQgaXNCaW5hcnlPcGVyYXRvcihKU1Rva2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1dG9tYXRp
Y1NlbWljb2xvbigpOwogICAgIApAQCAtMTc5Niw2ICsxODgwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgRnVuY3Rpb25QYXJzZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9uUGFyc2VQ
aGFzZTo6Qm9keSB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRpZmllciB7
IG51bGxwdHIgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSB7
IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdFByaXZhdGVOYW1lIHsg
bnVsbHB0ciB9OwogICAgICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAgICAgIGJv
b2wgaXNQYXJzaW5nQ2xhc3NGaWVsZEluaXRpYWxpemVyIHsgZmFsc2UgfTsKICAgICB9OwpAQCAt
MTk0NSw3ICsyMDMwLDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElk
ZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdD
b250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQ
YXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2Fs
bGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2lu
Z0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNv
bnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7CiAg
ICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTE5NjAsNiArMjA0NSwxMSBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBh
cnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1
bW4oKSA+IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKKyAgICBp
ZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHZhcmlhYmxlc1VuZGVyVERaICYmIHZhcmlh
Ymxlc1VuZGVyVERaLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICAgICAgY3VycmVudFNjb3Bl
KCktPnNldElzUHJpdmF0ZU5hbWVTY29wZSgpOworICAgICAgICB2YXJpYWJsZXNVbmRlclREWi0+
Y29weVByaXZhdGVOYW1lcyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAg
ICB9CisKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJz
ZU1vZGUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0g
bV9sZXhlci0+bGluZU51bWJlcigpOwpAQCAtMjA0NCw2ICsyMTM0LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29u
dGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBl
IGV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBh
cnNlRGF0YSogZGVidWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBjb25zdCBWZWN0
b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVsbHB0cikKIHsK
ICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CkBAIC0y
MDU1LDcgKzIxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3Zp
ZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+
IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwg
cGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZl
bEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwg
ZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSk7Ci0gICAgICAgIHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2Rl
PFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQ
cm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAgICBy
ZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwg
aXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5n
Q29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5zdGFu
Y2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5l
KQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJz
ZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAtMjA2OCw3ICsyMTU5LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24gPT0g
Q29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzJ3Mgc3BlY2lhbCBjb25z
dHJ1Y3RvcnMgc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKICAgICAgICAgUGFy
c2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVj
dG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhKTsKLSAg
ICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJz
ZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDog
UGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0
aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwg
bmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4
dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxl
c1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGJkNmQ2NTE0Y2ZiY2Zl
MjMxMzY1M2M4NmUxYzRhZTAzM2I4ZjI0My4uZjU2OTA0Yzg5ODIxZTdhYThlYzVjMWI1MDI0OTdk
OWEzMDBlYjUwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9VQkxFLAog
ICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJTkcsCiAg
ICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaAppbmRleCBmOWJiMDdiNGRkNDA4OWM3YjFlM2EwZjNmNTk1NDFiMzE3
YTUyZDdmLi5lOWI2ZDdlOTQ2NzQ0ZTFhMDhkYzFjYzI4YTQ2YjcxMzc3M2M5ODRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVn
ZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlz
RXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwK
ICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwg
QnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQcmVFeHBy
LCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAorICAgICAg
ICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRp
b25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHByLCBBc3Np
Z25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRlcmFs
RXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFycmF5
RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQs
CkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJv
b2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsg
cmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vz
cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUs
IGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/IFBy
aXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25z
dCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpj
aGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4
cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5l
d0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpA
QCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24oRXhwcmVz
c2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHBy
IHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAgICByZXR1
cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBQcml2
YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJvb2wgaXNQ
cml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3NpZ25tZW50
TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2Y2Iz
MTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3NDA2
OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9y
PShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9IG90aGVy
Lm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIubV9yYXJl
RGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAqdGhpczsK
K30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1cmVkSWZE
ZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAg
ICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgwLDYgKzkw
LDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQm
IG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNFdmVyeXRo
aW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURh
dGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50
OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1l
bnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQK
ICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkp
CiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJpZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDog
ZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgpLCBwYWly
LnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJlYTE5
OTJjNTIuLjBjMWQwYWMzZWJhZGNhOGVjMzhhNmM4OGVhNjMxMzliNDkwYTMzNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBA
IC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JdGVy
YXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVO
YW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRz
IHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsg
bV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFy
YW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5n
Q2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElz
UHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBt
X2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAgICAgICAg
SXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwg
NywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2Fu
ZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKICAgICB9
OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUgQEAgc3Ry
dWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworcHVibGlj
OgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMgPSB0
cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KKworICAg
IHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVudW0gVHJh
aXRzIDogdWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAgIElzRGVj
bGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2JpdHMg
eyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJh
aXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hU
cmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQ
cml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0gZGVmYXVs
dDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikg
PSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25t
ZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7CisgICAgVmFy
aWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVF
bnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXAp
KQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdD
YXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJlRGF0YSkp
CisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAgICAgICAs
IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAg
ICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8VmFy
aWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51bGxwdHIp
CisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0
ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAtOTksNyAr
MTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFw
OjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0g
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6
ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1
bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9
CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIp
OyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5n
Q2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisgICAgdXNp
bmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjpp
dGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJp
dmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVz
ZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0ZU5h
bWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJp
dmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIu
Z2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0byBlbnRy
eSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZh
dGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0
SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5
KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9y
QWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNVc2Vk
KCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZpbmQoaWRl
bnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAg
ICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQg
QVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKHByaXZh
dGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0ZU5h
bWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJl
RGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmlyb25t
ZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICAg
ICAgb3RoZXIubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCEoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNsYXJl
ZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5h
bWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQg
YnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBm
cm9tIGFuCisgICAgICAgIC8vIGlubmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBv
dXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRo
ZSBzb3VyY2UgY29kZSB0aGFuIGl0IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFt
ZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFt
ZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50
cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRPckFk
ZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAg
ICAgICAgUmFyZURhdGEoUmFyZURhdGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2YXRl
TmFtZXMoV1RGTW92ZShvdGhlci5tX3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAgICAg
fQorICAgICAgICBSYXJlRGF0YShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAg
UmFyZURhdGEmIG9wZXJhdG9yPShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAg
UHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAg
ICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVO
YW1lRW50cnkmIGdldE9yQWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisg
ICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0g
V1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAg
ICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5h
bWVFbnRyeSgwKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNz
IENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBiYWI2ZDQ3YTBhNGEzNzBhNzc3NzgxZjE5NDky
ZDJlODE1NTQ3MGM4Li5jZGNhMWZkNDkyOTM5MmE4ZjkzZTUwNWQxZjhmNjBhOWQwNmY4NDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04
NDMsNiArODQzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5jb2Rl
KGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNv
ZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBi
dWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIpOworICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNp
bXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFi
bGU+IHsKQEAgLTk5MCwyMyArOTk2LDQ1IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiB9OwogCitjbGFzcyBDYWNoZWRWYXJpYWJsZUVu
dmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1l
bnQ6OlJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKQorICAgIHsK
KyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0
ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWYXJp
YWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0CisgICAgeworICAgICAg
ICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNo
ZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJh
aXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBI
YXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVu
dHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRWYXJpYWJs
ZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50PiB7
CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgZW52KQogICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJl
ZCA9IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5lbmNvZGUoZW5j
b2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZW52
Lm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRl
Y29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikgY29uc3QKICAgICB7CiAgICAgICAgIGVu
di5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICAg
ICAgbV9tYXAuZGVjb2RlKGRlY29kZXIsIGVudi5tX21hcCk7CisgICAgICAgIGlmICghbV9yYXJl
RGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVudi5tX3JhcmVEYXRhID0gV1RGOjptYWtl
VW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9y
YXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICplbnYubV9yYXJlRGF0YSk7CisgICAgICAgIH0KICAg
ICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgIENh
Y2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVk
U3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0
cz4gbV9tYXA7CisgICAgQ2FjaGVkUHRyPENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0
YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZENvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudD4gewpA
QCAtMTEzMyw2ICsxMTYxLDIyIEBAIHByaXZhdGU6CiAgICAgaW50cHRyX3QgbV9iaXRzOwogfTsK
IAorY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8
U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJl
RGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5j
b2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJl
RGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNvZGVy
LCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENhY2hl
ZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmll
clJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUg
OiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQpA
QCAtMTE0Myw2ICsxMTg3LDcgQEAgcHVibGljOgogICAgICAgICBtX25lc3RlZExleGljYWxTY29w
ZSA9IHN5bWJvbFRhYmxlLm1fbmVzdGVkTGV4aWNhbFNjb3BlOwogICAgICAgICBtX3Njb3BlVHlw
ZSA9IHN5bWJvbFRhYmxlLm1fc2NvcGVUeXBlOwogICAgICAgICBtX2FyZ3VtZW50cy5lbmNvZGUo
ZW5jb2Rlciwgc3ltYm9sVGFibGUubV9hcmd1bWVudHMuZ2V0KCkpOworICAgICAgICBtX3JhcmVE
YXRhLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdldCgpKTsKICAgICB9
CiAKICAgICBTeW1ib2xUYWJsZSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBAIC0x
MTU2LDYgKzEyMDEsMTEgQEAgcHVibGljOgogICAgICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSog
c2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rlcik7CiAgICAg
ICAgIGlmIChzY29wZWRBcmd1bWVudHNUYWJsZSkKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5t
X2FyZ3VtZW50cy5zZXQoZGVjb2Rlci52bSgpLCBzeW1ib2xUYWJsZSwgc2NvcGVkQXJndW1lbnRz
VGFibGUpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZTo6
U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPmRlY29kZShk
ZWNvZGVyLCAqc3ltYm9sVGFibGUtPm1fcmFyZURhdGEpOworICAgICAgICB9CisKICAgICAgICAg
cmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KIApAQCAtMTE2Niw2ICsxMjE2LDcgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAgICAgdW5zaWduZWQg
bV9zY29wZVR5cGUgOiAzOwogICAgIENhY2hlZFB0cjxDYWNoZWRTY29wZWRBcmd1bWVudHNUYWJs
ZT4gbV9hcmd1bWVudHM7CisgICAgQ2FjaGVkUHRyPENhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE+
IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggMzBiNThiNmFjZGVjZDU4YjAzMDdi
ZDUyODQ2ZWE0NjU4MmI5YjA5ZC4uMDUxZWE3YWE2NjgyZDA4ZGRjZTA4N2YxOTI5NTQxNjNjYjI5
ZDEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENv
ZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiB7CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3RO
b2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290
Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGlu
TW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxp
bmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBl
cnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUs
IGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2Fj
aGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVk
Q29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJURFop
OwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5k
ZXggYzYzYTAyOTExMTcyOTVkMTkxOWJhMjgwMmEyYzM5MGFjNTE2NjcwOC4uNTc3ODA3MWJlNGVh
YjNmNDNlYjhiODA3ZmE0NWUzYmI2ZWM5OWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMzIsNiArMzIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMj
S2V5d29yZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElOSVRJ
QUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGluTmFt
ZXMtPm5hbWUjI1ByaXZhdGVOYW1lKCkpCiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5hbWUp
ICwgbmFtZSMjU3ltYm9sKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZpbmUg
SU5JVElBTElaRV9QUklWQVRFX0ZJRUxEX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmllbGQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRpZmll
cnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAg
LTQ1LDYgKzQ2LDcgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2
bSkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tF
WVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5J
VElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19DT01N
T05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9GSUVM
RF9OQU1FKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAppbmRleCA0NzAyMDJmOTE3OTI1ZDZkM2NiMmJmZjhiNDljMWRmOTgy
ZTczZGY4Li5lNDhhYjAxMzZjMDEyZmMzZGM3MGEzMWZmY2M4OGVlY2ZhMTYyNGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAg
LTIwNSw2ICsyMDUsOSBAQAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikK
IAorI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChtYWNy
bykgXAorICAgIG1hY3JvKGNvbnN0cnVjdG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJ
RklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBtYWNy
byhicmVhaykgXApAQCAtMzE5LDYgKzMyMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1
bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xP
QkFMCiAKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JB
TChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BSSVZBVEVfRklFTERfR0xPQkFMCisKICAgICAgICAgU3ltYm9sSW1wbCogbG9va1VwUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVyIGdldFB1
YmxpY05hbWUoVk0mLCBTeW1ib2xJbXBsKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJh
OTM1M2U3ZDc1MjFhODc5YmQxMmQ3NDAwNjkuLjdjM2U4N2JiOGIwOGIzYzJmZTlmNjFmMjVlYWEw
Y2E5MDhkOWIwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcApAQCAtMTI5OCw2ICsxMjk4LDcyIEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZh
bHVlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCkKK3sKKyAgICBCRUdJTigpOworCisgICAg
YXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldEJ5VmFsRGlyZWN0PigpOworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSBzdWJzY3JpcHQgPSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisKKyAg
ICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkp
IHsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVy
dHkoc3RydWN0dXJlKSkgeworICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlz
dGluZ0F0b21TdHJpbmcgPSBhc1N0cmluZyhzdWJzY3JpcHQpLT50b0V4aXN0aW5nQXRvbVN0cmlu
ZyhnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAg
ICAgICBpZiAoZXhpc3RpbmdBdG9tU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFs
dWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkodm0sIHN0
cnVjdHVyZSwgZXhpc3RpbmdBdG9tU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
UkVUVVJOX1BST0ZJTEVEKHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9
IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2Rl
Lm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
ID0gJm1ldGFkYXRhLm1fYXJyYXlQcm9maWxlOworCisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJh
c2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJ
bmRleChpKSkKKyAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQoYXNTdHJpbmcoYmFzZVZh
bHVlKS0+Z2V0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpKSk7CisgICAgICAgICAgICBhcnJheVByb2Zp
bGUtPnNldE91dE9mQm91bmRzKCk7CisgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFs
dWUpOworICAgICAgICAgICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQorICAg
ICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChvYmplY3QtPmdldEluZGV4UXVpY2tseShpKSk7
CisKKyAgICAgICAgICAgIGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOworCisg
ICAgICAgICAgICBpZiAob2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1
b3VzICYmIGkgPCBvYmplY3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBleHBhbmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMyLCBh
bmQgbWF5YmUgRG91YmxlOgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NDAKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBvYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICAgICAgc2tpcE1h
cmtpbmdPdXRPZkJvdW5kcyA9IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJl
KG9iamVjdC0+c3RydWN0dXJlKHZtKSkgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNo
YWluSXNTYW5lKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc2tpcE1hcmtp
bmdPdXRPZkJvdW5kcyAmJiAhQ29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudEluZGV4
UXVpY2tseSgqb2JqZWN0LCBpKSkKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91
dE9mQm91bmRzKCk7CisgICAgICAgIH0KKworICAgICAgICBSRVRVUk5fUFJPRklMRUQoanNVbmRl
ZmluZWQoKSk7CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUo
Z2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENF
UFRJT04oKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKworICAgIGJvb2wgZm91bmQg
PSAoYmFzZVZhbHVlLmFzQ2VsbCgpLT5pc1Byb3h5KCkgJiYgcHJvcGVydHkuaXNQcml2YXRlTmFt
ZSgpKQorICAgICAgICA/IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYXNPYmplY3QoYmFz
ZVZhbHVlKSwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkKKyAgICAgICAgOiBiYXNlVmFs
dWUuZ2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAg
IENIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghZm91bmQgJiYgcHJvcGVydHkuaXNQcml2YXRl
TmFtZSgpKQorICAgICAgICBUSFJPVyhjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9i
YWxPYmplY3QpKTsKKyAgICBSRVRVUk5fUFJPRklMRUQoZm91bmQgPyBzbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgcHJvcGVydHkpIDoganNVbmRlZmluZWQoKSk7Cit9CisKIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQogewogICAgIEJFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3
MTM1ZTJiNzg0YWI2OGRiNWY1NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjNmZDRhOWIxOTU1MWVmZmEz
ZDlkOTYxZTFlMDUwOTBhNjY2OWVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNzIsNiArMjcyLDcgQEAgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2RlZmluZV9kYXRhX3Byb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggYWY5OGQ0ZDI3YjQxZDE0MzM2YTAyMThl
ODBiNzZjZTRkOGI0MGI3Mi4uZDgxZTU4NjY0MWJkNmZjMmJhY2QwZmI0MTc5OTFjYmYxNWY1OWIy
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKQEAgLTMyOSw2ICszMjksMTYgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4i
KTsKIH0KIAorSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxk
IiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCitKU09iamVjdCog
Y3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3Ry
aW5nKCJDYW5ub3QgcmVkZWZpbmUgZXhpc3RpbmcgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291
cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUp
CiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZU91dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKaW5kZXggMzVhZDEyNTU0YzcwMTI3ZTRi
ZmI3NTUxZWJiM2MxNzhlZWI0YzZlMS4uMDIxMzBhZWJhYTI4Yjc3Zjc5YzE2ZTAxZjI5NjMxNTVi
ODJhNzlhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuaApAQCAtNTMsNiArNTMsOCBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3Rh
bmNlb2ZQYXJhbWV0ZXJFcnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsbwogSlNP
YmplY3QqIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CiBKU09iamVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CitKU09iamVjdCogY3JlYXRlSW52YWxp
ZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWRl
ZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJpbmcgZXJyb3JEZXNj
cmlwdGlvbkZvclZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIEpTX0VYUE9SVF9Q
UklWQVRFIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0Kiwg
VGhyb3dTY29wZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IGIzYzk4MGE0NjYyYWVlZWExMjQwYTU2NmM1ZDRhMThhOTI4NzFm
N2UuLmY1ODQ0N2RmMDdmMDdiYzUxMzkzNjQ2ZjgxMmZjYTdmOGJhNDE3NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI5OCw2
ICsyOTgsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVu
Z3RoUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1ib2xJ
bXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVE
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMTE1NCw2
ICsxMTYwLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29u
c3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpKTsKICAgICAg
ICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyAgICAvLyBQcml2YXRlU3ltYm9scyAv
IFByaXZhdGVOYW1lcworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7
CisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1J
TkdfQVBJKQogICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3Nl
bWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcAppbmRleCA2ZDVhYjY4MmM2ODM5MTRmNjlmM2U1YzIyODM4NGZlZmU0NjU3N2M4Li45
NmM4ZGJkNDMwNjc5MWUxYTVlNjExOGE2NTIzZTU0ZDgzZjNhNTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzM5LDYgKzMzOSwxMCBAQCB2b2lkIEpT
U2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFZh
cmlhYmxlRW52aXJvbm1lbgogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJv
bFRhYmxlLT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVu
ZChsb2NrZXIpLCBpdGVyID0gc3ltYm9sVGFibGUtPmJlZ2luKGxvY2tlcik7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIGlm
IChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAgICAgIHJl
c3VsdC51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAgICAgIH0KICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCBiYzQ5
ZGM5ODJjNzMyODJiZWRlYjJiMWRlZmM3NjdhODVhYjM1YWY5Li43NzkwY2Y1NzNkMjZmOTUyZjQ5
OTlhNTNmM2MyNzVkNjc1MWEzY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODMsNiArMTgzLDExIEBAIFN5bWJvbFRhYmxlKiBTeW1i
b2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICAgICAgZm9yICg7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3Vu
aXF1ZVR5cGVTZXRNYXAuc2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOwogICAgICAgICB9CisK
KyAgICAgICAgeworICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcykKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4gcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXgg
MWMzODZlYzRiZjhmNTYyOWMxNTE2ZTVkODQwOGJjNGMwOGI2MTIxMC4uODdiNGRiYmJhMzhjZjBh
MmRlZjQ5YzZhM2U1ZmJlZWY1NzZlNTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2F0Y2hwb2lu
dC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3ltYm9sSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUwLDYgKzQ1MCw4IEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVm
UHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAgICB0
eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZz
ZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkqPiBM
b2NhbFRvRW50cnlWZWM7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlTmFtZVNldDsKKyAgICB0eXBlZGVmIFdU
Rjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFtZVNldDo6aXRlcmF0b3I+IFByaXZh
dGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBT
dWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2
bSkKQEAgLTU5NCw3ICs1OTYsMjUgQEAgcHVibGljOgogICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGFkZChsb2NrZXIsIGtleSwgc3RkOjpmb3J3YXJk
PEVudHJ5PihlbnRyeSkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVz
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZSBw
cml2YXRlTmFtZXMoKQorICAgIHsKKyAgICAgICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRvclJhbmdl
IG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2ZW50IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVja1ZhbGlk
aXR5KCkuCisgICAgICAgIEFTU0VSVChoYXNQcml2YXRlTmFtZXMoKSk7CisgICAgICAgIHJldHVy
biBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGRQ
cml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGtleSAmJiAha2V5LT5pc1N5bWJvbCgpKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAg
ICAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRh
PigpOworCisgICAgICAgIEFTU0VSVCghbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFp
bnMoa2V5KSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXkpOwor
ICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5PgogICAgIHZvaWQgc2V0KGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXksIEVudHJ5JiYgZW50
cnkpCiAgICAgewpAQCAtNzE3LDE4ICs3MzcsMjEgQEAgcHJpdmF0ZToKICAgICBTY29wZU9mZnNl
dCBtX21heFNjb3BlT2Zmc2V0OwogcHVibGljOgogICAgIG11dGFibGUgQ29uY3VycmVudEpTTG9j
ayBtX2xvY2s7Ci1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAx
OwotICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9u
IExleGljYWxTY29wZS4KLSAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlw
ZQotICAgIAorCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlUmFyZURhdGEgewogICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFVuaXF1ZUlETWFwIG1fdW5pcXVl
SURNYXA7CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFw
OwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAgICAg
V3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CisgICAgICAgIFByaXZhdGVOYW1l
U2V0IG1fcHJpdmF0ZU5hbWVzOwogICAgIH07CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV91
c2VzTm9uU3RyaWN0RXZhbCA6IDE7CisgICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUg
OiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4aWNhbFNjb3BlLgorICAgIHVuc2lnbmVkIG1fc2NvcGVU
eXBlIDogMzsgLy8gU2NvcGVUeXBlCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3ltYm9sVGFibGVS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKIAogICAgIFdyaXRlQmFycmllcjxTY29wZWRBcmd1bWVudHNU
YWJsZT4gbV9hcmd1bWVudHM7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDMxNjRlY2I0M2E5ZDM5MTUxMzNjNDY5MDEwYjc4MzI2ZjYxMWRl
MDEuLjc1ZGMwMzBmNjk5MjUzNDU2MTZiYjRlMGVmODhkOGEyZmJmNDE2YjUgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMjAtMDItMTkgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZHMgdXBvbiB0aGUg
ZWFybGllciBwdWJsaWMgZmllbGRzIHBhdGNoLCBhZGRpbmcgYSBudW1iZXIgb2YgcHJpdmF0ZQor
ICAgICAgICBmaWVsZCB0ZXN0cy4KKworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1hcy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanM6CisgICAgICAgICogc3RyZXNz
L2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanM6IEFkZGVkLgor
ICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDItMTggIFJvc3MgS2lyc2xp
bmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtKU0NdIENvbXB1dGVkIGZ1
bmN0aW9uIHByb3BlcnRpZXMgY29tcHV0ZSB0aGVpciBrZXlzIHR3aWNlCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcyBiL0pTVGVz
dHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhlOWFlZDRkMWEzMWJlMGE4MmJjZjA5ODAyMzFmMGJjYmQ1MTBjYzUKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcwpA
QCAtMCwwICsxLDE4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9MSIp
CisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisK
K2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQo
Yy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwODY5OGY2NTE5OWU3
Njk5MjlkZmQ5ZWQyYTU1YjU2M2FiZTA4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpAQCAtMCwwICsxLDE4
IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworZnVu
Y3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3Mg
QyB7CisgICAgI2YgPSAzOworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4j
ZjsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAzKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJv
eHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43N2YwNGU2ZDU0YTY2ZWY1MmJkNWZkMzEzZGI3N2IzMjYyY2ZlZTlmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJv
eHkuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmll
bGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29u
dGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJy
YXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBp
KyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0g
KyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKwor
Y2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5l
dyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsK
KyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
b2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNz
IFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAgICBtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgpOwor
bGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290OiAi
ICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY2NDRkNmIyMTNiY2E1ODU5YmViN2MyZWI2MmU0NjhkMmNiZTdiZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGlu
ZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9IGAKK3ZhciBDID0gY2xhc3MgeworICAgIGFzc2Vy
dE91dE9mTGluZVZhbHVlKCkgeworICAgICAgICBhc3NlcnQodGhpcy4jZjIwMCwgImZvbyIpOwor
ICAgIH0KK2A7CisKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkrKykgeworICAgIGtsYXNz
U291cmNlICs9ICIgICAgI2YiICsgaSArICI7XG4iOworfQorCitrbGFzc1NvdXJjZSArPSAiICAg
ICNmMjAwID0gXCJmb29cIjtcbn0iOworCitldmFsKGtsYXNzU291cmNlKTsKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hc3NlcnRP
dXRPZkxpbmVWYWx1ZSgpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLXVzZS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDY5NmJhY2NmOTI3MGNlYWUwZWI5MzI3
ZTQwY2QwOTg5OTZhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpAQCAtMCwwICsxLDE1IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNz
YWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9
CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihpKSA9PiBpLiNiIik7CisK
KyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fzc2VydChpbnN0LmEoaW5z
dCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJl
c3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3Rh
bmNlLmpzCmluZGV4IDU2NjI0ZmJlZWRiYjAyOGI5NGUwZDZlNjExZmU0OTkzNmQyNTI1OGYuLjNj
OWI1ODhlYmVjOWY0YjZkMmE2OTFjNGY3ZDZiOGMzNWFkOTMzZWUgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKKysrIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAtMyw5ICszLDEzIEBACiBj
bGFzcyBBIHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7CisgICAgI2QgPSAx
OwogICAgIGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAgICNmID0gZnVuY3Rpb24o
KSB7IHJldHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZhbCgidHJ1ZSIpOwor
ICAgICNpID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJp
dmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmY3NzhjYWYyZjgzNzc5NGJiZmU0ZmMwYTQ3MGJlOTQwNzU1Y2NhMwotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZh
dGUuanMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9A
IHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdldEJ5VmFsRGlyZWN0IHNo
b3VsZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZlIHRoZSByZXF1ZXN0ZWQg
cHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAj
eCA9IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkgcmV0dXJuIHsgW1N5bWJv
bC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0
dXJuIG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3
aXRoICN4IjsgfQorfQorCit0cnkgeworICAgIGZvciAoaSA9IDA7IGkgPCA1MDsgKytpKSB7Cisg
ICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngoYyk7CisgICAg
ICAgIGlmIChyZXN1bHQgIT09IGkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkIEMueCgke2N9KSB0byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQor
fSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5j
b25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQor
CitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBi
dXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg0Y2QwMTZhNTUxYWJiNTc4NzdlMmE3NDc1ZjliZTAyNzU2NjkxMDIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXBy
b3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFz
c0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IChleHBlY3RlZEVycm9y
LCBmdW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7Cisg
ICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVj
dGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUgKyAiIGJ1dCB0aHJvd3M6ICIgKyBlLm5hbWUp
OworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4g
eworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBbe30uI3hdID0gMTsgCisgICAgICAgICN4ID0g
ImZvbyI7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12
YWwtZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVj
dC1hZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZjk0OTVmOTU2OWQ0ZjgyMGEzNGQyNWUwNWMx
M2ZkZTg5YmZhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFs
LWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vIFRPRE86IC8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5EZWZhdWx0KCItLXVzZUNs
YXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1
bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0QnlWYWxU
aHJvd0lmRXhpc3RzIiBzaG91bGQgdGhyb3cgaWYgb3ZlcndyaXRpbmcgYW4gYWxyZWFkeSBleGlz
dGluZyBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMg
eworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8IDI5ID8gdGhpcyA6IGM7
CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4ID0gaSsrOworICAgIHgo
KSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0cnkgeworICAgIGZvciAo
bGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9IG5ldyBDQzsKKyAgICAg
ICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsKKyAgICB9Cit9IGNhdGNo
IChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNvbnN0cnVj
dG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICgh
dGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5
LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGly
ZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM5MWZhY2JmNDRjOGMwNWQ4MTBmZjFmM2Zl
Y2I4NDVlYzMwZDUwNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12
YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwzMSBAQAorLy8gVE9ETzogLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNs
YXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8v
IEdQVkQgd2l0aCAiUHV0QnlWYWxQcml2YXRlTmFtZSIgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcg
dG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFs
c2U7CitjbGFzcyBDIHsKKyAgICAjeDsKKyAgICBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIGkgPCAz
MCA/IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91dCAjeCIgfTsgfQorICAg
IHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4ID0gaSsrOyB9CisgICAgZ2V0IFtTeW1ib2wu
dG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giIH0KK30KKwordHJ5IHsKKyAgICBmb3Ig
KGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9iaiA9IG5ldyBDOworICAg
ICAgICBsZXQgcmVzdWx0ID0gQy54KG9iaik7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGopCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke29ian0pIHRvIGJlICR7
an0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhy
ZXcgPSB0cnVlOworICAgIC8vIHJ2YWwgb2YgQXNzaWdubWVudEV4cHJlc3Npb24gaXMgZXZhbHVh
dGVkIGJlZm9yZSBQcml2YXRlRmllbGRGaW5kKCN4LCBscmVmKSBpcyBwZXJmb3JtZWQsCisgICAg
Ly8gdGh1cyBgaWAgaGFzIGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4KKyAgICBpZiAoaSAhPT0g
MzEgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7Cisg
ICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlw
ZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRl
eCAyMzgzNTgxM2JlMzkxZTJhM2I1MDNmMDc4ZjQ4M2FiM2QwYjhkMjI4Li43NWU0MDhjNjNmY2E2
YWUyODE2ZjI5ZGM2ZGM2ZjFjODkzYTUyYzA4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0zLDYgKzMs
NyBAQAogZmxhZ3M6CiAgIEJpZ0ludDogdXNlQmlnSW50CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZz
CisgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VDbGFzc0ZpZWxkcwogICBjbGFzcy1maWVsZHMt
cHVibGljOiB1c2VDbGFzc0ZpZWxkcwogc2tpcDoKICAgZmVhdHVyZXM6CkBAIC0xMSw3ICsxMiw2
IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAgLSBjbGFzcy1maWVsZHMtcHJp
dmF0ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtZmll
bGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391542</attachid>
            <date>2020-02-24 08:02:45 -0800</date>
            <delta_ts>2020-03-06 08:06:55 -0800</delta_ts>
            <desc>Patch v10</desc>
            <filename>bug-206431-20200224110245.patch</filename>
            <type>text/plain</type>
            <size>179194</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTI5MzYwYWFlM2QzN2RkOTE3MWY2ZjJkOGVjMTFiY2QwM2Y1ZjgzLi5mNmJjNTE5Zjc1NDQ0OGFj
YmNhNzE2NTI3Y2FhZjZkNDAwZThkM2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzIgQEAKKzIwMjAtMDItMjQgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZGlu
ZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMgcGF0Y2gsIHdlIGltcGxlbWVu
dCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNhbnQgcGFydHMpIG9mIHRoZSBp
bnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvKS4K
KworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBjaGFuZ2VzIGhlcmU6CisKKyAg
ICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUgY29uY2VwdCBvZiBwcml2YXRl
IG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAgICAtIDEgbmV3IG9wY29kZSAo
b3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNvZGUgKG9wX3B1dF9ieV92YWxf
ZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNyZWF0aW5nIFN5bWJvbCBvYmpl
Y3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4cG9zZWQgYXMgYQorICAgICAg
ICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0ZVN5bWJvbCkuCisgICAgICAg
ICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQgYnkgbmFtZSAobm90IGEgdmFs
aWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAgICAgICAgICAgYXJlIGxvYWRl
ZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBtb2Rp
ZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIG9wX3B1dF9ieV92YWxfZGly
ZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0QnlWYWxGbGFncykgd2hpY2gg
YXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBvdmVyd3JpdGluZyBvciBk
ZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVyZW5jZXMgYXJlCisgICAgICAg
IHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAgICAgICAgUHJpdmF0ZSBmaWVs
ZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRoZWlyIHVzZS4gVGhpcyBwcmV2
ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0aGUgc2FtZSBjbGFzcyBzb3Vy
Y2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUgZmllbGRzLCBiZWNhdXNlIHRo
ZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVkIGZyb20gdGhlIGNsYXNzIHNj
b3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBwcm9wb3NhbCB0
ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5IHdlIHVzZSBCeVZhbCBsb29r
dXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAgICBUbyBpbGx1c3RyYXRlLCB0
eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBsaWtlOgorCisgICAgICAgIDxG
aWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVu
dFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUg
ICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3Vu
ZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgZ2V0X2J5
X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHByb2JhYmx5ICd0aGlzJz4sIDxz
eW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAg
ICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAg
ICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYy
NDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4s
IDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3Ro
aXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lPgorCisgICAgICAg
IDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4s
IDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJv
bV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAg
ICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3ltYm9s
PiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlWYWxUaHJvd0lmRXhpc3RzPgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5k
LmguCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5l
cmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpp
bnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXREaXJlY3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHJpdmF0ZUZpZWxkQWRkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcml2YXRlRmllbGRQdXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmFzZURv
dE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6
OmVtaXRQdXRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAgICAg
ICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
UHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSUNT
dGF0cy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdl
bmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjpwdXRCeVZhbEZsYWdzKToKKyAgICAgICAgKEpTQzo6SklUOjpwdXRCeVZhbEZsYWdzPE9w
UHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmlzUHJpdmF0ZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1
bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9k
ZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENo
YXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNl
SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlk
ZW50aWZpZXJTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXhXaXRob3V0Q2xl
YXJpbmdMaW5lVGVybWluYXRvcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6RG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUp
OgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRD
cmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZURvdE5vZGU6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNv
bnN0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVu
dHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZW5zdXJlUHJpdmF0ZU5hbWVV
c2VkKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25z
dCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhh
c1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnVzZVByaXZhdGVOYW1lKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6Y3VycmVudFByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNv
cHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyOjptYXRjaEFuZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9r
ZW5zLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0p
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAgICAgKEpT
Qzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZU5hbWVFbnRyeTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVO
YW1lRW50cnk6OnNldElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNl
dElzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1lbnQpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6Y29weVByaXZhdGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE6OlJhcmVEYXRhKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Z2V0T3JBZGRQcml2YXRlTmFtZSk6
CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hl
ZE9wdGlvbmFsOjpkZWNvZGVBc1B0ciBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFy
aWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRT
eW1ib2xUYWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAg
ICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWRlZmluZWRQcml2
YXRlTmFtZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
UHJpdmF0ZVN5bWJvbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpjb2xs
ZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDItMjMgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBTaHJpbmsgU3RydWN0dXJl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3YzMwYzUxMTYzZWRk
OWYxMDZkNDJmOTVlMDlkMDJiZTljNC4uODY3NzJmYTZjNjI4MTk5NmFlNDIyMmQ0ODMzNGJkODZm
OWRiOTllMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTI5LDYgKzUy
OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
Ynl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAg
ICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAorICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAog
ICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
aAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGFmNDJjMmFlOGZlNTkyYmY2ZDY4Mjg1Mzg5NzZkMGNmNmRhNmRiMWYuLjMwNzViZmFh
NTRmMGQ4Y2EzNGI3NDAyY2FmOGMwNWYzNmI0YTFjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjQ0LDYgKzEyNDQsNyBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2
NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVG
Mjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmln
SW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5
MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyog
QmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQwOTgsNiAr
NDA5OSw4IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIv
WWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0
dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1
bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAv
KiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRl
TmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM0MCw2ICs4MzQzLDggQEAK
IAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJ
CTBGOTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJ
MEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCisJCQkJODY3
NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAorCQkJCTg2NzZD
NkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzEx
NEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAy
MkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAw
MjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMDc5LDYgKzEwMDg0LDcgQEAK
IAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJp
YW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0
QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMw
IC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUx
QjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2
REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDc2ZjFjNjk0ODVjNmZjYmVlNDg3ZTVhYzk4NmNhNDYz
NjM1M2FlYmUuLjQzMTRiZTMxYzJkZGJiOTVhY2JhZGQ4NmYyNDAwMTUwMWEwZDc5NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2NCw2ICsyNjQsNyBAQCBieXRlY29kZS9Qcm94
eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUv
UHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29k
ZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMTA4MzA3
ZjM2NWQ4OTk4YTUxMjQwMGI2N2U2ZmIwMWMxNDAwNzhjMS4uODQ0MDkyNGJhNTE0MDZjNzAwNmUz
MDg4OWRmZWJlMGEyOGE1NTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9CdWlsdGluTmFtZXMuaApAQCAtMTY3LDcgKzE2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IG1hY3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRl
cm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5h
bCkgXAotICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgCisgICAgbWFjcm8oaW5z
dGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkK
IAogbmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZ
TUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5
bWJvbEltcGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3MjM2ZjQwYWE4OTkxMjdjNzQ5ZWJkYjk4
Njk2Yzc3ODVkOGNiMy4uMDJjMDFiZDdjMmU4YzI2YTY5NWY4YTM2NmI2NThiYWM2YzljZWI0YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
KyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
R2VuZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAzNDgzNDdjNmI0Y2Q3NTQ2ODBjMTI2YTBmNzI3NTM2ZjFiZTM3YzRlLi45
YTc0NDNhNWQ1NzU1NWZhN2MxMDZkZGJiYmM2ZWYzMTQ1ODMzZTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ3LDYgKzQ3LDcgQEAg
dHlwZXMgWwogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZz
ZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKKyAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2
ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NDMsNiArNTQ0
LDE3IEBAIG9wIDpnZXRfYnlfdmFsLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdldEJ5VmFs
SGlzdG9yeSwKICAgICB9CiAKK29wIDpnZXRfYnlfdmFsX2RpcmVjdCwKKyAgICBhcmdzOiB7Cisg
ICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRh
ZGF0YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJv
ZmlsZTogQXJyYXlQcm9maWxlLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczog
ewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NjYsNiArNTc4LDcgQEAgb3Ag
OnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAg
ICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2Vj
MGE4MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1NjI2YzEzLi4xNWMxM2JmN2E4OWY2N2QyODU5Y2Jj
ZjYxNjFjMzM5MDc4MzRhNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIxMSw2ICsyMTEsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNv
bnN0IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0
b3IsIGluZGV4KQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9y
LCBpbmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMo
T3BHZXRCeVZhbERpcmVjdCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJh
c2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0
b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90
b3R5cGUpCkBAIC00MTksNiArNDIwLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5k
ZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBE
RUZTKE9wSW5zdGFuY2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3Qp
CiAgICAgREVGUyhPcEdldEJ5VmFsLCBkc3QpCisgICAgREVGUyhPcEdldEJ5VmFsRGlyZWN0LCBk
c3QpCiAgICAgREVGUyhPcFR5cGVvZiwgZHN0KQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9m
aWxlLCBzcmNEc3QpCiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4M2RlY2YzNTEzMjc4NDQ5
YzgyNGYuLmQ2Mzg1YjNiZmFmMTgxMTdkZWU2MjBjMWMxYTczNGU1NzEzM2Y1OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
Ik9wY29kZVNpemUuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNs
dWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFiNmU3MjYyNDA5Yzg1NzQzMmQ0
YjJmY2ZhY2YxN2M3NjBkMTdiNjQuLjAyYTZjZjA0OGQxMjRhMmU5ZWUwYjUzNDAyYmRmYmQ4MjRl
MGM3NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAg
IHYoQXJyYXksIG51bGxwdHIpIFwKICAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAg
ICB2KGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwg
bnVsbHB0cikKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNv
ZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU3NzZhOGNjYTgxMTExODQ3MjhlZmE2MDI1NzUxNmE5ZWQw
NDRiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
KyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQoreworICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIp
OworICAgIGlmIChmbGFncyAmIFB1dEJ5VmFsUHJpdmF0ZU5hbWUpCisgICAgICAgIG91dC5wcmlu
dChjb21tYSwgIlByaXZhdGVOYW1lIik7CisgICAgaWYgKGZsYWdzICYgUHV0QnlWYWxUaHJvd0lm
RXhpc3RzKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJUaHJvd0lmRXhpc3RzIik7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdURgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5VmFsRmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Mjg5NWI2Nzg2MDdjOWEzMDkwOTMzNzI4MThj
MGU4ZmYzN2ZhYWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitlbnVtIFB1dEJ5VmFsRmxhZ3MgOiBpbnQzMl90IHsKKyAgICBQ
dXRCeVZhbE5vbmUgPSAwLAorCisgICAgUHV0QnlWYWxQcml2YXRlTmFtZSA9IDEsCisKKyAgICBQ
dXRCeVZhbFRocm93SWZFeGlzdHMgPSAyLAorCisgICAgLy8gVGhlIFByaXZhdGVGaWVsZEFkZCBv
cGVyYXRpb24gbXVzdCB0aHJvdyBpZiBhbiBlbnRyeSBmb3IgdGhlIHByaXZhdGUgcmVjb3JkIGRv
ZXMgbm90IGV4aXN0CisgICAgUHV0QnlWYWxQcml2YXRlRmllbGRBZGQgPSBQdXRCeVZhbFByaXZh
dGVOYW1lIHwgUHV0QnlWYWxUaHJvd0lmRXhpc3RzLAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZpZWxk
UHV0ID0gUHV0QnlWYWxQcml2YXRlTmFtZSwKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKaW5kZXggNjExMjc5ZjYw
OWEwODU4OWFkY2U5MWMyYTVjOGFmNjQ4MDgwYzRjNi4uMGQzOWIwMzU4OTZlOWVmNjE5NjM0MjNh
NjFlNjgxM2ViODA3YTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2lu
ZC5oCkBAIC0yNyw2ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEtpbmQg
eyBEaXJlY3QsIE5vdERpcmVjdCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3Qs
IERpcmVjdEFkZFByaXZhdGUsIERpcmVjdFB1dFByaXZhdGUgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA0ZGMwZTkxNWJjMzgyMzE5YTkyYTk2
NzFiNjNiMjhiNDcwZGU4MTNkLi5lM2ZhZGRjYmE5NjYyNWU5ZGU3MzJhZGE0ODE3Y2IwMTVlOTU0
YzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKSkpOwogICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMgPSBleGVjdXRhYmxlLT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3Vw
ZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFy
c2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAK
ICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBmYTNhYmJkMTFhZGExMWNlZDhhYmQ3YTA1NWQyNjU3OTAxY2Rl
YjI1Li5mZDg2ZDBjNDY1NjFhYTliMmFiYzI3NjdiOWE2YTdlMDhlMDU5MzAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMTg1MCw2ICsxODUwLDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlu
c3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAK
ICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IDogUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5
KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBl
dmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVk
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjY2MworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBA
IC0yNjM3LDkgKzI2NDIsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK3sKKyAgICBPcEdldEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJv
cGVydHkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0
KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxOb25lKTsKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKQEAgLTI2NjEsNiArMjY3MiwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQg
aQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbFByaXZhdGVGaWVsZEFkZCk7CisgICAg
cmV0dXJuIHZhbHVlOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBy
aXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpCit7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsUHJpdmF0ZUZpZWxkUHV0KTsKKyAgICByZXR1cm4g
dmFsdWU7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdp
bigpCiB7CiAgICAgT3BTdXBlclNhbXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCAyOTg5Mzc0MGE4NWE1ODQ5ZTM5NzI4ODU2NTAzMmFlNzRiYWZmNTViLi45NjQzYTg0YmNj
YjgwNjA2MzVmN2Y2YzdkNjZhYjFjNmM0Njk5NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03ODYsMTEg
Kzc4NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5
VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1Zh
bHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEludGVybmFs
RmllbGQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJh
c2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZh
dGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7CiAg
ICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGUxMzM5NGE2ZWQy
ZGI2ZTE0ZWJiYTRiNzg1ZmQ3MDUwOGQxZTcyNGIuLjRiOTQ2OTM4MjcyNTBlZDdmZGIxZGJjZTZm
NWUwNjNiYzA0YzFjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU0OSw5ICs1NDksMTkgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGVtaXRQdXRIb21lT2JqZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGYKIAogUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0
b3IsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFu
Y2VGaWVsZExvY2F0aW9ucykKIHsKLSAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhh
bmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgorICAgIC8vIFByaXZhdGVOYW1lcyBhcmUg
aG9pc3RlZCBhbmQgd2UgbmVlZCB0byBkZWNsYXJlIHRoZW0gYmVmb3JlIGNvbXB1dGVkIHByb3Bl
cnRpZXMgYXJlIGhhbmRsZWQuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAgICAg
UmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKKyAgICBmb3IgKDsgcDsgcCA9IHAtPm1fbmV4dCkg
eworICAgICAgICBpZiAoIShwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0
ZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlz
SW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwor
ICAgICAgICBlbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShnZW5lcmF0b3IsIGRzdCwgKnAtPm1fbm9k
ZSk7CisgICAgfQorCisgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJl
Z3VsYXIgdmFsdWUgcHJvcGVydGllcy4KKyAgICBwID0gdGhpczsKICAgICBmb3IgKDsgcCAmJiAo
cC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4
dCkgewogICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkg
PyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCkBAIC03MTMsNiArNzIzLDE4IEBAIFJl
Z2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENv
bnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
bmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CisgICAgaWYgKG5vZGUudHlwZSgpICYgUHJv
cGVydHlOb2RlOjpQcml2YXRlKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQ
cml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExp
bmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgICAgIENhbGxBcmd1
bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVy
YXRvci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkp
LCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50
cywgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVidWdnYWJsZUNhbGw6Ok5v
KTsKKworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFt
ZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29wZVJl
Z2lzdGVyKCksIHZhciwgc3ltYm9sLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZ2VuZXJhdG9yLnNob3VsZFNl
dEZ1bmN0aW9uTmFtZShub2RlLm1fYXNzaWduKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wZXJ0eU5hbWU7CkBAIC04NDMsMTYgKzg2NSw2NiBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cgogICAgIH0KIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKGJh
c2VJc1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5l
cmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOwot
ICAgIH0gZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0
LmdldCgpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBlbWl0
R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSk7
CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdC5nZXQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQogCitSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJ
RD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUg
c3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3Qs
IGJhc2UsIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1
cGVyTm9kZSgpKSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1Zh
bHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0R2V0QnlJZChkc3QsIGJhc2UsIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgfQor
CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkc3QsIGJhc2UsIG1faWRlbnQpOwor
fQorCitSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
KQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZHN0LCBiYXNlLCB0aGlzVmFsdWUpOworfQorCitS
ZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8
UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7Cisg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVz
IG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZh
dGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmll
bGRQdXQoYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAg
ICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHZh
bHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIG1f
aWRlbnQsIHZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAg
IHJldHVybiBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLCB2YWx1ZSwgdGhpc1ZhbHVl
KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogQXJndW1lbnRM
aXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKQEAgLTE2NDAsMTEgKzE3MTIsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNh
bGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lv
bkVuZCgpKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHN1cGVyQmFzZSA9IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBzdXBlckJhc2UuZ2V0KCks
IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2Ug
PSBiYXNlSXNTdXBlciA/IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxB
cmd1bWVudHMudGhpc1JlZ2lzdGVyKCk7CisgICAgZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJh
dG9yLCBmdW5jdGlvbi5nZXQoKSwgYmFzZS5nZXQoKSk7CiAKICAgICBpZiAoaXNPcHRpb25hbENo
YWluQmFzZSgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE9wdGlvbmFsQ2hlY2soZnVuY3Rpb24u
Z2V0KCkpOwpAQCAtMTk2NSw2ICsyMDM1LDIyIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjpl
bWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgp
LCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CisK
KyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQo
IWJhc2VJc1N1cGVyKTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0
b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0
b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxk
UHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZhbHVlLmdl
dCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKQEAgLTIxODgs
NiArMjI3NCwyMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0
YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2YWx1ZTsK
KyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQo
IWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVO
YW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgZW1pdEluY09yRGVjKGdl
bmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgp
LCB2YWx1ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3Qs
IHByb3BEc3QuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFs
dWU7CiAgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIHRoaXNWYWx1
ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CkBAIC0yOTI0LDExICszMDI1LDcgQEAgUmVnaXN0
ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJh
dG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChi
YXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkp
OwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
bV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CisgICAgZW1pdFB1dFByb3BlcnR5KGdlbmVy
YXRvciwgYmFzZS5nZXQoKSwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkp
OwogfQpAQCAtMjk0MCwyMyArMzAzNywxNSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJh
dG9yKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25E
aXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1
ZTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBlbWl0R2V0UHJvcGVy
dHlWYWx1ZShnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgdGhpc1ZhbHVlKTsKKwogICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRS
ZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgc3RhdGljX2Nhc3Q8SlND
OjpPcGVyYXRvcj4obV9vcGVyYXRvciksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3du
VHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAg
ICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKLSAgICAg
ICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQo
KSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAgICBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZXQgPSBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNl
LmdldCgpLCB1cGRhdGVkVmFsdWUsIHRoaXNWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0
dXJuIHJldDsKKyAgICByZXR1cm4gcmV0LmdldCgpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQXNzaWduRXJyb3JOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC00MzUyLDYgKzQ0NDEsMTcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1l
cmFibGUsIG1fcG9zaXRpb24pOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBEZWZp
bmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lOiB7CisgICAgICAgIFZhcmlhYmxlIHZhciA9
IGdlbmVyYXRvci52YXJpYWJsZSgqbV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBj
YXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50LT5sZW5ndGgo
KSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUu
Z2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFByaXZhdGVGaWVsZEFkZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByaXZhdGVOYW1lLmdl
dCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBy
b3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMKICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkMWZhMGIzMTc4Nzcy
ZWZmOWRmNDRiYzU4ZGVmODFiYzlkMmYxYjFkLi5hM2YzNGY4YzYyMTI3YzllODZkMmEwOTUwYzA1
NmJmNTkxZDlkYjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFy
Z2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0
dXMuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25z
dHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IDc1OWI3NzgwYTZjYzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjU0ZGEz
MWFlMDBlMDAyZmY2ZGMyNDQxMWRmZDU0OTZlY2I0YWRjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5NCw2ICsyOTQsNyBAQCBDYXBh
YmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgSQogCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX2Ny
ZWF0ZV9nZW5lcmF0b3JfZnJhbWVfZW52aXJvbm1lbnQ6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFs
X2RpcmVjdDogLy8gRklYTUU6IG9wX2dldF9ieV92YWxfZGlyZWN0IHdpbGwgbmVlZCBERkcvRlRM
IHN1cHBvcnQgdG8gc2hpcCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3By
b2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAxN2JhMmIyZmYzNWE0ZmFmMDExYTMyMjk3M2U3OTY5
ZTdiNDdlNTdhLi5kYmQxN2YwYzVlMmJlMzNmMjkwMjQ3MTI1YTUwZWY5MzhhZTMyYmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
MTM4NDcsNyArMTM4NDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9k
ZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIG1faml0LmVj
bWFNb2RlRm9yKGNvZGVPcmlnaW4pLCBwdXRLaW5kLCBQdXRCeVZhbE5vbmUpOwogCiAgICAgZ2Vu
LmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggMmRkNTQ4NDFkNGUzMWY1NjgxMThmYmQ1Yjg0NTYy
NDQwNjJhZjU4ZC4uOGYxNDJmNDZjYTFhMzA0ODNhOTA4NWY5NmI2Mzg0MmRlZDNiMzg4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzk4
NCw3ICszOTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9j
aygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAg
ICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhwYXJhbXNb
MF0uZ3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3By
KCkpLCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0
ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQdXRCeVZhbE5vbmUpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRFNMLnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlk
MzQuLjUzMGY5N2E3NTdiYmExYTI2ZWVlYzk5MDNmOWM1N2RiMGVhNTcwMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDAsNiArMTQwLDcgQEAgbW9kdWxlIERT
TAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNs
dWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVk
ZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0lDU3RhdHMuaAppbmRleCA1ZDMwOTI4ZjRhODViNGFkZTQ0NGM0M2Y1YWRkZjIzMTdmNDI2NWI3
Li5jYjQ4YWRmZmYxNmRiNjMyNDFjMjUwZDk3MjgyZGRhNjU1NDQ5NTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0lDU3RhdHMuaApAQCAtNjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8o
T3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKKyAgICBtYWNybyhPcGVyYXRp
b25QdXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVy
YXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKICAgICBtYWNybyhQ
dXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXAp
IFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKaW5kZXggMDkxYzRmNzgyYTA3ODRmYzQ1MjVlZDIwNzk2OWNkMWI3ODc0NGU4Ni4uMTk2YzU1
NTY3NDg0ZjM2ZTFkOTIxZmJhN2FmZGNiZmJlOGVjOTA3YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcApAQCAtMjk4LDYgKzI5OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Njb3BlKQogICAgICAgICBE
RUZJTkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5F
X1NMT1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgICAgIERFRklORV9TTE9XX09QKGdl
dF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfaWRfd2l0aF90
aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAg
ICAgREVGSU5FX1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2lu
X2V2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3YjQ0MDc0OTYzMzM2ZmNiODk0MWVi
ZDA1YjU5NzMxMjlhOWU4NjU1Li4yYzk0YTJhYTE1MjcxMGEzZGEwMzQyZjJiNDM4YWY1ZmNhMGIz
MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTM5Nyw2ICszOTcsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEp1bXBMaXN0
IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
VHlwZWRBcnJheVR5cGUpOwogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAg
ICBQdXRCeVZhbEZsYWdzIHB1dEJ5VmFsRmxhZ3MoT3ApOworCiAgICAgICAgIC8vIElkZW50aWZp
ZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQg
ZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKEJ5VmFsSW5mbyosIFJlZ2lzdGVySUQgY2VsbCwgUmVn
aXN0ZXJJRCBzY3JhdGNoLCBjb25zdCBJZGVudGlmaWVyJiwgSnVtcExpc3QmIHNsb3dDYXNlcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKaW5kZXggOTIwYjcyMDNlM2NmNGJmMDZlZWQ0NTczYTM5Y2I1NmJjY2E2NWQ1
YS4uNWJjMGZhYTQyMzk2MTUyYjU3ZDBiMTc5Y2JmNjE2OThlM2RjNjUxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
QEAgLTEzNiwxMSArMTM2LDEyIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9y
OjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVl
LCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2lu
ZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQdXRCeVZhbEZsYWdz
IGZsYWdzKQogICAgIDogSklUQnlJZEdlbmVyYXRvcigKICAgICAgICAgY29kZUJsb2NrLCBjb2Rl
T3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2
YWx1ZSkKICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX3B1dEtpbmQocHV0S2lu
ZCkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVy
cy5jbGVhcihzY3JhdGNoKTsKIH0KQEAgLTE1Miw2ICsxNTMsMTQgQEAgdm9pZCBKSVRQdXRCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklU
T3BlcmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigp
CiB7CisgICAgaWYgKFVOTElLRUxZKG1fZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVOYW1lKSkgewor
ICAgICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2Vj
bWFNb2RlID09IFN0cmljdE1vZGUpOworICAgICAgICBpZiAobV9mbGFncyAmIFB1dEJ5VmFsVGhy
b3dJZkV4aXN0cykKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0
ZVN0cmljdE9wdGltaXplOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZh
dGVTdHJpY3RPcHRpbWl6ZTsKKyAgICB9CisKICAgICBpZiAobV9lY21hTW9kZSA9PSBTdHJpY3RN
b2RlKSB7CiAgICAgICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBiZmI5
MDIxNmIyOWMyN2ZmZDBlZDhkN2YwZjU4N2UwOGZlNmU3MzE2Li4xNDhmMWJjOWJmMGQzYjYxMjMy
OWMzNDU0ZTQwOGNkNjFlMDIzZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtp
bmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsNyArMTMyLDcgQEAgcHVi
bGljOgogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29k
ZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMs
IEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQdXRCeVZhbEZsYWdzKTsKICAgICAKICAg
ICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0MCw2
ICsxNDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAg
ICAgUHV0S2luZCBtX3B1dEtpbmQ7CisgICAgUHV0QnlWYWxGbGFncyBtX2ZsYWdzOwogfTsKIAog
Y2xhc3MgSklUSW5CeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyM2ZmNWM4MWMxYzAzMjIyZjkx
MmE0OTkzMWYyODM2ZGFkY2ZhY2I3Li43MzkxNGY0MDlmYjkxNjMxZjg2MzcxYWI0ZGVhNmRmYzEz
NzViYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjYzLDYg
KzY2MywxOCBAQCBBTFdBWVNfSU5MSU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFy
aXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKICAgICByZXR1cm4gYXJpdGhQcm9maWxlOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK0FMV0FZU19JTkxJTkUgUHV0QnlWYWxGbGFncyBK
SVQ6OnB1dEJ5VmFsRmxhZ3MoT3ApCit7CisgICAgcmV0dXJuIFB1dEJ5VmFsTm9uZTsKK30KKwor
dGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBQdXRCeVZhbEZsYWdzIEpJVDo6cHV0QnlWYWxGbGFn
czxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQoreworICAgIHJldHVybiBv
cC5tX2ZsYWdzOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBl
MzYyNjczMjVjNzRhZTIyZjg2MThlYTllMmFkMDAyZTQ4ZGM2MzM0Li45YTc5ZTU0ODQwMmYxYzkz
YzBkYTZlOGMyODE5YTg0ZmI3MTE3MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTY3OCw2ICs2NzgsMTEzIEBAIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9
CiAKK30gLy8gZXh0ZXJuICJDIgorCit1c2luZyBQdXRQcml2YXRlRmllbGRDYWxsYmFjayA9IHN0
ZDo6ZnVuY3Rpb248dm9pZChWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSosIFB1dFByb3BlcnR5
U2xvdCYsIGNvbnN0IElkZW50aWZpZXImKT47CitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1
dFByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgSlNWYWx1ZSB2YWx1ZSwgUHV0S2luZCBwdXRLaW5kLCBjb25zdCBQdXRQcml2YXRlRmllbGRD
YWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQoreworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgaWRl
bnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgIEFTU0VSVChpZGVudC5pc1By
aXZhdGVOYW1lKCkpOworICAgIEFTU0VSVChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUgfHwg
cHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRlKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAg
IGJvb2wgZm91bmQgPSBiYXNlT2JqZWN0LT5pc1Byb3h5KCkgPyBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpCisgICAgICAg
IDogYmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0QWRkUHJpdmF0ZSAmJiBmb3VuZCkKKyAgICAgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihn
bG9iYWxPYmplY3QpKTsKKyAgICBlbHNlIGlmIChwdXRLaW5kID09IERpcmVjdFB1dFByaXZhdGUg
JiYgIWZvdW5kKQorICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsK
KyAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxvY2st
PnB1dEJ5SWRDb250ZXh0KCkpOworICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJl
aWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIGlkZW50LCB2YWx1ZSwgcHV0U2xvdCwg
JnN0cnVjdHVyZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKwor
ICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJhY2sodm0sIGNvZGVCbG9jaywgc3RydWN0
dXJlLCBwdXRTbG90LCBpZGVudCk7Cit9CisKK2V4dGVybiAiQyIgeworCit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIGJhc2VWYWx1ZSwgdWlkLCB2YWx1ZSwgRGlyZWN0QWRkUHJpdmF0ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8
QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworICAgIHB1dFByaXZhdGVG
aWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIHVpZCwgdmFsdWUs
IERpcmVjdEFkZFByaXZhdGUsIFs9XShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWRB
ZGRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwg
aWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAgICAgICBpZiAoYWNj
ZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRC
eUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50
LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdEFkZFByaXZhdGUpOworICAgIH0pOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOworCisgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgYmFzZVZhbHVlLCB1aWQsIHZhbHVlLCBEaXJlY3RQdXRQcml2YXRlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNP
YmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisgICAgcHV0UHJpdmF0ZUZpZWxk
KHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9iamVjdCwgdWlkLCB2YWx1ZSwgRGly
ZWN0UHV0UHJpdmF0ZSwgWyZdKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVu
dCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOworCisgICAgICAgIGlmIChhY2Nlc3NU
eXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGlu
Zyh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQo
Z2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHB1
dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHV0UHJpdmF0ZSk7CisgICAgfSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwogQUxXQVlTX0lOTElORSBzdGF0aWMg
Ym9vbCBpc1N0cmluZ09yU3ltYm9sKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVl
LmlzU3RyaW5nKCkgfHwgdmFsdWUuaXNTeW1ib2woKTsKQEAgLTc4MSw2ICs4ODgsMTYgQEAgc3Rh
dGljIHZvaWQgZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEoKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgIGlmIChwcm9wZXJ0
eS5pc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgLy8gVGhyb3cgYSBUeXBlRXJyb3IgaWYgYXR0
ZW1wdGluZyB0byBzdG9yZSB0byBhIG5vbi1leGlzdGVudCBwcml2YXRlIGZpZWxkLiBUaGlzIGlz
IHNpbWlsYXIgdG8gYSBURFotbGlrZSBiZWhhdmlvdXIuCisgICAgICAgIGF1dG8gYnl0ZWNvZGUg
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCkt
PmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VP
YmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAg
ICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0
LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICAgICAgaWYgKGZvdW5kID09ICEh
KGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpKSB7CisgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBmb3VuZCA/IGNyZWF0ZVJlZGVm
aW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSA6IGNyZWF0ZUludmFsaWRQcml2YXRl
TmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQogICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9i
YWxPYmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5kZXggNjIxMGM1YTA3MzQxOTY4
M2Q2MGVhOGM0OGNkNDNlZWZmODJhMzAwYy4uNDVjMjNmMGNhYWY0MTJkM2Q3ZWZmZjY1NGZiMzY5
NTFhYjFmZjM4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
QEAgLTE4OCw2ICsxODgsMTAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHUKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
Tm9uU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0
dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbEdlbmVyaWMoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGFiZjUy
ZjcxM2U4YWEwYWZiNWU4MDVjN2NmM2YxZDM4ODM3MWMyZjYuLjJiM2I5OWUzZjVjNDQ3ZTg4YjMz
OGM3YmE2ODYyMjU4MjMwNzY2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgSklUUHV0QnlJZEdlbmVy
YXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywg
T3AgYnl0ZWMKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVC
bG9jay0+ZWNtYU1vZGUoKSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtp
bmQsIHB1dEJ5VmFsRmxhZ3MoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgZW1pdFdyaXRlQmFycmllcihiYXNlLCB2YWx1ZSwgU2hvdWxkRmlsdGVyQmFz
ZSk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwpAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBtX2NvZGVCbG9j
ay0+ZWNtYU1vZGUoKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAg
ICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQdXRCeVZhbE5vbmUpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXggNWNjN2RmOWM1NDE4OWM3Y2IzZDQwOTFiNWM0ZjRj
OGJkYWVlZjE0Yy4uMzU5YzY1MDcxMjlhZTUzYjc3OTBkNzBkMTAwMzczMDIzMTVhNWEzOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCkBAIC0zNjUsNyArMzY1LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQ
dXRCeVZhbFdpdGhDYWNoZWRJZChCeVZhbEluZm8qIGJ5VmFsSW5mbywgT3AgYnl0ZWMKIAogICAg
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6
OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIG1f
Y29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIG1fY29k
ZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kLCBwdXRCeVZhbEZsYWdzKGJ5dGVjb2RlKSk7CiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVt
cCgpKTsKIApAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChj
b25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIG1fY29kZUJs
b2NrLT5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICBy
ZWdUMSwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVj
dCwgUHV0QnlWYWxOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCmluZGV4IDA4Njk2YjFmM2E0OGZjYWI2N2RmZGYxZDA4MTkyNWUzNGQ5
MWI3NjUuLjEzOTQ3NzViZGI3ODU3ZWYxMTdmZmMwNjM2ODlkMDk0NTdhZmJlNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTIwLDYgKzUyMCwxMCBAQCBzdGF0aWMg
Vl9KSVRPcGVyYXRpb25fR1NzaUpKSSBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24o
Y29uc3QgUHV0UHJvcGVydAogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAg
IGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0U3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RBZGRQcml2YXRl
KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0Owor
ICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRlKQorICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0OwogICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZFN0cmljdDsKICAgICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpA
QCAtNTMyLDYgKzUzNiwxMCBAQCBzdGF0aWMgVl9KSVRPcGVyYXRpb25fR1NzaUpKSSBhcHByb3By
aWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcAogICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CisgICAg
ICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUpCisgICAgICAgICAgICByZXR1cm4g
b3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdE9wdGltaXplOwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3Qp
CkBAIC02MjQsNiArNjMyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0
QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vz
c0NoYWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRp
dGlvblNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHV0UHJpdmF0ZSAmJiBw
dXRLaW5kICE9IERpcmVjdEFkZFByaXZhdGUpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGNh
Y2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2VDZWxs
LCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtNjQxLDYgKzY1MCwx
MyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0QWRk
UHJpdmF0ZSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFt
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRp
b25zRm9yUHJvcGVydHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgbmV3U3RydWN0
dXJlLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNl
dC5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNo
ZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNz
Q2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIGlkZW50LCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwg
bmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4p
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3Vz
dG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDcxMjVi
ZDRmNTFhZjgxNWI5ZDUwNjYxZWI3YTNjMjQxYTVhZDYwM2IuLjc1NjhkMjM2ZDNhZmI1ZmMxNGE2
Mzg3NDUxODc2Zjg5OTJmOTQ2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5j
bHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2lu
Y2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2lu
Y2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVDaGFpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKaW5kZXggYjkxMWVlMjc4MjYyNjZjNzNmNzZlMDk1NTQyYWRjNjU5MjUw
OGM2ZS4uYWE3NjNiYWY4ZTJmNWZiYmMzOGVjZGVhYzNhODFjN2IyOTFkZjQ4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDU5LDE0
ICsxMDU5LDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2Rp
cmVjdCkKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIGJvb2wgaXNTdHJp
Y3RNb2RlID0gY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsKKyAgICBib29sIGlzUHJpdmF0ZU5h
bWVBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlWYWxQcml2YXRlTmFtZTsKICAgICBp
ZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAvLyBEZXNwaXRlIGl0
cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0
aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGluZGlj
ZXMuCiAgICAgICAgIEFTU0VSVChpc0luZGV4KHN1YnNjcmlwdC5hc1VJbnQzMigpKSk7CisgICAg
ICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZUFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1
dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0LmFzVUludDMyKCksIHZhbHVlLCAw
LCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5k
ZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAogICAgIGlm
IChzdWJzY3JpcHQuaXNEb3VibGUoKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWVB
Y2Nlc3MpOwogICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNE
b3VibGUoKTsKICAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwogICAgICAgICBpZiAoc3Vic2NyaXB0QXNE
b3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikp
IHsKQEAgLTEwODAsOSArMTA4MywxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAorICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZh
dGVOYW1lKCkgPT0gaXNQcml2YXRlTmFtZUFjY2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0
cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7CisgICAgICAgIGlmIChpc1ByaXZhdGVOYW1lQWNjZXNz
KSB7CisgICAgICAgICAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKyAgICAg
ICAgICAgIC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBu
b24tZXhpc3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2Ug
YmVoYXZpb3VyLgorICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAgICBi
b29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9i
YWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBib29s
KGJ5dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpKQorICAgICAgICAgICAg
ICAgIExMSU5UX1RIUk9XKGZvdW5kID8gY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihn
bG9iYWxPYmplY3QpIDogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0
KSk7CisgICAgICAgIH0KICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
aXNTdHJpY3RNb2RlKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVp
Znkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDkzYzI5MDI1YjBkOTMwNWQ5OTU3MTAzZTE2NWI3
YWE4OTE0Y2JiMWQuLjM0YWVkMmI5NDc0ZjQwZTNhNGRhYzU4NjEwNjE5Y2MyMWUzMTkzODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCkBAIC0xNTA5LDY0ICsxNTA5LDY5IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIHNsb3dQYXRoTmFtZSwgb3NyRXhpdFBvaW50KQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfJW9wY29kZU5hbWUlLCAlb3Bjb2RlU3RydWN0JSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICAgICAg
Z2V0KG1fYmFzZSwgdDIpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNp
emUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBtb3ZlIHQwLCB0
MgorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZSwgdDIsIHQ1LCB0MSkKKyAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgSW50MzJUYWcsIHQxLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0s
IHQzCisgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCisgICAgICAgIGJpZXEgdDIs
IEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCisgICAgICAgIGJpbmVxIHQyLCBD
b250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cworCisgICAgLm9wR2V0QnlW
YWxJc0NvbnRpZ3VvdXM6CisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVy
ICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZh
bFNsb3cKKyAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICAgICAgam1wIC5vcEdldEJ5VmFs
RG9uZQorCisgICAgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgorICAgICAgICBiaW5lcSB0Miwg
RG91YmxlU2hhcGUsIC5vcEdldEJ5VmFsTm90RG91YmxlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6
ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5n
dGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAor
ICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgIyBGSVhN
RTogVGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgorICAgICAgICBmZDJpaSBmdDAs
IHQxLCB0MgorICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBqbXAgLm9wR2V0QnlWYWxO
b3RFbXB0eQorCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6CisgICAgICAgIHN1YmkgQXJyYXlT
dG9yYWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBl
IC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBiaWFlcSB0MSwg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9y
TGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgbG9hZGkgQXJyYXlT
dG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKworICAgIC5v
cEdldEJ5VmFsRG9uZToKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgYmllcSB0Miwg
RW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgLm9wR2V0QnlWYWxOb3RFbXB0eToK
KyAgICAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICAgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bj
b2RlU3RydWN0JSwgdDUsIHQyLCB0MSkKKyAgICAgICAgZGlzcGF0Y2goKQogCi1sbGludE9wV2l0
aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICBnZXQo
bV9iYXNlLCB0MikKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5
UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEp
Ci0gICAgZ2V0KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBsb2FkcCBK
U09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MwotICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ss
IHQyCi0gICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXMKLSAg
ICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKLQot
Lm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6Ci0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdl
dEJ5VmFsU2xvdwotICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgotICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLSAgICBqbXAgLm9wR2V0QnlWYWxEb25lCi0K
LS5vcEdldEJ5VmFsTm90Q29udGlndW91czoKLSAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUsIC5v
cEdldEJ5VmFsTm90RG91YmxlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFs
U2xvdwotICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKLSAgICBiZG5lcXVuIGZ0MCwgZnQwLCAu
b3BHZXRCeVZhbFNsb3cKLSAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hc3NpdmVseSBvcHRp
bWl6ZWQuCi0gICAgZmQyaWkgZnQwLCB0MSwgdDIKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGpt
cCAub3BHZXRCeVZhbE5vdEVtcHR5Ci0KLS5vcEdldEJ5VmFsTm90RG91YmxlOgotICAgIHN1Ymkg
QXJyYXlTdG9yYWdlU2hhcGUsIHQyCi0gICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdlU2hh
cGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgYmlhZXEgdDEsIC1z
aXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxl
bmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQotCi0ub3BHZXRCeVZhbERvbmU6
Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRC
eVZhbFNsb3cKLS5vcEdldEJ5VmFsTm90RW1wdHk6Ci0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHQyLCB0MSkKLSAgICBkaXNwYXRjaCgpCisg
ICAgLm9wR2V0QnlWYWxTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGhOYW1lKQor
ICAgICAgICBkaXNwYXRjaCgpCiAKLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAub3NyUmV0
dXJuUG9pbnQ6CisgICAgICAgIG9zckV4aXRQb2ludChzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQor
ICAgIGVuZCkKK2VuZAogCi0ub3NyUmV0dXJuUG9pbnQ6CitnZXRCeVZhbE9wKGdldF9ieV92YWws
IE9wR2V0QnlWYWwsIF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCwgbWFjcm8oc2l6ZSwgbWV0
YWRhdGEsIHJldHVybikKICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0
X2J5X3ZhbCwgc2l6ZSkKICAgICBtZXRhZGF0YSh0MiwgdDMpCiAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQyLCByMSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKLQogZW5kKQogCitnZXRC
eVZhbE9wKGdldF9ieV92YWxfZGlyZWN0LCBPcEdldEJ5VmFsRGlyZWN0LCBfc2xvd19wYXRoX2dl
dF9ieV92YWxfZGlyZWN0LCBtYWNybyhhLCBiLCBjKSBlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGI2ZWU5OWUzNjNhZjFm
ZmQ0MWI5MTI1NDRjNTBkZTkyZjFhNGYyZDMuLjgzZGRlZDJkN2QxMzViNjdmYTA1N2JjNzQ3MDVi
NDY0NWQ4ZmM1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNDkyLDE4NCArMTQ5MiwxODcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCittYWNybyBnZXRCeVZhbE9wKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwgc2xvd1BhdGhOYW1lKQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
JW9wY29kZU5hbWUlLCAlb3Bjb2RlU3RydWN0JSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisgICAgICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwg
c2NyYXRjaCkKKyAgICAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKKyAgICAgICAgICAgIHN0
b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUo
JW9wY29kZVN0cnVjdCUsIHQ1LCByZXN1bHQpCisgICAgICAgICAgICBkaXNwYXRjaCgpCisgICAg
ICAgIGVuZAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWws
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1hY3Jv
IGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICAgICAgZ2V0KG1fZHN0LCBzY3Jh
dGNoKQotICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHJlc3VsdCkKLSAgICAgICAgZGlzcGF0Y2goKQot
ICAgIGVuZAorICAgICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gp
CisgICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKKyAgICAgICAgICAgIGZpbmlzaEdl
dEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5pc2hJ
bnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHJlc3Vs
dAotICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgZW5kCisgICAg
ICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gy
KQorICAgICAgICAgICAgZmQycSByZXN1bHQsIHNjcmF0Y2gxCisgICAgICAgICAgICBzdWJxIG51
bWJlclRhZywgc2NyYXRjaDEKKyAgICAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBz
Y3JhdGNoMikKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5pc2hEb3VibGVHZXRCeVZhbChy
ZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICAgICAgZmQycSByZXN1bHQsIHNjcmF0Y2gx
Ci0gICAgICAgIHN1YnEgbnVtYmVyVGFnLCBzY3JhdGNoMQotICAgICAgICBmaW5pc2hHZXRCeVZh
bChzY3JhdGNoMSwgc2NyYXRjaDIpCi0gICAgZW5kCisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikK
IAotICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICAgICAgZ2V0KG1fYmFzZSwgdDIpCisgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93
KQogCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
c2l6ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0KLSAgICBtb3ZlIHQwLCB0MgotICAgIGFy
cmF5UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwg
dDEpCi0KLSAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIHN4aTJxIHQxLCB0MQot
Ci0gICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVt
YmVyVGFnKQotICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJUYWcKLQotICAgIGFuZGkgSW5kZXhp
bmdTaGFwZU1hc2ssIHQyCi0gICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0Nv
bnRpZ3VvdXMKLSAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENv
bnRpZ3VvdXMKLQotLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6Ci0gICAgYmlhZXEgdDEsIC1zaXpl
b2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0
aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEgW3Qz
LCB0MSwgOF0sIHQyCi0gICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93Ci0gICAgam1wIC5vcEdl
dEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6Ci0gICAgYmluZXEgdDIsIERv
dWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIElu
ZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNd
LCAub3BHZXRCeVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRkIFt0MywgdDEs
IDhdLCBmdDAKLSAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKLSAgICBmZDJx
IGZ0MCwgdDIKLSAgICBzdWJxIG51bWJlclRhZywgdDIKLSAgICBqbXAgLm9wR2V0QnlWYWxEb25l
Ci0gICAgCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBl
LCB0MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdl
U2hhcGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UKLSAgICBiaWFlcSB0MSwgLXNpemVv
ZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3Ro
W3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkcSBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0MSwgOF0sIHQyCi0gICAgYnRxeiB0MiwgLm9wR2V0QnlW
YWxTbG93Ci0KLS5vcEdldEJ5VmFsRG9uZToKLSAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQot
ICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0NSwgdDIpCi0gICAgZGlzcGF0Y2goKQorICAg
ICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKIAotLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKLSAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYgd2UgZXZlbiBoYXZlIGEgdHlw
ZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBsYXRlIHVwIGZyb250LgotICAg
IGxvYWRiIEpTQ2VsbDo6bV90eXBlW3QwXSwgdDIKLSAgICBzdWJpIEZpcnN0VHlwZWRBcnJheVR5
cGUsIHQyCi0gICAgYmlhZXEgdDIsIE51bWJlck9mVHlwZWRBcnJheVR5cGVzRXhjbHVkaW5nRGF0
YVZpZXcsIC5vcEdldEJ5VmFsU2xvdwotICAgIAotICAgICMgU3dlZXQsIG5vdyB3ZSBrbm93IHRo
YXQgd2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBzb21lIGJhc2ljIHRoaW5ncyBub3cuCisgICAg
ICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUlu
dDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBzeGkycSB0MSwgdDEK
IAotICAgIGlmIEFSTTY0RQotICAgICAgICBjb25zdCBsZW5ndGggPSB0NgotICAgICAgICBjb25z
dCBzY3JhdGNoID0gdDcKLSAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3Ro
W3QwXSwgbGVuZ3RoCi0gICAgICAgIGJpYWVxIHQxLCBsZW5ndGgsIC5vcEdldEJ5VmFsU2xvdwot
ICAgIGVsc2UKLSAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFsbHkg
dW5kZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24gb3Ro
ZXIgcGxhdGZvcm1zLgotICAgICAgICBiaWFlcSB0MSwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVu
Z3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZW5kCisgICAgICAgIGxvYWRDYWdlZEpTVmFs
dWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKKyAgICAgICAgbW92
ZSBUYWdOdW1iZXIsIG51bWJlclRhZwogCi0gICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1f
dmVjdG9yW3QwXSwgdDMKLSAgICBjYWdlZFByaW1pdGl2ZSh0MywgbGVuZ3RoLCB0MCwgc2NyYXRj
aCkKLQotICAgICMgTm93IGJpc2VjdCB0aHJvdWdoIHRoZSB2YXJpb3VzIHR5cGVzOgotICAgICMg
ICAgSW50OEFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQ4QXJyYXlUeXBlLAotICAgICMgICAgVWlu
dDhDbGFtcGVkQXJyYXlUeXBlLAotICAgICMgICAgSW50MTZBcnJheVR5cGUsCi0gICAgIyAgICBV
aW50MTZBcnJheVR5cGUsCi0gICAgIyAgICBJbnQzMkFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQz
MkFycmF5VHlwZSwKLSAgICAjICAgIEZsb2F0MzJBcnJheVR5cGUsCi0gICAgIyAgICBGbG9hdDY0
QXJyYXlUeXBlLAotCi0gICAgYmlhIHQyLCBVaW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJy
YXlUeXBlLCAub3BHZXRCeVZhbEFib3ZlVWludDE2QXJyYXkKLQotICAgICMgV2UgaGF2ZSBvbmUg
b2YgSW50OEFycmF5VHlwZSAuLiBVaW50MTZBcnJheVR5cGUuCi0gICAgYmlhIHQyLCBVaW50OENs
YW1wZWRBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEludDE2QXJy
YXlPclVpbnQxNkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5cGUgLi4u
IFVpbnQ4Q2xhbXBlZEFycmF5VHlwZQotICAgIGJpYSB0MiwgSW50OEFycmF5VHlwZSAtIEZpcnN0
VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDhBcnJheU9yVWludDhDbGFtcGVkQXJyYXkK
LQotICAgICMgV2UgaGF2ZSBJbnQ4QXJyYXlUeXBlLgotICAgIGxvYWRic2kgW3QzLCB0MV0sIHQw
Ci0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbFVpbnQ4QXJyYXlP
clVpbnQ4Q2xhbXBlZEFycmF5OgotICAgIGJpYSB0MiwgVWludDhBcnJheVR5cGUgLSBGaXJzdFR5
cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5Ci0KLSAgICAjIFdlIGhh
dmUgVWludDhBcnJheVR5cGUuCi0gICAgbG9hZGIgW3QzLCB0MV0sIHQwCi0gICAgZmluaXNoSW50
R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgotICAgICMg
V2UgaGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCi0gICAgbG9hZGIgW3QzLCB0MV0sIHQwCi0g
ICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbEludDE2QXJyYXlPclVp
bnQxNkFycmF5OgotICAgICMgV2UgaGF2ZSBlaXRoZXIgSW50MTZBcnJheVR5cGUgb3IgVWludDE2
Q2xhbXBlZEFycmF5VHlwZS4KLSAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBl
ZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQotCi0gICAgIyBXZSBoYXZlIEludDE2
QXJyYXlUeXBlLgotICAgIGxvYWRoc2kgW3QzLCB0MSwgMl0sIHQwCi0gICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbFVpbnQxNkFycmF5OgotICAgICMgV2UgaGF2ZSBV
aW50MTZBcnJheVR5cGUuCi0gICAgbG9hZGggW3QzLCB0MSwgMl0sIHQwCi0gICAgZmluaXNoSW50
R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRCeVZhbEFib3ZlVWludDE2QXJyYXk6Ci0gICAgIyBX
ZSBoYXZlIG9uZSBvZiBJbnQzMkFycmF5VHlwZSAuLiBGbG9hdDY0QXJyYXlUeXBlLgotICAgIGJp
YSB0MiwgVWludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxG
bG9hdDMyQXJyYXlPckZsb2F0NjRBcnJheQotCi0gICAgIyBXZSBoYXZlIGVpdGhlciBJbnQzMkFy
cmF5VHlwZSBvciBVaW50MzJBcnJheVR5cGUKLSAgICBiaWEgdDIsIEludDMyQXJyYXlUeXBlIC0g
Rmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MzJBcnJheQotCi0gICAgIyBXZSBo
YXZlIEludDMyQXJyYXlUeXBlLgotICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAotICAgIGZpbmlz
aEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50MzJBcnJheToKLSAgICAjIFdl
IGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgICMgVGhpcyBpcyB0aGUgaGFyZGVzdCBwYXJ0IGJl
Y2F1c2Ugb2YgbGFyZ2UgdW5zaWduZWQgdmFsdWVzLgotICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0
MAotICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5VmFsU2xvdyAjIFRoaXMgY2FzZSBpcyBzdGlsbCBh
d2t3YXJkIHRvIGltcGxlbWVudCBpbiBMTEludC4KLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwg
dDEpCi0KLS5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXk6Ci0gICAgIyBXZSBo
YXZlIG9uZSBvZiBGbG9hdDMyQXJyYXlUeXBlIG9yIEZsb2F0NjRBcnJheVR5cGUuIFNhZGx5LCB3
ZSBjYW5ub3QgaGFuZGxlIEZsb2F0MzJBcnJheQotICAgICMgaW5saW5lIHlldC4gVGhhdCB3b3Vs
ZCByZXF1aXJlIHNvbWUgb2ZmbGluZWFzbSBjaGFuZ2VzLgotICAgIGJpZXEgdDIsIEZsb2F0MzJB
cnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFNsb3cKLQotICAgICMg
V2UgaGF2ZSBGbG9hdDY0QXJyYXlUeXBlLgotICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKLSAg
ICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKLSAgICBmaW5pc2hEb3VibGVHZXRC
eVZhbChmdDAsIHQwLCB0MSkKLQotLm9wR2V0QnlWYWxTbG93OgotICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2goKQorICAgICAgICBhbmRp
IEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BH
ZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAu
b3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgor
ICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGdl
dChtX2RzdCwgdDApCisgICAgICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0MgorICAgICAgICBidHF6
IHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQorCisgICAg
Lm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgorICAgICAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUs
IC5vcEdldEJ5VmFsTm90RG91YmxlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BH
ZXRCeVZhbFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZGQgW3QzLCB0
MSwgOF0sIGZ0MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKKyAg
ICAgICAgZmQycSBmdDAsIHQyCisgICAgICAgIHN1YnEgbnVtYmVyVGFnLCB0MgorICAgICAgICBq
bXAgLm9wR2V0QnlWYWxEb25lCisgICAgICAgIAorICAgIC5vcEdldEJ5VmFsTm90RG91YmxlOgor
ICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgorICAgICAgICBiaWEgdDIsIFNsb3dQ
dXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdElu
ZGV4ZWRTdG9yYWdlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNs
b3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZHEgQXJyYXlTdG9yYWdlOjpt
X3ZlY3Rvclt0MywgdDEsIDhdLCB0MgorICAgICAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNsb3cK
KworICAgIC5vcEdldEJ5VmFsRG9uZToKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0K
KyAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCB0NSwgdDIpCisgICAgICAgIGRp
c3BhdGNoKCkKIAotLm9zclJldHVyblBvaW50OgotICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1
cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQotICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDUsIHIwKQotICAgIHJldHVybihyMCkKKyAgICAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgorICAgICAgICAjIEZpcnN0IGxldHMgY2hlY2sgaWYg
d2UgZXZlbiBoYXZlIGEgdHlwZWQgYXJyYXkuIFRoaXMgbGV0cyB1cyBkbyBzb21lIGJvaWxlcnBs
YXRlIHVwIGZyb250LgorICAgICAgICBsb2FkYiBKU0NlbGw6Om1fdHlwZVt0MF0sIHQyCisgICAg
ICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKKyAgICAgICAgYmlhZXEgdDIsIE51bWJl
ck9mVHlwZWRBcnJheVR5cGVzRXhjbHVkaW5nRGF0YVZpZXcsIC5vcEdldEJ5VmFsU2xvdworICAg
ICAgICAKKyAgICAgICAgIyBTd2VldCwgbm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgdHlwZWQg
YXJyYXkuIERvIHNvbWUgYmFzaWMgdGhpbmdzIG5vdy4KIAotZW5kKQorICAgICAgICBpZiBBUk02
NEUKKyAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2CisgICAgICAgICAgICBjb25zdCBzY3Jh
dGNoID0gdDcKKyAgICAgICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0
MF0sIGxlbmd0aAorICAgICAgICAgICAgYmlhZXEgdDEsIGxlbmd0aCwgLm9wR2V0QnlWYWxTbG93
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRl
bnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1
c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgICAgIGJpYWVxIHQxLCBKU0FycmF5QnVm
ZmVyVmlldzo6bV9sZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZW5kCisKKyAg
ICAgICAgbG9hZHAgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMKKyAgICAgICAg
Y2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgdDAsIHNjcmF0Y2gpCisKKyAgICAgICAgIyBOb3cg
YmlzZWN0IHRocm91Z2ggdGhlIHZhcmlvdXMgdHlwZXM6CisgICAgICAgICMgICAgSW50OEFycmF5
VHlwZSwKKyAgICAgICAgIyAgICBVaW50OEFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50OENs
YW1wZWRBcnJheVR5cGUsCisgICAgICAgICMgICAgSW50MTZBcnJheVR5cGUsCisgICAgICAgICMg
ICAgVWludDE2QXJyYXlUeXBlLAorICAgICAgICAjICAgIEludDMyQXJyYXlUeXBlLAorICAgICAg
ICAjICAgIFVpbnQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBGbG9hdDMyQXJyYXlUeXBlLAor
ICAgICAgICAjICAgIEZsb2F0NjRBcnJheVR5cGUsCisKKyAgICAgICAgYmlhIHQyLCBVaW50MTZB
cnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEFib3ZlVWludDE2QXJy
YXkKKworICAgICAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5cGUgLi4gVWludDE2QXJy
YXlUeXBlLgorICAgICAgICBiaWEgdDIsIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZSAtIEZpcnN0VHlw
ZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJyYXkKKworICAgICAg
ICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5cGUgLi4uIFVpbnQ4Q2xhbXBlZEFycmF5VHlw
ZQorICAgICAgICBiaWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAu
b3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5CisKKyAgICAgICAgIyBXZSBo
YXZlIEludDhBcnJheVR5cGUuCisgICAgICAgIGxvYWRic2kgW3QzLCB0MV0sIHQwCisgICAgICAg
IGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDhBcnJheU9y
VWludDhDbGFtcGVkQXJyYXk6CisgICAgICAgIGJpYSB0MiwgVWludDhBcnJheVR5cGUgLSBGaXJz
dFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5CisKKyAgICAgICAg
IyBXZSBoYXZlIFVpbnQ4QXJyYXlUeXBlLgorICAgICAgICBsb2FkYiBbdDMsIHQxXSwgdDAKKyAg
ICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxVaW50OENs
YW1wZWRBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQ4Q2xhbXBlZEFycmF5VHlwZS4KKyAg
ICAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKKworICAgIC5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJyYXk6CisgICAgICAgICMg
V2UgaGF2ZSBlaXRoZXIgSW50MTZBcnJheVR5cGUgb3IgVWludDE2Q2xhbXBlZEFycmF5VHlwZS4K
KyAgICAgICAgYmlhIHQyLCBJbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5v
cEdldEJ5VmFsVWludDE2QXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgSW50MTZBcnJheVR5cGUu
CisgICAgICAgIGxvYWRoc2kgW3QzLCB0MSwgMl0sIHQwCisgICAgICAgIGZpbmlzaEludEdldEJ5
VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDE2QXJyYXk6CisgICAgICAgICMgV2Ug
aGF2ZSBVaW50MTZBcnJheVR5cGUuCisgICAgICAgIGxvYWRoIFt0MywgdDEsIDJdLCB0MAorICAg
ICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbEFib3ZlVWlu
dDE2QXJyYXk6CisgICAgICAgICMgV2UgaGF2ZSBvbmUgb2YgSW50MzJBcnJheVR5cGUgLi4gRmxv
YXQ2NEFycmF5VHlwZS4KKyAgICAgICAgYmlhIHQyLCBVaW50MzJBcnJheVR5cGUgLSBGaXJzdFR5
cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5CisKKyAg
ICAgICAgIyBXZSBoYXZlIGVpdGhlciBJbnQzMkFycmF5VHlwZSBvciBVaW50MzJBcnJheVR5cGUK
KyAgICAgICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5v
cEdldEJ5VmFsVWludDMyQXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgSW50MzJBcnJheVR5cGUu
CisgICAgICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZh
bCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQzMkFycmF5OgorICAgICAgICAjIFdlIGhh
dmUgVWludDMyQXJyYXlUeXBlLgorICAgICAgICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCBi
ZWNhdXNlIG9mIGxhcmdlIHVuc2lnbmVkIHZhbHVlcy4KKyAgICAgICAgbG9hZGkgW3QzLCB0MSwg
NF0sIHQwCisgICAgICAgIGJpbHQgdDAsIDAsIC5vcEdldEJ5VmFsU2xvdyAjIFRoaXMgY2FzZSBp
cyBzdGlsbCBhd2t3YXJkIHRvIGltcGxlbWVudCBpbiBMTEludC4KKyAgICAgICAgZmluaXNoSW50
R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlPckZsb2F0NjRB
cnJheToKKyAgICAgICAgIyBXZSBoYXZlIG9uZSBvZiBGbG9hdDMyQXJyYXlUeXBlIG9yIEZsb2F0
NjRBcnJheVR5cGUuIFNhZGx5LCB3ZSBjYW5ub3QgaGFuZGxlIEZsb2F0MzJBcnJheQorICAgICAg
ICAjIGlubGluZSB5ZXQuIFRoYXQgd291bGQgcmVxdWlyZSBzb21lIG9mZmxpbmVhc20gY2hhbmdl
cy4KKyAgICAgICAgYmllcSB0MiwgRmxvYXQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5
cGUsIC5vcEdldEJ5VmFsU2xvdworCisgICAgICAgICMgV2UgaGF2ZSBGbG9hdDY0QXJyYXlUeXBl
LgorICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisgICAgICAgIGJkbmVxdW4gZnQwLCBm
dDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBmaW5pc2hEb3VibGVHZXRCeVZhbChmdDAsIHQw
LCB0MSkKKworICAgIC5vcEdldEJ5VmFsU2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNsb3dQ
YXRoTmFtZSkKKyAgICAgICAgZGlzcGF0Y2goKQorCisgICAgLm9zclJldHVyblBvaW50OgorICAg
ICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfJW9wY29kZU5hbWUlLCBzaXpl
KQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2Rl
U3RydWN0JSwgdDUsIHIwKQorICAgICAgICByZXR1cm4ocjApCisgICAgZW5kKQorZW5kCisKK2dl
dEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
dmFsKQogCitnZXRCeVZhbE9wKGdldF9ieV92YWxfZGlyZWN0LCBPcEdldEJ5VmFsRGlyZWN0LCBf
c2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5h
bWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAppbmRleCA0YzYxNzMwZWRlYzhhZGViZTk1ZDY5ZmFhNzA1ZWMxYzIwYmY1ZTk4Li44MzVj
ZDAzMDgyOTFhMmM4NzVmMjlkZWQ2YjFkYmY2OWNiNjcxNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjcwLDEyICsyNzAsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
RG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciogcHJvcGVydHksIERvdFR5cGUgdHlwZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAg
ICAgewogICAgICAgICBpZiAoYmFzZS0+aXNTdXBlck5vZGUoKSkKICAgICAgICAgICAgIHVzZXNT
dXBlclByb3BlcnR5KCk7CiAgICAgICAgIAotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnBy
b3BlcnR5KTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSwgdHlwZSk7CiAg
ICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAg
ICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtNjUxLDYgKzY1MSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBub2RlLT5pc0Fzc2lnbm1lbnRMb2NhdGlvbigpOwogICAgIH0KIAorICAg
IGJvb2wgaXNQcml2YXRlTG9jYXRpb24oY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBub2RlLT5pc1ByaXZhdGVMb2NhdGlvbigpOworICAgIH0KKwogICAgIGJv
b2wgaXNPYmplY3RMaXRlcmFsKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCiAgICAgewogICAgICAg
ICByZXR1cm4gbm9kZS0+aXNPYmplY3RMaXRlcmFsKCk7CkBAIC0xNDM4LDE1ICsxNDQzLDE1IEBA
IEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2Rl
KiBub2RlID0gbnVsbHB0cjsKICAgICBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQ
dWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5jYWxsUHJpdmF0ZU5hbWUoKSkpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1f
cGFyc2VyQXJlbmEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwg
Y2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlk
ZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICBlbHNlIGlmICghcHJldmlvdXNCYXNlV2Fz
U3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVByaXZhdGVOYW1lKCkpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIG9ubHkgbmVlZGVkIGJlY2F1c2Ugd2UgaGF2ZW4n
dCB0YXVnaHQgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB0byBpbmxpbmUKICAgICAgICAgLy8gUmVm
bGVjdC5hcHBseSB5ZXQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkwNjY4LgogICAgICAgICBpZiAoIWRvdC0+YmFzZSgpLT5pc1Jlc29sdmVOb2RlKCkgfHwg
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlkZW50aWZpZXIoKSAhPSAi
UmVmbGVjdCIpCi0gICAgICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVw
dGgpOworICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRv
dC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5
Q2hpbGREZXB0aCk7CiAgICAgfQogICAgIGlmICghbm9kZSkKLSAgICAgICAgbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwor
ICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Np
b25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CkBAIC0xNTcxLDkgKzE1NzYsOSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcgog
ICAgIEFTU0VSVChsb2MtPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9k
ZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obG9jKTsKICAgICBpZiAob3Ag
PT0gT3BFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduRG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50
cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAotICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBu
b2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkaXZvdCwgc3RhcnQsIGVuZCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8o
ZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggOTdjYWJlMWMyNGNj
YTYxNDI3NzZiY2I2MTBjODI0MDY2OGMxOWRmYS4uNmNkYzMzZWNmNDg5ZjVkZTJkNWFjYzZlZjk2
NTFmNGFiOTc2Y2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAg
LTkzOSwxNCArOTM5LDE4IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICBy
ZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVO
VCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZhdGVO
YW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247Ci0gICAg
aWYgKGlzUHJpdmF0ZU5hbWUpCisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQg
PT0gJyMnOworICAgIGJvb2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworICAgIGlmIChpc0J1aWx0aW5OYW1lKQogICAgICAgICBz
aGlmdCgpOwogICAgIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
U291cmNlUHRyKCk7CiAgICAgdW5zaWduZWQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRM
aW5lU3RhcnRPZmZzZXQoKTsKLSAgICAKKworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAg
ICBzaGlmdCgpOworCiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAg
IHNoaWZ0KCk7CiAgICAgCkBAIC05NjEsMTEgKzk2NSwxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFy
Pjo6cAogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAt
IGlkZW50aWZpZXJTdGFydDsKICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlm
aWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoIWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKG1f
dm0sIGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVC
dWlsdGluSWRlbnRpZmllcihtX3ZtLCBpZGVudCkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIs
IGlkZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4i
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIGlmIChpc0J1aWx0aW5OYW1l
KQogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyKG1fdm0s
IG1fdm0ucHJvcGVydHlOYW1lcy0+bG9va1VwUHJpdmF0ZU5hbWUoKmlkZW50KSk7CiAgICAgICAg
ICAgICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3
b3JkKQogICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS5wcm9wZXJ0eU5h
bWVzLT51bmRlZmluZWRQcml2YXRlTmFtZTsKQEAgLTk3NiwyMCArOTgwLDIxIEBAIHRlbXBsYXRl
IDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUg
TGV4ZXI8TENoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBu
dWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
JiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcykp
ICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgYXV0byBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1l
ID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVS
ZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFp
blRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgICAgICBBU1NFUlQoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAgICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlw
ZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5
cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBS
RVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IElERU5UOworICAgICAg
ICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUg
PyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gSURFTlQ7Cisg
ICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAg
IHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBsYXRlIDw+CkBAIC0xMDA0LDIzICsxMDA5LDI3
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9
PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50
ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247Ci0gICAgaWYgKGlzUHJpdmF0ZU5h
bWUpCisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOworICAgIGJv
b2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uOworICAgIGlmIChpc0J1aWx0aW5OYW1lKQogICAgICAgICBzaGlmdCgpOwogCiAgICAg
Y29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBp
bnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3RhcnRPZmZzZXQoKTsKIAogICAg
IFVDaGFyIG9yQWxsQ2hhcnMgPSAwOwotICAgIAorCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisg
ICAgICAgIHNoaWZ0KCk7CisKICAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkgewog
ICAgICAgICBvckFsbENoYXJzIHw9IG1fY3VycmVudDsKICAgICAgICAgc2hpZnQoKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewotICAgICAgICBB
U1NFUlQoIWlzUHJpdmF0ZU5hbWUpOworICAgICAgICBBU1NFUlQoIWlzQnVpbHRpbk5hbWUpOwog
ICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmll
ckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50aWZpZXJTbG93Q2FzZTxzaG91
bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwog
ICAgIH0KQEAgLTEwMzksMTEgKzEwNDgsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOwogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoIWlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKG1fdm0s
IGlkZW50KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgICAgICAgICAgaWYgKCFpc1NhZmVCdWls
dGluSWRlbnRpZmllcihtX3ZtLCBpZGVudCkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSB1c2Ugb2YgJyIsIGlk
ZW50LT5zdHJpbmcoKSwgIicgaXMgZGlzYWxsb3dlZCBpbiBidWlsdGluIGZ1bmN0aW9ucy4iKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIGlmIChpc0J1aWx0aW5OYW1lKQog
ICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyKG1fdm0sIG1f
dm0ucHJvcGVydHlOYW1lcy0+bG9va1VwUHJpdmF0ZU5hbWUoKmlkZW50KSk7CiAgICAgICAgICAg
ICBlbHNlIGlmICgqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3Jk
KQogICAgICAgICAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAmbV92bS5wcm9wZXJ0eU5hbWVz
LT51bmRlZmluZWRQcml2YXRlTmFtZTsKQEAgLTEwNTQsNyArMTA2Myw3IEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8VUNoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxs
cHRyOwogICAgIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgp
ICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMp
KSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4
VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJl
c2VydmVkV29yZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0
aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWlu
VGFibGUuZW50cnkoKmlkZW50KTsKQEAgLTEwNzQsOCArMTA4MywxMyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEpTVG9rZW5UeQogewogICAgIHRva2VuRGF0YS0+ZXNjYXBlZCA9IHRydWU7CiAgICAgYXV0byBp
ZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisgICAgYm9vbCBpc1ByaXZhdGVO
YW1lID0gKmlkZW50aWZpZXJTdGFydCA9PSAnIyc7CisgICAgYXV0byBpZGVudFR5cGUgPSBpc1By
aXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKICAgICBib29sIGJ1ZmZlclJlcXVpcmVk
ID0gZmFsc2U7CiAKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlmIChMSUtFTFkoaXNJZGVudFBhcnQobV9jdXJy
ZW50KSkpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC0xMDk1LDcgKzExMDksOCBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEpTVG9rZW5UeQogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHBhcnNlVW5pY29k
ZUVzY2FwZSgpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIWNoYXJhY3Rlci5pc1ZhbGlkKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3Rlci5pc0luY29tcGxldGUoKSA/IFVOVEVSTUlOQVRF
RF9JREVOVElGSUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LIDogSU5WQUxJRF9JREVOVElGSUVS
X1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LOwotICAgICAgICBpZiAoVU5MSUtFTFkobV9idWZmZXIx
Ni5zaXplKCkgPyAhaXNJZGVudFBhcnQoY2hhcmFjdGVyLnZhbHVlKCkpIDogIWlzSWRlbnRTdGFy
dChjaGFyYWN0ZXIudmFsdWUoKSkpKQorICAgICAgICBib29sIGlzSWRlbnRpZmllclN0YXJ0ID0g
aXNQcml2YXRlTmFtZSA/IG1fYnVmZmVyMTYuc2l6ZSgpID09IDEgOiAhbV9idWZmZXIxNi5zaXpl
KCk7CisgICAgICAgIGlmIChVTkxJS0VMWShpc0lkZW50aWZpZXJTdGFydCA/ICFpc0lkZW50U3Rh
cnQoY2hhcmFjdGVyLnZhbHVlKCkpIDogIWlzSWRlbnRQYXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSkp
CiAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9JREVOVElGSUVSX1VOSUNPREVfRVNDQVBFX0VS
Uk9SVE9LOwogICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAgICAg
IHJlY29yZFVuaWNvZGVDb2RlUG9pbnQoY2hhcmFjdGVyLnZhbHVlKCkpOwpAQCAtMTEyNCwxMyAr
MTEzOSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29s
IHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5UeQogICAgICAgICBBU1NFUlQoc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9
IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICghZW50cnkpCi0gICAg
ICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAg
ICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+
bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1Qp
IHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyUmVxdWlyZWQgPyBVTkVY
UEVDVEVEX0VTQ0FQRV9FUlJPUlRPSyA6IHRva2VuOwogICAgIH0KIAotICAgIHJldHVybiBJREVO
VDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29s
IGNoYXJhY3RlclJlcXVpcmVzUGFyc2VTdHJpbmdTbG93Q2FzZShMQ2hhciBjaGFyYWN0ZXIpCkBA
IC0yNDA4LDE0ICsyNDIzLDIxIEBAIHN0YXJ0OgogICAgICAgICBtX2hhc0xpbmVUZXJtaW5hdG9y
QmVmb3JlVG9rZW4gPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAg
ICAgZ290byBzdGFydDsKLSAgICBjYXNlIENoYXJhY3Rlckhhc2g6CisgICAgY2FzZSBDaGFyYWN0
ZXJIYXNoOiB7CiAgICAgICAgIC8vIEhhc2hiYW5nIGlzIG9ubHkgcGVybWl0dGVkIGF0IHRoZSBz
dGFydCBvZiB0aGUgc291cmNlIHRleHQuCi0gICAgICAgIGlmIChwZWVrKDEpID09ICchJyAmJiAh
Y3VycmVudE9mZnNldCgpKSB7CisgICAgICAgIGF1dG8gbmV4dCA9IHBlZWsoMSk7CisgICAgICAg
IGlmIChuZXh0ID09ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7CiAgICAgICAgICAgICBzaGlm
dCgpOwogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5l
Q29tbWVudDsKICAgICAgICAgfQorICAgICAgICAvLyBPdGhlcndpc2UsIGl0IGNvdWxkIGJlIGEg
dmFsaWQgUHJpdmF0ZU5hbWUuCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygp
ICYmIChpc0lkZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkgeworICAgICAgICAgICAg
bGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5d29yZHMpOworICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAgIGdvdG8gaW52YWxpZENo
YXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0
OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAppbmRleCBmZDk3YTBjYTkzNWU3ZTU3NzhhMDkzODUwMjJmOTg2NzgwMTRhMzI0
Li4wNmU2MDJhN2JkYTcyYmIyODIxOThmMjk3ZDgzYTQxYWE4ZTUxMjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMzI3LDEwICsz
MjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAg
aW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERv
dFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAgICAgICAsIG1fdHlw
ZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RB
Y2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUpCisgICAgICAg
IDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgIHsKICAgICB9
CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3RO
b2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJF
eHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9i
YXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJn
cykKICAgICB7CiAgICAgfQpAQCAtNDM3LDE0ICs0NDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5j
ZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkK
KyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBh
cmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5j
ZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5j
ZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKLSAg
ICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQor
ICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBl
LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAgICwgbV9kaXN0YW5j
ZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQog
ICAgIHsKICAgICB9CkBAIC03NTAsMjEgKzc1NCwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3Np
Z25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNl
LCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwg
bV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmln
aHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgUmVhZE1vZGlm
eURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlw
ZSB0eXBlLCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAg
ICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAg
LCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
Ci0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAg
ICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAg
LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggOWQxY2ZhNGYxNzYxMzAyYTMzYmJhZTMxZWY2
MGZkZmNhZjIwN2RmNS4uMTFiZjRhNjg0YTFiZDlhMDkzZWI4ZWIxNmUxZTEzNzI2NjIwZDM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTMzNSw3ICszMzUsNyBA
QCBib29sIFByb3BlcnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0
IElkZW50aWZpZXImIHByb3BOYW1lKQogYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVh
dGVMZXhpY2FsU2NvcGVGb3JDbGFzcyhQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQogewogICAgIHdo
aWxlIChsaXN0KSB7Ci0gICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0Zp
ZWxkKCkpCisgICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkg
fHwgbGlzdC0+bV9ub2RlLT5pc1ByaXZhdGUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICBsaXN0ID0gbGlzdC0+bV9uZXh0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCA0OWFhYzQ3MzU4MDcwZTNmMzhiNzhjMjEyZjAyMzI5MTM1YTk2ZmJh
Li4yNjNmNjVmZDJlNjJlZDBhOThhYmM5OGRkNDU1ZmEwYzQ2MzcwZThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODIsNiArMTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2
YXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNBc3NpZ25tZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBpc0xvY2F0aW9uKCk7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25SZXNvbHZlTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC03MTIsNyArNzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0
aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFy
c2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50
OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgs
IFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50
OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgs
IFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CiAgICAgICAgIGVu
dW0gUHV0VHlwZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVjdCB9OwogCiAgICAgICAg
IFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQ
dXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03MzEsNiArNzMyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkgY29uc3QgeyBy
ZXR1cm4gaXNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAg
ICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VD
bGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBp
c092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlE
dXBsaWNhdGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgJiBQcml2YXRlOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQo
KSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQog
ICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRl
bkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzQxLDcgKzc0Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAg
ICAgICAgdW5zaWduZWQgbV90eXBlIDogNjsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsK
ICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2ln
bmVkIG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRU
YWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKQEAgLTgxMyw5ICs4MTUsMzAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50
czsKICAgICB9OwogCi0gICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIGVudW0g
Y2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVOYW1lIH07CisgICAgY2xhc3MgQmFzZURvdE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRG90QWNj
ZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7
CisKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7
IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnQ7IH0KKyAgICAgICAgRG90VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQorCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQ
cm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFBy
b3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
dmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdmFsdWUpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9iYXNlOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OworICAgICAg
ICBEb3RUeXBlIG1fdHlwZTsKKyAgICB9OworCisgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZp
bmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
eworICAgIHB1YmxpYzoKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7
IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnQ7IH0KQEAgLTgyNCwxMCArODQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CiAg
ICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0KLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwogCiAgICAgY2xhc3MgU3ByZWFkRXhwcmVzc2lv
bk5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CkBAIC05NDAsOSArOTYxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgRnVu
Y3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVi
bGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05v
ZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwpAQCAtOTUwLDggKzk3MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2Fy
Z3M7CiAgICAgfTsKIApAQCAtOTg4LDcgKzEwMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKKyAgICAgICAgQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CkBAIC05OTcsNyArMTAxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNp
emVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBBcHBseUZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC0x
NDMyLDI4ICsxNDUxLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fcmlnaHRI
YXNBc3NpZ25tZW50cyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CisgICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFz
c2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAg
ICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lk
ZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgYm9vbCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2Rl
IGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVz
c2lvbkRhdGEgeworICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEJh
c2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
RG90VHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgdW5zaWduZWQgbV9vcGVyYXRvciA6IDMx
OwogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CkBAIC0yMjM2LDcgKzIy
NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlZmluZUZpZWxkTm9kZSBmaW5h
bCA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gY2xh
c3MgVHlwZSB7IE5hbWUsIENvbXB1dGVkTmFtZSB9OworICAgICAgICBlbnVtIGNsYXNzIFR5cGUg
eyBOYW1lLCBQcml2YXRlTmFtZSwgQ29tcHV0ZWROYW1lIH07CiAgICAgICAgIERlZmluZUZpZWxk
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgRXhwcmVzc2lv
bk5vZGUqLCBUeXBlKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggMmExOTFjODU2MGM0ZTg3MzgwMTNlZjM1YWVmZjJiY2M2N2VmYWQw
Zi4uZTI1YmY1NmRlOGY3YjJjNTljMWRkZDI3YjQ2ZWMzNjAzNzA1ZDMwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODIwLDYgKzgyMCw4IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVmFyaWFibGVEZWNsCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSAwOwogICAgICAg
ICBkZWNsYXJhdGlvbnMrKzsKICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IGZhbHNlOwor
CisgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHBy
aXZhdGUgbmFtZSB0byBkZWNsYXJlIGEgdmFyaWFibGUiKTsKICAgICAgICAgaWYgKG1hdGNoU3Bl
Y0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChMRVQpICYmIChk
ZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8fCBkZWNs
YXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKSwgCiAgICAg
ICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBh
IExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMTI3OCw2ICsxMjgwLDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRGUKICAgICAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpE
ZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoZGVzdHJ1Y3R1cmluZ0tpbmRUb1Zh
cmlhYmxlS2luZE5hbWUoa2luZCkpOworICAgICAgICAgICAgaWYgKGtpbmQgIT0gRGVzdHJ1Y3R1
cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSBhcyBh
ICIsIGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKICAgICAgICAg
ICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBvciBhICcp
JyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwogICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goTEVUKSAmJiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0xldCB8
fCBraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvQ29uc3QpLCAiQ2Fubm90
IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4aWNhbERlY2xhcmF0aW9u
Iik7CkBAIC0yOTM4LDYgKzI5NDIsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBmYWls
SWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBwYXJzZSBjb21wdXRlZCBwcm9w
ZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJB
Q0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CisgICAgICAgICAgICBBU1NFUlQo
T3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSk7CisgICAgICAgICAgICBKU1Rva2VuIHRva2VuID0g
bV90b2tlbjsKKyAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAg
ICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRp
YyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CisgICAgICAgICAgICBmYWlsSWZU
cnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRo
IHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBBUkVO
LCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7
CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZh
dGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xh
cmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAg
ICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5
Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxh
ZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKQEAgLTI5NTMsOCArMjk3MCwx
MCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fu
bm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6dXNl
Q2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xhc3NFbGVtZW50
VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzR2V0dGVyICYmICFpc1NldHRlcik7Ci0gICAgICAg
ICAgICBpZiAoaWRlbnQpCisgICAgICAgICAgICBpZiAoaWRlbnQpIHsKICAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3Is
ICJDYW5ub3QgZGVjbGFyZSBjbGFzcyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InIik7CisgICAg
ICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yUHJpdmF0ZUZpZWxkLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBjbGFzcyBmaWVs
ZCBuYW1lZCAnI2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3Bh
cnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBu
dW1Db21wdXRlZEZpZWxkcysrKTsKQEAgLTMwMTgsNiArMzAzNywxMCBAQCBwYXJzZU1ldGhvZDoK
ICAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgLSAxOwogICAg
IGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIg
YSBjbGFzcyBib2R5Iik7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSkgewor
ICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3Bl
cyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KKyAgICAgICAgc2Vt
YW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgp
LCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKKyAgICB9CiAg
ICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlv
biwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3Ry
dWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAgICBwb3BTY29wZShjbGFzc1Nj
b3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICByZXR1cm4gY2xh
c3NFeHByZXNzaW9uOwpAQCAtMzA0MSw2ICszMDY0LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFu
Y2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAg
ICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6
TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgeworICAgICAgICBjYXNlIFBS
SVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJp
dmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBTVFJJTkc6
CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5d29yZDoKQEAgLTMwODAsNiAr
MzEwNiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgIGlmIChjb25zdW1lKEVR
VUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lv
bihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6
OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlk
ZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBkZWZpbmVGaWVsZCA9IGNvbnRl
eHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRlbnQsIGluaXRpYWxpemVyLCB0
eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIGRl
ZmluZUZpZWxkKTsKICAgICB9CkBAIC00NzcyLDYgKzQ4MDEsMjIgQEAgc3RhdGljIGlubGluZSB2
b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSosIFZNJiwgT3B0aW9uYWw8dHlw
ZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK2Jvb2wgUGFy
c2VyPExleGVyVHlwZT46OmVuc3VyZVByaXZhdGVOYW1lVXNlZChjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCkKK3sKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICBTY29wZVJlZiBj
dXJyZW50ID0gY3VycmVudFByaXZhdGVOYW1lU2NvcGUoJmZvdW5kKTsKKyAgICBpZiAoIWZvdW5k
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjdXJyZW50LT5oYXNQcml2YXRlTmFt
ZSgqaWRlbnQpKQorICAgICAgICBjdXJyZW50LT51c2VQcml2YXRlTmFtZSgqaWRlbnQpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CkBAIC00ODg3
LDYgKzQ5MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogCiAgICAgICAgICAgICBTYXZl
UG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRleHQpOwogICAgICAgICAgICAg
bmV4dCgpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1F
KSwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBpZGVudGlmaWVycyBpbiBhbiBvcHRpb25hbCBjaGFp
biIpOwogICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFDS0VUKSB8fCBtYXRjaChPUEVOUEFS
RU4pIHx8IG1hdGNoKEJBQ0tRVU9URSkpCiAgICAgICAgICAgICAgICAgdHlwZSA9IG1fdG9rZW4u
bV90eXBlOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00OTc0LDggKzUwMjAsMjEgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBtX3BhcnNlclN0YXRlLm5vblRyaXZp
YWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBleHBy
ZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICBuZXh0
RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMgfCBMZXhlckZs
YWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgICAgIGF1dG8g
dHlwZSA9IERvdFR5cGU6Ok5hbWU7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoKFBSSVZBVEVO
QU1FKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAg
ICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90IGFjY2VzcyBwcml2YXRlIG5h
bWVzIGZyb20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnJl
bnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFsQ29udGV4dFR5cGU6Okluc3RhbmNl
RmllbGRFdmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpLCAiQ2Fubm90IHJl
ZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIsIGlkZW50LT5pbXBsKCksICInIik7
CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoZW5zdXJlUHJpdmF0ZU5h
bWVVc2VkKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9m
IGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVO
YW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJp
YWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6
UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gSURFTlQ7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5ULCAi
RXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hhaW5CYXNlID8gIic/
LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFj
Y2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAg
ICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBp
ZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0
aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShiYXNlSXNTdXBlciAmJiBjdXJy
ZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3VwZXJQcm9wZXJ0
eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxNzAsNiArNTIyOSw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxF
VEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChjb250ZXh0LmlzUmVzb2x2
ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkgJyIsIG1fcGFyc2Vy
U3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJpdmF0ZUxvY2F0aW9uKGV4cHIp
LCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFyc2VyU3RhdGUubGFzdFByaXZh
dGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5v
ZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2Vu
U3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgpAQCAtNTI0MCw3ICs1MzAwLDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAg
Y2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAgICAgICAgb3V0LnByaW50KCJJ
bnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICBvdXQucHJp
bnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2VuKCkpOworICAgICAgICByZXR1
cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmlu
dCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzllYTA5NjZkYjYyNDU5NGYyYWMyYzM4Y2Y4
NGJjM2JjMzZlYzM1ZC4uNWJjNDYzMDdhMjUxMzEwMWQyZjFhODliNWVkMmZkZTJhZTYyMGMzYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xODEsNiArMTgxLDcgQEAg
cHVibGljOgogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQogICAgICAgICAsIG1faXNF
dmFsQ29udGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Qo
ZmFsc2UpCisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1lU2NvcGUoZmFsc2UpCiAgICAgICAgICwg
bV9pc0NsYXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9ldmFsQ29udGV4dFR5cGUoRXZhbENv
bnRleHRUeXBlOjpOb25lKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpAQCAtMjg5LDYgKzI5MCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lz
R2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5bmNGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb25Cb3Vu
ZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uQm91bmRhcnk7IH0KKyAgICBi
b29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRlTmFtZVNj
b3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NT
Y29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0Fy
Z3VtZW50czsgfQpAQCAtMzA1LDggKzMwNywxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYWxsb3dz
TGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQogCisgICAgdm9pZCBzZXRJc1ByaXZh
dGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pc1ByaXZhdGVOYW1lU2NvcGUgPSB0cnVl
OworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3BlKCkKICAgICB7CisgICAgICAgIHNl
dElzUHJpdmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBtX2lzQ2xhc3NTY29wZSA9IHRydWU7CiAg
ICAgfQogCkBAIC00NzEsNyArNDc5LDQ0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuZ2V0KCkpOwogICAgIH0KLSAgICAK
KworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAg
eworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmhhc1ByaXZhdGVOYW1lKGlkZW50
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKFNjb3BlJiBv
dGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy5jb3B5VW5kZWNsYXJlZFBy
aXZhdGVOYW1lcyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMpOworICAgIH0KKworICAgIGJvb2wg
aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZh
bHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgbV9sZXhp
Y2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICBEZWNsYXJh
dGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7Cisg
ICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6
VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xh
cmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkp
CisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNh
dGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQYXJhbWV0ZXIoaWRlbnQuaW1w
bCgpKTsKQEAgLTgzNCw2ICs4NzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBcmd1bWVu
dHM7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAgYm9vbCBtX2hhc05vblNpbXBsZVBh
cmFtZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5hbWVTY29wZTsKICAgICBib29sIG1f
aXNDbGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlwZSBtX2V2YWxDb250ZXh0VHlwZTsKICAg
ICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAgLTkwNSw3ICs5NTEsNyBAQCBwdWJsaWM6
CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRl
bnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4g
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwg
Y29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwg
U291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNv
bnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
ID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgp
OyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMTE3OCw2ICsxMjI0
LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBp
KTsKICAgICB9CiAKKyAgICBTY29wZVJlZiBjdXJyZW50UHJpdmF0ZU5hbWVTY29wZShib29sICpm
b3VuZCA9IDApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUo
KSAtIDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAg
IHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAg
ICAgICAgICBpLS07CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAgICpmb3VuZCA9IG1f
c2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgcmV0dXJuIFNjb3Bl
UmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wgY29weVVuZGVjbGFyZWRQ
cml2YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3Njb3Bl
U3RhY2suaXNFbXB0eSgpKTsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9IGN1cnJlbnRQcml2
YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBjdXJyZW50LmluZGV4KCkgLSAx
OworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29w
ZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIHJl
dHVybiAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKTsKKworICAg
ICAgICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhtX3Njb3BlU3RhY2tbaV0p
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBTY29wZVJlZiBjbG9zZXN0UGFy
ZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpCiAgICAgewogICAgICAgICB1bnNp
Z25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CkBAIC0xNDUyLDYgKzE1MjQsMTYgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3Rl
ZDsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hBbmRVcGRhdGUoSlNUb2tl
blR5cGUgZXhwZWN0ZWQsIGNvbnN0IEpTVG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgaWYg
KG1hdGNoKGV4cGVjdGVkKSkgeworICAgICAgICAgICAgbV90b2tlbiA9IHRva2VuOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaENvbnRleHR1YWxLZXl3b3Jk
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewpAQCAtMTcwMiw2ICsxNzg0LDgg
QEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lO
TElORSBib29sIGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChUcmVlQnVpbGRlciYsIFRyZWVFeHBy
ZXNzaW9uKTsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBlbnN1cmVQcml2YXRlTmFtZVVzZWQo
Y29uc3QgSWRlbnRpZmllciopOworCiAgICAgQUxXQVlTX0lOTElORSBpbnQgaXNCaW5hcnlPcGVy
YXRvcihKU1Rva2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpOwog
ICAgIApAQCAtMTc5Niw2ICsxODgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25QYXJz
ZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9uUGFyc2VQaGFzZTo6Qm9keSB9Owog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSB7IG51bGxwdHIgfTsKKyAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdFByaXZhdGVOYW1lIHsgbnVsbHB0ciB9OwogICAg
ICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgaXNQYXJzaW5nQ2xh
c3NGaWVsZEluaXRpYWxpemVyIHsgZmFsc2UgfTsKICAgICB9OwpAQCAtMTk0NSw3ICsyMDMwLDcg
QEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxl
ZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
KFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZlY3RvcjxKU1Rl
eHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7CiAgICAgaW50IGVyckxpbmU7
CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTE5NjAsNiArMjA0NSwxMSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJv
ciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IE9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9zb3Vy
Y2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKKyAgICBpZiAoaXNFdmFsTm9kZTxQ
YXJzZWROb2RlPigpICYmIHZhcmlhYmxlc1VuZGVyVERaICYmIHZhcmlhYmxlc1VuZGVyVERaLT5w
cml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElzUHJpdmF0
ZU5hbWVTY29wZSgpOworICAgICAgICB2YXJpYWJsZXNVbmRlclREWi0+Y29weVByaXZhdGVOYW1l
cyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICB9CisKICAgICBhdXRv
IHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJzZU1vZGUsIHBhcnNpbmdD
b250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51
bWJlcigpOwpAQCAtMjA0NCw2ICsyMTM0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJp
dmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlw
ZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSogZGVidWdn
ZXJQYXJzZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZh
cmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVsbHB0cikKIHsKICAgICBBU1NFUlQoIXNv
dXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CkBAIC0yMDU1LDcgKzIxNDYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgp
LmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291
cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBl
ckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBl
LCBkZWJ1Z2dlclBhcnNlRGF0YSk7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJz
ZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkg
PyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51
bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIu
cGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJz
ZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3Jh
bSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5zdGFuY2VGaWVsZExvY2F0aW9u
cyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAg
KnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6
QnVpbHRpbikgewpAQCAtMjA2OCw3ICsyMTU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHBhcnNlKAogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVm
YXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24gPT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzJ3Mgc3BlY2lhbCBjb25zdHJ1Y3RvcnMgc2hvdWxk
IGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKICAgICAgICAgUGFyc2VyPExleGVyPFVDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2Rl
LCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExl
dmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigp
LCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhKTsKLSAgICAgICAgcmVzdWx0ID0g
cGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6
OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAg
IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2Rl
LCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNp
bmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVyVERaLCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGJkNmQ2NTE0Y2ZiY2ZlMjMxMzY1M2M4NmUxYzRh
ZTAzM2I4ZjI0My4uZjU2OTA0Yzg5ODIxZTdhYThlYzVjMWI1MDI0OTdkOWEzMDBlYjUwMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xMTQsNiAr
MTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9VQkxFLAogICAgIEJJR0lOVCwKICAg
ICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCiAg
ICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aAppbmRleCBmOWJiMDdiNGRkNDA4OWM3YjFlM2EwZjNmNTk1NDFiMzE3YTUyZDdmLi5lOWI2ZDdl
OTQ2NzQ0ZTFhMDhkYzFjYzI4YTQ2YjcxMzc3M2M5ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVF
eHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIs
IEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKICAgICAgICAgRnVuY3Rp
b25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwgQnJhY2tldEV4cHIsIERv
dEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5h
cnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAorICAgICAgICBOZXdFeHByLCBQcmVF
eHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLCBQcml2
YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHByLCBBc3NpZ25tZW50RXhwciwgVHlw
ZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRlcmFsRXhwciwgQmluZGluZ0Rl
c3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFycmF5RGVzdHJ1Y3R1cmluZywg
T2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQsCkBAIC0xODAsNyArMTgw
LDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJ
ZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/IFByaXZhdGVEb3RFeHByIDog
RG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBm
bGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0
ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpAQCAtNDAzLDcgKzQwMywx
MiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHByIHx8IHR5cGUgPT0gRG90
RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAgICByZXR1cm4gdHlwZSA9PSBSZXNv
bHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBQcml2YXRlRG90RXhwciB8fCB0
eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24o
RXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlID09IFByaXZh
dGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oRXhwcmVz
c2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2Y2IzMTExYjBmZTc3Y2U4OTcz
MDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3NDA2OTZlMjY3Njg4ZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1ZhcmlhYmxl
RW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPShjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9IG90aGVyLm1fbWFwOworICAgIG1f
aXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAg
IG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAg
bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAqdGhpczsKK30KKwogdm9pZCBWYXJp
YWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1cmVkSWZEZWZpbmVkKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBmaW5kUmVz
dWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgwLDYgKzkwLDcgQEAgdm9pZCBWYXJp
YWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQogewogICAg
IG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBv
dGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEuc3dhcChvdGhlci5t
X3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVB
c0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCkBA
IC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJp
YWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQKICAgICA6IG1faXNFdmVy
eXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkpCiB7CiAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4s
IDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZW52KQogICAgICAgICBz
b3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgpLCBwYWlyLnZhbHVlIH0pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
CmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJlYTE5OTJjNTIuLjBjMWQwYWMz
ZWJhZGNhOGVjMzhhNmM4OGVhNjMxMzliNDkwYTMzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC0yNyw2ICsyNyw4IEBA
CiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVuY3Rp
b247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3Bw
eU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5
TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0
ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29u
c3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBt
X2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFy
OyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNJbXBvcnRlZE5hbWVz
cGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwgNywKICAgICAgICAgSXNQ
YXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRl
ID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5
LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKICAgICB9OwogICAgIHVpbnQxNl90
IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUgQEAgc3RydWN0IFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRF
bnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNl
OwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworcHVibGljOgorICAgIFByaXZhdGVO
YW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMgPSB0cmFpdHM7IH0KKworICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1Vz
ZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Vz
ZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNE
ZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KKworICAgIHVpbnQxNl90IGJpdHMo
KSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
cml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2Jp
dHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVudW0gVHJhaXRzIDogdWludDE2X3Qg
eworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEs
CisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07Cit9OworCitz
dHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFByaXZhdGVOYW1l
RW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7
Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHByaXZhdGU6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0
ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CiBw
dWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJs
ZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikgPSBkZWZhdWx0OwotICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVs
dDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0o
VmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7CisgICAgVmFyaWFibGVFbnZpcm9ubWVu
dCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90
aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQorICAgICAgICAsIG1f
aXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAg
ICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJlRGF0YSkpCisgICAgeworICAgIH0K
KyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVy
KQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5n
Q2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVE
YXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVu
dDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51bGxwdHIpCisgICAgeworICAgIH0K
KyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGJlZ2luKCkg
eyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRv
ciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAtOTksNyArMTQ0LDggQEAgcHVibGlj
OgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJl
dHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRk
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1f
bWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBB
TFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0gICAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CisgICAgQUxX
QVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsg
cHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBtYXBTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29s
IGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNv
bnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lO
TElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5M
SU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9CkBAIC0xMTYsMTEg
KzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisgICAgdXNpbmcgUHJpdmF0ZU5hbWVz
UmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CisKKyAg
ICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnRp
Zmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVzZVByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5p
bXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGF1
dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOworICAgICAg
ICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAg
ICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOwor
ICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKyAgICB9CisgICAg
dm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUo
aWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNVc2VkKCk7CisgICAgICAgIGlm
IChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZpbmQoaWRlbnRpZmllciktPnZhbHVl
LnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1l
c1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAgICAvLyBVc2Ugb2YgdGhl
IEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1cmVz
IGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKHByaXZhdGVOYW1lc1NpemUoKSA+
IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0ZU5hbWVzU2l6ZSgpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgY29weVByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikgY29u
c3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICAgICAgb3RoZXIubV9yYXJl
RGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsK
KyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50
cnkudmFsdWUuaXNVc2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGVudHJ5Lmtl
eSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKFZhcmlhYmxlRW52
aXJvbm1lbnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQgYnkgdGhlIFBhcnNlciB0
byB0cmFuc2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFuCisgICAgICAg
IC8vIGlubmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBvbmUsIGluIGNh
c2UgYSBQTkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgY29kZSB0
aGFuIGl0IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFsdWUuaXNEZWNs
YXJlZCgpKQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRPckFkZFByaXZhdGVOYW1lKGVu
dHJ5LmtleS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAgICAgICAgUmFyZURhdGEo
UmFyZURhdGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2YXRlTmFtZXMoV1RGTW92ZShv
dGhlci5tX3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBSYXJl
RGF0YShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUmFyZURhdGEmIG9wZXJh
dG9yPShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUHJpdmF0ZU5hbWVzIG1f
cHJpdmF0ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhY2hl
ZFZhcmlhYmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAgICAgYm9vbCBtX2lzRXZl
cnl0aGluZ0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVOYW1lRW50cnkmIGdldE9y
QWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisgICAgeworICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVl
PFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5hbWVFbnRyeSgwKSkuaXRl
cmF0b3ItPnZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENvbXBhY3RWYXJpYWJs
ZUVudmlyb25tZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5
cGVzLmNwcAppbmRleCA5YTc5YmM2NzEzYWJkYWE2ODYxZWI0ZmI2MTljZmU4ZTU4NWM4NDE2Li44
ZGUzM2IwYzYyNTFkYjNjMWRiNjI2NWZlNDdkZDBmZjQ0Y2YwMWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04NDMsNiArODQzLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5jb2RlKGVuY29kZXIsIHsgKnNv
dXJjZSB9KTsKICAgICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNvZGVBc1B0cihEZWNvZGVy
JiBkZWNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXMtPmlz
RW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKS0+ZGVj
b2RlKGRlY29kZXIpOworICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNpbXBsZUp1bXBUYWJsZSA6
IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IHsKQEAgLTk5MCwy
MyArOTk2LDQ1IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0
aWFsaXplciA6IDE7CiB9OwogCitjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURh
dGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7
CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2
YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9
CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0CisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1l
cy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5n
SW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJp
bmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4g
bV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50IDog
cHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50PiB7CiBwdWJsaWM6CiAgICAg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
ZW52KQogICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IGVudi5tX2lzRXZl
cnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5lbmNvZGUoZW5jb2RlciwgZW52Lm1fbWFw
KTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZW52Lm1fcmFyZURhdGEuZ2V0
KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxl
RW52aXJvbm1lbnQmIGVudikgY29uc3QKICAgICB7CiAgICAgICAgIGVudi5tX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICAgICAgbV9tYXAuZGVjb2Rl
KGRlY29kZXIsIGVudi5tX21hcCk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIGVudi5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxl
RW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2Rl
KGRlY29kZXIsICplbnYubV9yYXJlRGF0YSk7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgIENhY2hlZEhhc2hNYXA8Q2Fj
aGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RG
OjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gbV9tYXA7CisgICAg
Q2FjaGVkUHRyPENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YT4gbV9yYXJlRGF0YTsK
IH07CiAKIGNsYXNzIENhY2hlZENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENh
Y2hlZE9iamVjdDxDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudD4gewpAQCAtMTEzMyw2ICsxMTYx
LDIyIEBAIHByaXZhdGU6CiAgICAgaW50cHRyX3QgbV9iaXRzOwogfTsKIAorY2xhc3MgQ2FjaGVk
U3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU6OlN5
bWJvbFRhYmxlUmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEp
CisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEu
bV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAg
ICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3By
aXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVk
UmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fcHJp
dmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQpAQCAtMTE0Myw2ICsxMTg3
LDcgQEAgcHVibGljOgogICAgICAgICBtX25lc3RlZExleGljYWxTY29wZSA9IHN5bWJvbFRhYmxl
Lm1fbmVzdGVkTGV4aWNhbFNjb3BlOwogICAgICAgICBtX3Njb3BlVHlwZSA9IHN5bWJvbFRhYmxl
Lm1fc2NvcGVUeXBlOwogICAgICAgICBtX2FyZ3VtZW50cy5lbmNvZGUoZW5jb2Rlciwgc3ltYm9s
VGFibGUubV9hcmd1bWVudHMuZ2V0KCkpOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNv
ZGVyLCBzeW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICBTeW1ib2xU
YWJsZSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBAIC0xMTU2LDYgKzEyMDEsMTEg
QEAgcHVibGljOgogICAgICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogc2NvcGVkQXJndW1lbnRz
VGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmIChzY29wZWRB
cmd1bWVudHNUYWJsZSkKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX2FyZ3VtZW50cy5zZXQo
ZGVjb2Rlci52bSgpLCBzeW1ib2xUYWJsZSwgc2NvcGVkQXJndW1lbnRzVGFibGUpOworICAgICAg
ICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+
bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJl
RGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPmRlY29kZShkZWNvZGVyLCAqc3ltYm9s
VGFibGUtPm1fcmFyZURhdGEpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHN5bWJvbFRh
YmxlOwogICAgIH0KIApAQCAtMTE2Niw2ICsxMjE2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25l
ZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAgICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAz
OwogICAgIENhY2hlZFB0cjxDYWNoZWRTY29wZWRBcmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7
CisgICAgQ2FjaGVkUHRyPENhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiB9
OwogCiBjbGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVDYWNoZS5jcHAKaW5kZXggMzBiNThiNmFjZGVjZDU4YjAzMDdiZDUyODQ2ZWE0NjU4MmI5
YjA5ZC4uMDUxZWE3YWE2NjgyZDA4ZGRjZTA4N2YxOTI5NTQxNjNjYjI5ZDEzMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC03Niw3ICs3Niw3IEBA
IFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0m
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiB7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5
cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAg
IHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlw
ZSk7CisgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJv
ciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2
YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJURFopOwogICAgIGlmICghcm9v
dE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggYzYzYTAyOTExMTcy
OTVkMTkxOWJhMjgwMmEyYzM5MGFjNTE2NjcwOC4uNTc3ODA3MWJlNGVhYjNmNDNlYjhiODA3ZmE0
NWUzYmI2ZWM5OWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZChJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9O
QU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGluTmFtZXMtPm5hbWUjI1ByaXZh
dGVOYW1lKCkpCiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5hbWUpICwgbmFtZSMjU3ltYm9s
KG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklW
QVRFX0ZJRUxEX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmllbGQoSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50
aWZpZXJzKFZNJiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQ1LDYgKzQ2LDcgQEAg
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICBKU0NfQ09N
TU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJU
WV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05P
V05fU1lNQk9MKElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNf
RUFDSF9QUklWQVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAppbmRleCA0NzAyMDJmOTE3OTI1ZDZkM2NiMmJmZjhiNDljMWRmOTgyZTczZGY4Li5lNDhhYjAx
MzZjMDEyZmMzZGM3MGEzMWZmY2M4OGVlY2ZhMTYyNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIwNSw2ICsyMDUsOSBA
QAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikKIAorI2RlZmluZSBKU0Nf
Q09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChtYWNybykgXAorICAgIG1hY3Jv
KGNvbnN0cnVjdG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlX
T1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBtYWNybyhicmVhaykgXApAQCAt
MzE5LDYgKzMyMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCiAKKyNkZWZpbmUg
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTChuYW1lKSBjb25zdCBJ
ZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJ
RUxEX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERf
R0xPQkFMCisKICAgICAgICAgU3ltYm9sSW1wbCogbG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVyIGdldFB1YmxpY05hbWUoVk0mLCBT
eW1ib2xJbXBsKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDBlMmJjM2EyNzE5YzJhOTM1M2U3ZDc1MjFhODc5
YmQxMmQ3NDAwNjkuLjdjM2U4N2JiOGIwOGIzYzJmZTlmNjFmMjVlYWEwY2E5MDhkOWIwMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMTI5OCw2ICsxMjk4LDcyIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
dmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfdmFsX2RpcmVjdCkKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcEdldEJ5VmFsRGlyZWN0PigpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VU
X0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBH
RVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisKKyAgICBpZiAoTElLRUxZKGJh
c2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgU3Ry
dWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwor
ICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkg
eworICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlzdGluZ0F0b21TdHJpbmcg
PSBhc1N0cmluZyhzdWJzY3JpcHQpLT50b0V4aXN0aW5nQXRvbVN0cmluZyhnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgICAgICBpZiAoZXhpc3Rp
bmdBdG9tU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3Rp
bmdBdG9tU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3Vi
c2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJ
bnQzMigpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlOworCisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKKyAg
ICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAg
ICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpKSk7CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91
bmRzKCk7CisgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgICAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQorICAgICAgICAgICAgICAgIFJF
VFVSTl9QUk9GSUxFRChvYmplY3QtPmdldEluZGV4UXVpY2tseShpKSk7CisKKyAgICAgICAgICAg
IGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAo
b2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPCBvYmpl
Y3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBleHBhbmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMyLCBhbmQgbWF5YmUgRG91Ymxl
OgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NDAKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBvYmplY3Qt
Pmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICAgICAgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG9iamVjdC0+c3RydWN0
dXJlKHZtKSkgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyAm
JiAhQ29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudEluZGV4UXVpY2tseSgqb2JqZWN0
LCBpKSkKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBSRVRVUk5fUFJPRklMRUQoanNVbmRlZmluZWQoKSk7CisgICAg
fQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsK
KyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRv
UHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5KTsKKworICAgIGJvb2wgZm91bmQgPSAoYmFzZVZhbHVlLmFz
Q2VsbCgpLT5pc1Byb3h5KCkgJiYgcHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICA/
IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYXNPYmplY3QoYmFzZVZhbHVlKSwgZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkKKyAgICAgICAgOiBiYXNlVmFsdWUuZ2V0T3duUHJvcGVy
dHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIGlmICghZm91bmQgJiYgcHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKQorICAgICAg
ICBUSFJPVyhjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAg
ICBSRVRVUk5fUFJPRklMRUQoZm91bmQgPyBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJv
cGVydHkpIDoganNVbmRlZmluZWQoKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWRfd2l0aF90aGlzKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3MTM1ZTJiNzg0YWI2OGRi
NWY1NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjNmZDRhOWIxOTU1MWVmZmEzZDlkOTYxZTFlMDUwOTBh
NjY2OWVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yNzIsNiArMjcyLDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5
X3ZhbF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
dmFsX2RpcmVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93
aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dp
dGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3By
b3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKaW5kZXggYWY5OGQ0ZDI3YjQxZDE0MzM2YTAyMThlODBiNzZjZTRkOGI0MGI3
Mi4uZDgxZTU4NjY0MWJkNmZjMmJhY2QwZmI0MTc5OTFjYmYxNWY1OWIyMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMy
OSw2ICszMjksMTYgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9iamVj
dCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iKTsKIH0KIAorSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3Vy
Y2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVk
UHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgcmVk
ZWZpbmUgZXhpc3RpbmcgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5
cGVOb3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmgKaW5kZXggMzVhZDEyNTU0YzcwMTI3ZTRiZmI3NTUxZWJiM2MxNzhl
ZWI0YzZlMS4uMDIxMzBhZWJhYTI4Yjc3Zjc5YzE2ZTAxZjI5NjMxNTViODJhNzlhOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAt
NTMsNiArNTMsOCBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJF
cnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsbwogSlNPYmplY3QqIGNyZWF0ZU5v
dEFDb25zdHJ1Y3RvckVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVjdCog
Y3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2Jq
ZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU3RyaW5nJik7CitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJy
b3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFt
ZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVl
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlv
biogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGIzYzk4MGE0NjYyYWVlZWExMjQwYTU2NmM1ZDRhMThhOTI4NzFmN2UuLmY1ODQ0N2RmMDdm
MDdiYzUxMzkzNjQ2ZjgxMmZjYTdmOGJhNDE3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI5OCw2ICsyOTgsMTIgQEAgc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVuZ3RoUHJvcGVydHkoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoKSkpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjcmVh
dGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxs
U3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMTE1NCw2ICsxMTYwLDEyIEBAIGNh
cGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0
dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpj
cmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0
cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpKTsKICAgICAgICAgfSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKElOVEwpCisKKyAgICAvLyBQcml2YXRlU3ltYm9scyAvIFByaXZhdGVOYW1lcwor
ICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29u
c3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNy
ZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3Ry
aW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7CisKICNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQogICAgIC8v
IFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUNvbXBpbGVTdHJl
YW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYg
aW5pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCA2
ZDVhYjY4MmM2ODM5MTRmNjlmM2U1YzIyODM4NGZlZmU0NjU3N2M4Li45NmM4ZGJkNDMwNjc5MWUx
YTVlNjExOGE2NTIzZTU0ZDgzZjNhNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcApAQCAtMzM5LDYgKzMzOSwxMCBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RD
bG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFZhcmlhYmxlRW52aXJvbm1l
bgogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2sp
OwogICAgICAgICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpLCBpdGVy
ID0gc3ltYm9sVGFibGUtPmJlZ2luKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAg
ICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+
aGFzUHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9s
VGFibGUtPnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRl
TmFtZShuYW1lKTsgICAgCisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCBiYzQ5ZGM5ODJjNzMyODJiZWRl
YjJiMWRlZmM3NjdhODVhYjM1YWY5Li43NzkwY2Y1NzNkMjZmOTUyZjQ5OTlhNTNmM2MyNzVkNjc1
MWEzY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
Y3BwCkBAIC0xODMsNiArMTgzLDExIEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVT
Y29wZVBhcnQoVk0mIHZtKQogICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIp
CiAgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3VuaXF1ZVR5cGVTZXRNYXAu
c2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOwogICAgICAgICB9CisKKyAgICAgICAgeworICAg
ICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKKyAg
ICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1l
KTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggMWMzODZlYzRiZjhmNTYy
OWMxNTE2ZTVkODQwOGJjNGMwOGI2MTIxMC4uODdiNGRiYmJhMzhjZjBhMmRlZjQ5YzZhM2U1ZmJl
ZWY1NzZlNTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUg
PG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sSW1wbC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUwLDYgKzQ1MCw4IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJ
ZGVudGlmaWVyUmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8
VmFyT2Zmc2V0LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFw
OwogICAgIHR5cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7
CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZp
ZXJSZXBIYXNoPiBQcml2YXRlTmFtZVNldDsKKyAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5n
ZTx0eXBlbmFtZSBQcml2YXRlTmFtZVNldDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JS
YW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
ICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTU5NCw3ICs1
OTYsMjUgQEAgcHVibGljOgogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CiAgICAgICAgIGFkZChsb2NrZXIsIGtleSwgc3RkOjpmb3J3YXJkPEVudHJ5PihlbnRyeSkp
OwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZSBwcml2YXRlTmFtZXMoKQor
ICAgIHsKKyAgICAgICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRvclJhbmdlIG11c3QgYmUgZ3VhcmRl
ZCB0byBwcmV2ZW50IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVja1ZhbGlkaXR5KCkuCisgICAgICAg
IEFTU0VSVChoYXNQcml2YXRlTmFtZXMoKSk7CisgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JS
YW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5lbmQoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShVbmlx
dWVkU3RyaW5nSW1wbCoga2V5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5p
c1N5bWJvbCgpKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJl
RGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworCisgICAgICAg
IEFTU0VSVCghbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoa2V5KSk7CisgICAg
ICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXkpOworICAgIH0KKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVudHJ5PgogICAgIHZvaWQgc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXksIEVudHJ5JiYgZW50cnkpCiAgICAgewpAQCAt
NzE3LDE4ICs3MzcsMjEgQEAgcHJpdmF0ZToKICAgICBTY29wZU9mZnNldCBtX21heFNjb3BlT2Zm
c2V0OwogcHVibGljOgogICAgIG11dGFibGUgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7Ci1wcml2
YXRlOgotICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOwotICAgIHVuc2lnbmVk
IG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4K
LSAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQotICAgIAorCiAgICAg
c3RydWN0IFN5bWJvbFRhYmxlUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIFVuaXF1ZUlETWFwIG1fdW5pcXVlSURNYXA7CiAgICAgICAg
IE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgICAgICBVbmlx
dWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAgICAgV3JpdGVCYXJyaWVyPENv
ZGVCbG9jaz4gbV9jb2RlQmxvY2s7CisgICAgICAgIFByaXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5h
bWVzOwogICAgIH07CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV91c2VzTm9uU3RyaWN0RXZh
bCA6IDE7CisgICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOyAvLyBOb24tZnVu
Y3Rpb24gTGV4aWNhbFNjb3BlLgorICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsgLy8gU2Nv
cGVUeXBlCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJl
RGF0YTsKIAogICAgIFdyaXRlQmFycmllcjxTY29wZWRBcmd1bWVudHNUYWJsZT4gbV9hcmd1bWVu
dHM7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDE0NmE3NTVhZDlmOTMyYjFiNTE3MjljYTQwNmZjNGYxOGU5N2UyNzUuLmRjYzEwMDQ3YmZl
NDkwMjlmOGY1MjVjM2YxNzdkMGU5YTI5NDE2YjYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjAtMDItMjQg
IENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQg
c3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZHMgdXBvbiB0aGUgZWFybGllciBwdWJsaWMg
ZmllbGRzIHBhdGNoLCBhZGRpbmcgYSBudW1iZXIgb2YgcHJpdmF0ZQorICAgICAgICBmaWVsZCB0
ZXN0cy4KKworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlv
bi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hl
ZC1ieXRlY29kZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLW9uLXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZp
ZWxkcy1zdHJlc3MtaW5zdGFuY2UuanM6CisgICAgICAgICogc3RyZXNzL2dldC1ieS12YWwtZGly
ZWN0LWdldHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWUt
YWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3Qy
NjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDItMTkgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNs
aW5nQHNvbnkuY29tPgogCiAgICAgICAgIENvbXB1dGVkIFByb3BlcnRpZXMgd2l0aCBpbmNyZW1l
bnQgc29tZXRpbWVzIHByb2R1Y2VzIGluY29ycmVjdCByZXN1bHRzCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhl
OWFlZDRkMWEzMWJlMGE4MmJjZjA5ODAyMzFmMGJjYmQ1MTBjYzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcwpAQCAt
MCwwICsxLDE4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisK
K2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2Ns
YXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJl
dHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5t
ZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwODY5OGY2NTE5OWU3Njk5
MjlkZmQ5ZWQyYTU1YjU2M2FiZTA4NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpAQCAtMCwwICsxLDE4IEBA
CisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rp
b24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7
CisgICAgI2YgPSAzOworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsK
KyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAzKTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHku
anMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43N2YwNGU2ZDU0YTY2ZWY1MmJkNWZkMzEzZGI3N2IzMjYyY2ZlZTlmCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHku
anMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRz
PTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVu
dChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlz
IGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKysp
CisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAi
IGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xh
c3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQ
cm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAg
ICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2Jq
W3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRl
c3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAgICBtZXRob2QoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgpOworbGV0
IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290OiAiICsg
cik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjY2NDRkNmIyMTNiY2E1ODU5YmViN2MyZWI2MmU0NjhkMmNiZTdiZTYKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5q
cwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7
Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9IGAKK3ZhciBDID0gY2xhc3MgeworICAgIGFzc2VydE91
dE9mTGluZVZhbHVlKCkgeworICAgICAgICBhc3NlcnQodGhpcy4jZjIwMCwgImZvbyIpOworICAg
IH0KK2A7CisKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkrKykgeworICAgIGtsYXNzU291
cmNlICs9ICIgICAgI2YiICsgaSArICI7XG4iOworfQorCitrbGFzc1NvdXJjZSArPSAiICAgICNm
MjAwID0gXCJmb29cIjtcbn0iOworCitldmFsKGtsYXNzU291cmNlKTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAyOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hc3NlcnRPdXRP
ZkxpbmVWYWx1ZSgpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS11c2UtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLXVzZS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDY5NmJhY2NmOTI3MGNlYWUwZWI5MzI3ZTQw
Y2QwOTg5OTZhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpAQCAtMCwwICsxLDE1IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdl
KSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisK
K2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihpKSA9PiBpLiNiIik7CisKKyAg
I2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fzc2VydChpbnN0LmEoaW5zdCku
eCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3Mt
aW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNl
LmpzCmluZGV4IDU2NjI0ZmJlZWRiYjAyOGI5NGUwZDZlNjExZmU0OTkzNmQyNTI1OGYuLjNjOWI1
ODhlYmVjOWY0YjZkMmE2OTFjNGY3ZDZiOGMzNWFkOTMzZWUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKKysrIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAtMyw5ICszLDEzIEBACiBjbGFz
cyBBIHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7CisgICAgI2QgPSAxOwog
ICAgIGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAgICNmID0gZnVuY3Rpb24oKSB7
IHJldHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZhbCgidHJ1ZSIpOworICAg
ICNpID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJpdmF0
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmY3NzhjYWYyZjgzNzc5NGJiZmU0ZmMwYTQ3MGJlOTQwNzU1Y2NhMwotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUu
anMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNs
YXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1
bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdldEJ5VmFsRGlyZWN0IHNob3Vs
ZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZlIHRoZSByZXF1ZXN0ZWQgcHJp
dmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeCA9
IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkgcmV0dXJuIHsgW1N5bWJvbC50
b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJu
IG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRo
ICN4IjsgfQorfQorCit0cnkgeworICAgIGZvciAoaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAg
ICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngoYyk7CisgICAgICAg
IGlmIChyZXN1bHQgIT09IGkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVk
IEMueCgke2N9KSB0byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQorfSBj
YXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25z
dHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitp
ZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQg
bm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg0Y2QwMTZhNTUxYWJiNTc4NzdlMmE3NDc1ZjliZTAyNzU2NjkxMDIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3Bl
cnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0Zp
ZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IChleHBlY3RlZEVycm9yLCBm
dW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVk
RXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUgKyAiIGJ1dCB0aHJvd3M6ICIgKyBlLm5hbWUpOwor
ICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4gewor
ICAgIGNsYXNzIEJhc2UgeworICAgICAgICBbe30uI3hdID0gMTsgCisgICAgICAgICN4ID0gImZv
byI7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwt
ZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1h
ZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZjk0OTVmOTU2OWQ0ZjgyMGEzNGQyNWUwNWMxM2Zk
ZTg5YmZhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRp
cmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5EZWZhdWx0KCItLXVzZUNsYXNz
RmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5v
TExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0QnlWYWxUaHJv
d0lmRXhpc3RzIiBzaG91bGQgdGhyb3cgaWYgb3ZlcndyaXRpbmcgYW4gYWxyZWFkeSBleGlzdGlu
ZyBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgewor
ICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8IDI5ID8gdGhpcyA6IGM7Cisg
ICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4ID0gaSsrOworICAgIHgoKSB7
IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0cnkgeworICAgIGZvciAobGV0
IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9IG5ldyBDQzsKKyAgICAgICAg
aWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB4
LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsKKyAgICB9Cit9IGNhdGNoIChl
KSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNvbnN0cnVjdG9y
ICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhy
ZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZh
bC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0
LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM5MWZhY2JmNDRjOGMwNWQ4MTBmZjFmM2ZlY2I4
NDVlYzMwZDUwNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwt
ZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwzMSBAQAorLy8gVE9ETzogLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNz
RmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQ
VkQgd2l0aCAiUHV0QnlWYWxQcml2YXRlTmFtZSIgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8g
YSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7
CitjbGFzcyBDIHsKKyAgICAjeDsKKyAgICBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIGkgPCAzMCA/
IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91dCAjeCIgfTsgfQorICAgIHN0
YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4ID0gaSsrOyB9CisgICAgZ2V0IFtTeW1ib2wudG9T
dHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giIH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGxl
dCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9iaiA9IG5ldyBDOworICAgICAg
ICBsZXQgcmVzdWx0ID0gQy54KG9iaik7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGopCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke29ian0pIHRvIGJlICR7an0s
IGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcg
PSB0cnVlOworICAgIC8vIHJ2YWwgb2YgQXNzaWdubWVudEV4cHJlc3Npb24gaXMgZXZhbHVhdGVk
IGJlZm9yZSBQcml2YXRlRmllbGRGaW5kKCN4LCBscmVmKSBpcyBwZXJmb3JtZWQsCisgICAgLy8g
dGh1cyBgaWAgaGFzIGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4KKyAgICBpZiAoaSAhPT0gMzEg
fHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAg
fQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVy
cm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
dGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCAy
MzgzNTgxM2JlMzkxZTJhM2I1MDNmMDc4ZjQ4M2FiM2QwYjhkMjI4Li43NWU0MDhjNjNmY2E2YWUy
ODE2ZjI5ZGM2ZGM2ZjFjODkzYTUyYzA4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0zLDYgKzMsNyBA
QAogZmxhZ3M6CiAgIEJpZ0ludDogdXNlQmlnSW50CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZzCisg
IGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VDbGFzc0ZpZWxkcwogICBjbGFzcy1maWVsZHMtcHVi
bGljOiB1c2VDbGFzc0ZpZWxkcwogc2tpcDoKICAgZmVhdHVyZXM6CkBAIC0xMSw3ICsxMiw2IEBA
IHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAgLSBjbGFzcy1maWVsZHMtcHJpdmF0
ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRz
LXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392723</attachid>
            <date>2020-03-06 08:06:57 -0800</date>
            <delta_ts>2020-03-09 07:15:44 -0700</delta_ts>
            <desc>Patch v11</desc>
            <filename>bug-206431-20200306110656.patch</filename>
            <type>text/plain</type>
            <size>179263</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3OTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjNhNTU1Yzc5Mjc4OWM1NjZkODM2NmE1ZTI4ZTA2ODc2OWFhZDQzLi5mNTc1ZjZhZDNkNmM4YTIy
NWY5ZDU2NzY2Yjg4YWQ5MTdhMjdkYTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzIgQEAKKzIwMjAtMDMtMDYgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZGlu
ZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMgcGF0Y2gsIHdlIGltcGxlbWVu
dCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNhbnQgcGFydHMpIG9mIHRoZSBp
bnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvKS4K
KworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBjaGFuZ2VzIGhlcmU6CisKKyAg
ICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUgY29uY2VwdCBvZiBwcml2YXRl
IG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAgICAtIDEgbmV3IG9wY29kZSAo
b3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNvZGUgKG9wX3B1dF9ieV92YWxf
ZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNyZWF0aW5nIFN5bWJvbCBvYmpl
Y3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4cG9zZWQgYXMgYQorICAgICAg
ICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0ZVN5bWJvbCkuCisgICAgICAg
ICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQgYnkgbmFtZSAobm90IGEgdmFs
aWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAgICAgICAgICAgYXJlIGxvYWRl
ZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBtb2Rp
ZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIG9wX3B1dF9ieV92YWxfZGly
ZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0QnlWYWxGbGFncykgd2hpY2gg
YXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBvdmVyd3JpdGluZyBvciBk
ZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVyZW5jZXMgYXJlCisgICAgICAg
IHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Igbm90IGFuIGV4Y2VwdGlvbiBp
cyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAgICAgICAgUHJpdmF0ZSBmaWVs
ZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRoZWlyIHVzZS4gVGhpcyBwcmV2
ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0aGUgc2FtZSBjbGFzcyBzb3Vy
Y2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUgZmllbGRzLCBiZWNhdXNlIHRo
ZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVkIGZyb20gdGhlIGNsYXNzIHNj
b3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBwcm9wb3NhbCB0
ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5IHdlIHVzZSBCeVZhbCBsb29r
dXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAgICBUbyBpbGx1c3RyYXRlLCB0
eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBsaWtlOgorCisgICAgICAgIDxG
aWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVu
dFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUg
ICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3Vu
ZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgZ2V0X2J5
X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHByb2JhYmx5ICd0aGlzJz4sIDxz
eW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAg
ICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAg
ICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYy
NDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4s
IDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3Ro
aXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lPgorCisgICAgICAg
IDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4s
IDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJv
bV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJ
Zk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAg
ICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3ltYm9s
PiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlWYWxUaHJvd0lmRXhpc3RzPgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBidWlsdGlucy9CdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVJbmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0ZpdHMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9MaW5rVGltZUNvbnN0YW50Lmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5k
LmguCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaC4KKyAgICAgICAgKiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5l
cmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpp
bnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXREaXJlY3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHJpdmF0ZUZpZWxkQWRkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcml2YXRlRmllbGRQdXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmFzZURv
dE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6
OmVtaXRQdXRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAgICAg
ICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
UHV0QnlJZCk6CisgICAgICAgICogZ2VuZXJhdG9yL0RTTC5yYjoKKyAgICAgICAgKiBqaXQvSUNT
dGF0cy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdl
bmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmg6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SklUOjpwdXRCeVZhbEZsYWdzKToKKyAgICAgICAgKEpTQzo6SklUOjpwdXRCeVZhbEZsYWdzPE9w
UHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMu
aDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6
CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAg
IChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmlzUHJpdmF0ZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1
bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9k
ZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENo
YXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNl
SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlk
ZW50aWZpZXJTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXhXaXRob3V0Q2xl
YXJpbmdMaW5lVGVybWluYXRvcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aDoKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6RG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUp
OgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRD
cmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6Cisg
ICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFz
ZURvdE5vZGU6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNv
bnN0KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVu
dHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZW5zdXJlUHJpdmF0ZU5hbWVV
c2VkKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25z
dCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhh
c1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnVzZVByaXZhdGVOYW1lKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6Y3VycmVudFByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNv
cHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyOjptYXRjaEFuZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9r
ZW5zLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0p
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAgICAgKEpT
Qzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOgorICAg
ICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZU5hbWVFbnRyeTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVO
YW1lRW50cnk6OnNldElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNl
dElzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1lbnQpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6Y29weVByaXZhdGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE6OlJhcmVEYXRhKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Z2V0T3JBZGRQcml2YXRlTmFtZSk6
CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hl
ZE9wdGlvbmFsOjpkZWNvZGVBc1B0ciBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFy
aWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRT
eW1ib2xUYWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAg
ICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWRlZmluZWRQcml2
YXRlTmFtZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
UHJpdmF0ZVN5bWJvbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpjb2xs
ZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAg
ICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDMtMDUgIFBhdWxvIE1hdG9z
ICA8cG1hdG9zQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ09ubHldIDMyLWJpdHMgd2Fybmlu
ZyBvbiBtZW1zZXQgb2YgSlNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGY3YzY2NjJmN2ZlNTY3MDlmNDUwOTRjMDczZjU1YzUwODFjYTg4N2UuLmFmZGJiMGI3Mzdk
NDc3MDZlNWFhMTUzM2JhYzM5ZTBlZWFlNmZjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTUyOSw2ICs1MjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Q
cm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRl
Y29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAg
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIw
MmM0ZjZlNDQxODVkLi5hNmY4NDU4M2IzOTU5OWQzODZjZmQwYzM5YTNjZWRkMDI4NjkzYjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NSw2ICsxMjQ1LDcgQEAKIAkJODY3
MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
SklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxG
bGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJC
OUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5
QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZF
NUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8q
IEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00MTAwLDYgKzQxMDEsOCBAQAogCQk4NjcwNEI4MTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJy
UGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9
IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njcw
NEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8q
IFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNC
MjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5
MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgzNDMsNiArODM0Niw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1
dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJ
ZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlk
VmFyaWFudC5oICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZs
YWdzLmNwcCAqLywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFn
cy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJ
CQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAog
CQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBA
IC0xMDA4Myw2ICsxMDA4OCw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1
dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3NkM2RTgy
MzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NmYxYzY5NDg1
YzZmY2JlZTQ4N2U1YWM5ODZjYTQ2MzYzNTNhZWJlLi40MzE0YmUzMWMyZGRiYjk1YWNiYWRkODZm
MjQwMDE1MDFhMGQ3OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjQsNiAr
MjY0LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAKK2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCmluZGV4IDA2M2M3M2Q1MmNmOGM4NzFiMDliMjg2MmRiNDQ5ZWIwMGYzZDc2YzAu
LjZiZDgwMGRmMGUyZTM5YTViYjMxNThjMzliMWVmYjJjNTIwNzA2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE2Nyw3ICsxNjcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNzZW1i
bHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3Rh
bnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlh
bGl6ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3Jv
KGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5hbWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFU
RSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIG5hbWUjI1N5bWJvbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGQzNzIz
NmY0MGFhODk5MTI3Yzc0OWViZGI5ODY5NmM3Nzg1ZDhjYjMuLjAyYzAxYmQ3YzJlOGMyNmE2OTVm
OGEzNjZiNjU4YmFjNmM5Y2ViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEy
NmEwZjcyNzUzNmYxYmUzN2M0ZS4uOWE3NDQzYTVkNTc1NTVmYTdjMTA2ZGRiYmJjNmVmMzE0NTgz
M2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZs
YWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5
VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVj
dHVyZUlELApAQCAtNTQzLDYgKzU0NCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2Vl
bklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3ZhbF9k
aXJlY3QsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lz
dGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9wIDpw
dXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApA
QCAtNTY2LDYgKzU3OCw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAg
ICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFn
cywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4u
MTVjMTNiZjdhODlmNjdkMjg1OWNiY2Y2MTYxYzMzOTA3ODM0YTc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMTEsNiAr
MjExLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdp
c3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvclN0
cnVjdHVyZVBuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wRW51bWVyYXRvckdl
bmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNl
LCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wR2V0QnlWYWxEaXJlY3QsIGJhc2UsIHByb3BlcnR5KQog
ICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVz
SGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJ
bnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtNDE5LDYgKzQyMCw3IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRzdCkKICAgICBERUZTKE9w
SW5zdGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZhbCwgZHN0KQorICAgIERF
RlMoT3BHZXRCeVZhbERpcmVjdCwgZHN0KQogICAgIERFRlMoT3BUeXBlb2YsIGRzdCkKICAgICBE
RUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERFRlMoT3BJc0VtcHR5LCBk
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2Njlm
N2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi5kNjM4NWIzYmZhZjE4MTE3ZGVlNjIwYzFjMWE3
MzRlNTcxMzNmNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5
cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQ
dXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRl
eCAxYjZlNzI2MjQwOWM4NTc0MzJkNGIyZmNmYWNmMTdjNzYwZDE3YjY0Li4wMmE2Y2YwNDhkMTI0
YTJlOWVlMGI1MzQwMmJkZmJkODI0ZTBjNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICB2KEFycmF5LCBudWxscHRyKSBcCiAgICAgdihhcHBseUZ1
bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxsRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2
KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktf
VElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNzc2YThjY2E4MTEx
MTg0NzI4ZWZhNjAyNTc1MTZhOWVkMDQ0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
dXRCeVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKK3sKKyAgICBD
b21tYVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBpZiAoZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVO
YW1lKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlTmFtZSIpOworICAgIGlmIChm
bGFncyAmIFB1dEJ5VmFsVGhyb3dJZkV4aXN0cykKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
VGhyb3dJZkV4aXN0cyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4OTVi
Njc4NjA3YzlhMzA5MDkzMzcyODE4YzBlOGZmMzdmYWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
U3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBQdXRCeVZhbEZs
YWdzIDogaW50MzJfdCB7CisgICAgUHV0QnlWYWxOb25lID0gMCwKKworICAgIFB1dEJ5VmFsUHJp
dmF0ZU5hbWUgPSAxLAorCisgICAgUHV0QnlWYWxUaHJvd0lmRXhpc3RzID0gMiwKKworICAgIC8v
IFRoZSBQcml2YXRlRmllbGRBZGQgb3BlcmF0aW9uIG11c3QgdGhyb3cgaWYgYW4gZW50cnkgZm9y
IHRoZSBwcml2YXRlIHJlY29yZCBkb2VzIG5vdCBleGlzdAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZp
ZWxkQWRkID0gUHV0QnlWYWxQcml2YXRlTmFtZSB8IFB1dEJ5VmFsVGhyb3dJZkV4aXN0cywKKyAg
ICBQdXRCeVZhbFByaXZhdGVGaWVsZFB1dCA9IFB1dEJ5VmFsUHJpdmF0ZU5hbWUsCit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFt
OworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3Mp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
S2luZC5oCmluZGV4IDYxMTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1YzhhZjY0ODA4MGM0YzYuLjBk
MzliMDM1ODk2ZTllZjYxOTYzNDIzYTYxZTY4MTNlYjgwN2E1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QgfTsKK2VudW0gUHV0S2lu
ZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RBZGRQcml2YXRlLCBEaXJlY3RQdXRQcml2YXRl
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXgg
NGRjMGU5MTViYzM4MjMxOWE5MmE5NjcxYjYzYjI4YjQ3MGRlODEzZC4uZTNmYWRkY2JhOTY2MjVl
OWRlNzMyYWRhNDgxN2NiMDE1ZTk1NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0
ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1v
ZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gZXhlY3V0YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0
aW9ucygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFy
c2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHZtLCBz
b3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlw
dE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NF
UlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNzRhZGZhMjA5MWRmN2Ez
OTQwODhmZTkyMThkMDhmMTY2NWI1MDk1My4uNmU4Mzg5MGYzZjA5YTUzNDBiZjk1MGUxOWMwNTUw
N2MwMTdmYzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4NTcsNiArMTg1NywxMSBAQCBib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0Vu
dHJ5KHZhck9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3Qo
KSA/IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSA6IFByb3BlcnR5QXR0cmlidXRlOjpOb25l
KSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50
cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRv
IHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3Ro
ZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1
ZS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZh
dGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhh
c0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjY0NCw5ICsyNjQ5LDE1IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7CisgICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1p
dCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAg
T3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5
VmFsTm9uZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNjY4LDYgKzI2NzksMTggQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lz
dGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1
dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxQ
cml2YXRlRmllbGRBZGQpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxE
aXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbFByaXZhdGVG
aWVsZFB1dCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVt
aXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJh
ZTc0YmFmZjU1Yi4uOTY0M2E4NGJjY2I4MDYwNjM1ZjdmNmM3ZDY2YWIxYzZjNDY5OTc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtNzg2LDExICs3ODYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJu
YWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFs
dWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lkIGVtaXRT
dXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCA3YWYzMTA4N2IxMjY0MmRiMGY5OGUwZGJhZmFlY2MzMWRmMTI1MWZhLi41YTVh
Yjk5YTczZDY5ZDNhNWE2YTBhOTEwZjgzMTQ3MjY1ZjczYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NDksOSAr
NTQ5LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxK
U1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7Ci0gICAgLy8gRmFzdCBj
YXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KKyAg
ICAvLyBQcml2YXRlTmFtZXMgYXJlIGhvaXN0ZWQgYW5kIHdlIG5lZWQgdG8gZGVjbGFyZSB0aGVt
IGJlZm9yZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBoYW5kbGVkLgogICAgIFByb3BlcnR5TGlz
dE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisgICAgZm9y
ICg7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUg
JiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBl
IDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoZ2Vu
ZXJhdG9yLCBkc3QsICpwLT5tX25vZGUpOworICAgIH0KKworICAgIC8vIEZhc3QgY2FzZTogdGhp
cyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCisgICAgcCA9IHRo
aXM7CiAgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpD
b25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0lu
c3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApA
QCAtNzEzLDYgKzcyMywxOCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAg
IGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1Rp
bWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9s
KTsKKworICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIs
IDApOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN5bWJvbCA9IGdl
bmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVh
dGVQcml2YXRlU3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBhcmd1bWVudHMsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9u
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9T
Y29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHN5bWJvbC5nZXQoKSwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFt
ZSA9IGdlbmVyYXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lOwpAQCAtODQzLDE2ICs4NjUsNjYgQEAg
UmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0
ZXJJRCogcmV0OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAg
UmVnaXN0ZXJJRCogcmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERl
c3QuZ2V0KCksIGJhc2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShm
aW5hbERlc3QuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJl
dDsKIH0KIAorUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0
ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9p
ZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0
ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgp
LCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgfQor
CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBpZiAoIXRoaXNWYWx1
ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAg
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCB0aGlzVmFsdWUuZ2V0
KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1Zh
bHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGRzdCwgYmFz
ZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYg
KGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgp
LCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJs
ZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNj
b3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UsIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1
ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBp
ZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVU
aGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1ZSk7Cit9CisKK1JlZ2lzdGVySUQqIEJh
c2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwg
YmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNjQwLDExICsxNzEyLDkgQEAg
UmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0T3B0aW9u
YWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0g
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lk
ZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9u
LmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpOworICAgIGVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rpb24uZ2V0KCksIGJhc2UuZ2V0KCkpOwog
CiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRP
cHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAgLTE5NjUsNiArMjAzNSwyMiBAQCBSZWdp
c3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNj
ZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1l
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAgIFZhcmlhYmxlIHZh
ciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
RGlyZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2
YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVt
aXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwg
dmFsdWUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmUoZHN0LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJh
c2VJc1N1cGVyKSB7CkBAIC0yMTg4LDYgKzIyNzQsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgp
LCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1l
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZh
dGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RH
ZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7Cisg
ICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdl
dCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUo
KSkgewogICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwpAQCAtMjky
NCwxMSArMzAyNSw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmb3J3YXJkUmVzdWx0ID0gKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRv
ci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0Lmdl
dCgpKTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50
LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOworICAg
IGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0KCksIGZvcndhcmRSZXN1bHQuZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdC5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0
LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKIH0KQEAgLTI5NDAsMjMgKzMwMzcsMTUgQEAgUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3QKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywg
bV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4
cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
ewotICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZSk7CisKICAgICBSZWdpc3RlcklE
KiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1f
cmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1fb3BlcmF0b3IpLCBPcGVyYW5kVHlw
ZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigp
KSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgZWxz
ZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVu
dCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1pdFB1dFBy
b3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFsdWUpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5nZXQoKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDM1Miw2ICs0NDQxLDE3IEBAIHZv
aWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmln
dXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTogewor
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm1faWRlbnQpOworICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFt
ZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlv
bigpICsgbV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJp
dmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRBZGQoZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTogewog
ICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xhc3MgZmll
bGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgzMzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgxYmM5ZDJmMWIxZC4uYTNmMzRm
OGM2MjEyN2M5ZTg2ZDJhMDk1MGMwNTZiZjU5MWQ5ZGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNp
bmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
ICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4OGY4
ZTFjMmEwYjY3MGJmOTlmLi41NGRhMzFhZTAwZTAwMmZmNmRjMjQ0MTFkZmQ1NDk2ZWNiNGFkY2Zk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTQsNiArMjk0LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKIAogICAgIGNhc2Ugb3Bf
eWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25tZW50Ogor
ICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6IC8vIEZJWE1FOiBvcF9nZXRfYnlfdmFsX2Rp
cmVjdCB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRzLgogICAg
IGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2YWxfcHJvbG9n
dWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMDJlOGQwNjgw
NzkwYzU5NzY3YTQ5MDVmNzc2ZjZmZjFiMWIxMTkzZS4uZDMxMmQ3MjAyODAyMWIzOTkzNzIyNDUz
ODhkNzIyYjY2ZTk5ZWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzODEwLDcgKzEzODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAgc2Ny
YXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtpbmQpOworICAgICAg
ICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCwgUHV0
QnlWYWxOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDgwMzYzOTA3
YjllMTcyODMyNzViMjdhNjk1MzMxOGRjNGU2N2I1OWIuLmFiNGMzYzg5YzkwYjJjM2E0ZTNkZDFh
ODMwMmU4ZjYzODM5YWJjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTM5ODQsNyArMzk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdp
c3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJ
ZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUt
Pm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlWYWxOb25l
KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NDFmZGE2
ODc2ZTY1MmM5ODQ2MDFhMmIzYjc5ZDM0Li41MzBmOTdhNzU3YmJhMWEyNmVlZWM5OTAzZjljNTdk
YjBlYTU3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQw
LDYgKzE0MCw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQ
dXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0
QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggOTA0MGRmMzgyMDc2NGVkZjhk
NTE2MTFmODYwZmM0ZDQyNjU2YzE0OS4uOTVlNjFiY2IzOWM4NmQ2NjI1MmEzNzk5MTJkN2U4NDI0
NmE0ZmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1
aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExp
c3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0
KSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQ
dXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5YmY5YTFhMTk1YzNlODM4NjRj
MWNhMTc4NDA4YTViMGYuLjJmMDM1MDQwODEwMGQ5YjMxYTAyMjA5ODg3MGIwMTUzMDg1M2NhOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hf
d2l0aF9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAg
ICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AocHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5
X3ZhbF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9y
X2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
NjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OS4uNWY3NmY4MzUyODcyMDUw
OWIxOWZlMjIxYjRkMGNlNmFmZWM5NDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0z
OTcsNiArMzk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgogICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHV0QnlWYWxGbGFncyBwdXRCeVZhbEZsYWdzKE9wKTsK
KwogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1
dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZhbEluZm8q
LCBSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYs
IEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY0MTEwMjE3NjRkOTg5NjYy
MjNmZTE4MjBhMmYzODM5YWMzZTdiOWYuLjBkMTZiYTk2MGQ4ZmJmZmNhMDYxNjFiNjg5ZTMxMjU0
YTI2OGE0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMiBAQCB2b2lkIEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2RlIGVj
bWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQg
cHV0S2luZCwgUHV0QnlWYWxGbGFncyBmbGFncykKICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCiAg
ICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwg
dXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQog
ICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQogewogICAgIG1f
c3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsNiArMTUz
LDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChVTkxJS0VMWShtX2ZsYWdzICYgUHV0
QnlWYWxQcml2YXRlTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3Qp
OworICAgICAgICBBU1NFUlQobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKTsKKyAgICAgICAgaWYg
KG1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpCisgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgfQorCiAgICAgaWYg
KG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERp
cmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmgKaW5kZXggMjZlNzAwZmJiN2FkMTgzYmUxYWNiYTczZjM3ZjZmYjQyZmVmY2Qw
ZS4uZjdhNTQ0YzkyMmRmODVjNjk4ZTA5YThhNzUxYzQyMDQ1NTAxYzFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApA
QCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAg
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHV0
QnlWYWxGbGFncyk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJik7CiAgICAgCkBAIC0xNDAsNiArMTQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBF
Q01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFB1dEJ5VmFs
RmxhZ3MgbV9mbGFnczsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggMjNmZjVjODFjMWMwMzIyMmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNiNy4uNzM5
MTRmNDA5ZmI5MTYzMWY4NjM3MWFiNGRlYTZkZmMxMzc1YmE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY2Myw2ICs2NjMsMTggQEAgQUxXQVlTX0lOTElORSBC
aW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNv
ZGUpCiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+
CitBTFdBWVNfSU5MSU5FIFB1dEJ5VmFsRmxhZ3MgSklUOjpwdXRCeVZhbEZsYWdzKE9wKQorewor
ICAgIHJldHVybiBQdXRCeVZhbE5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUg
UHV0QnlWYWxGbGFncyBKSVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFnczsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjJiOWExZDFlOWMzMmQ5Y2Q5OTY5MWIxOTcz
MjA5NWNlOTIzNDY1Yi4uZjY5MjRmY2Q3ZDRkZmQwZDc2NTM0YjY5NjFmYzA0MTY2OTNhZTRlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC02Nzgs
NiArNjc4LDExMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5v
blN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0
QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVu
dCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCit9ICAvLyBleHRlcm4gIkMiCisKK3Vz
aW5nIFB1dFByaXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwgQ29k
ZUJsb2NrKiwgU3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmllciYp
PjsKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUg
YmFzZVZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBKU1ZhbHVlIHZhbHVlLCBQdXRLaW5k
IHB1dEtpbmQsIGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFBy
aXZhdGVGaWVsZENhbGxiYWNrKCkpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHVpZCk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgQVNTRVJU
KHB1dEtpbmQgPT0gRGlyZWN0QWRkUHJpdmF0ZSB8fCBwdXRLaW5kID09IERpcmVjdFB1dFByaXZh
dGUpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgYm9vbCBmb3VuZCA9IGJhc2VPYmplY3Qt
PmlzUHJveHkoKSA/IEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xv
YmFsT2JqZWN0LCBpZGVudCwgc2xvdCkKKyAgICAgICAgOiBiYXNlVmFsdWUuZ2V0T3duUHJvcGVy
dHlTbG90KGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RBZGRQcml2YXRl
ICYmIGZvdW5kKQorICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgIGVsc2Ug
aWYgKHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0ZSAmJiAhZm91bmQpCisgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVy
cm9yKGdsb2JhbE9iamVjdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CisKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSAwOworICAgIFB1dFByb3BlcnR5U2xvdCBwdXRT
bG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAg
Q29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFz
ZU9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90LCAmc3RydWN0dXJlKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAg
ICBjYWxsYmFjayh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30K
KworZXh0ZXJuICJDIiB7CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRk
UHJpdmF0ZVN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgcHV0UHJp
dmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCB1aWQsIHZh
bHVlLCBEaXJlY3RBZGRQcml2YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZh
dGVTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgU3VwZXJT
YW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSk7CisgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZSwgYmFzZU9iamVjdCwgdWlkLCB2YWx1ZSwgRGlyZWN0QWRkUHJpdmF0ZSwgWz1dKFZN
JiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgICAgIExP
R19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0g
YmFzZU9iamVjdCkpOworCisgICAgICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyh2bSwgY29kZUJsb2NrLCBzdHJ1
Y3R1cmUpKQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnQsIHB1dFNsb3QsICpzdHViSW5mbywgRGly
ZWN0QWRkUHJpdmF0ZSk7CisgICAgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBwdXRQcml2YXRl
RmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIHVpZCwgdmFsdWUs
IERpcmVjdFB1dFByaXZhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTdXBlclNhbXBs
ZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpKTsKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLCBiYXNlT2JqZWN0LCB1aWQsIHZhbHVlLCBEaXJlY3RQdXRQcml2YXRlLCBbJl0oVk0mIHZt
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3BlcnR5
U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lD
KChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUs
IGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNl
T2JqZWN0KSk7CisKKyAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVy
ZSkpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywg
YmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQ
dXRQcml2YXRlKTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworfQorCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzU3RyaW5nT3JTeW1ib2woSlNW
YWx1ZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUuaXNTdHJpbmcoKSB8fCB2YWx1ZS5pc1N5
bWJvbCgpOwpAQCAtNzgxLDYgKzg4OCwxNiBAQCBzdGF0aWMgdm9pZCBkaXJlY3RQdXRCeVZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSgogCiAg
ICAgc2NvcGUucmVsZWFzZSgpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3Qs
IGlzU3RyaWN0TW9kZSk7CisgICAgaWYgKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSkgeworICAg
ICAgICAvLyBUaHJvdyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5nIHRvIHN0b3JlIHRvIGEgbm9u
LWV4aXN0ZW50IHByaXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxhciB0byBhIFREWi1saWtlIGJl
aGF2aW91ci4KKyAgICAgICAgYXV0byBieXRlY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYXQoYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KS0+YXM8T3BQdXRCeVZhbERpcmVjdD4oKTsK
KyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgIGJvb2wgZm91bmQgPSBKU09iamVj
dDo6Z2V0T3duUHJvcGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpOworICAgICAgICBpZiAoZm91bmQgPT0gISEoYnl0ZWNvZGUubV9mbGFncyAmIFB1dEJ5
VmFsVGhyb3dJZkV4aXN0cykpIHsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGZvdW5kID8gY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihnbG9i
YWxPYmplY3QpIDogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgQ29tbW9uU2xvd1Bh
dGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJv
cGVydHksIHZhbHVlLCBzbG90KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAppbmRleCA2MDBmY2EyOWRjMjAzODVkYzUwMjIyODAyNTQxMTJjYWMzMWQ2ODQw
Li5kNjhkNTNkMWJlNmU0NDFhZGQ0NTM5YzM3NGRjNGIzMmUxY2Y4NTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTg4LDYgKzE4OCwxMCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dQogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRO
b25TdHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3Ry
aWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1w
bCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRk
UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0ds
b2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEJ5VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25EaXJlY3RQdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5
VmFsSW5mbyopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMmJhMGZhNjg0OGJjZTgyOWFjZDY0MTkwNWYwNWY0
YmQ1NGRjYmUzNS4uZDUyOGEzODBmOTMyMGQxZGM5YWYxNDc5ZGNhZDU2NTA5ZTNlZDFlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTI4Niw3ICsyODYsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBPcCBieXRlYwogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNv
ZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5k
KTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2luZCwgcHV0QnlWYWxGbGFncyhieXRlY29k
ZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBlbWl0V3JpdGVCYXJy
aWVyKGJhc2UsIHZhbHVlLCBTaG91bGRGaWx0ZXJCYXNlKTsKICAgICBkb25lQ2FzZXMuYXBwZW5k
KGp1bXAoKSk7CkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgcmVnVDIsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLAotICAgICAgICBk
aXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBO
b3REaXJlY3QsIFB1dEJ5VmFsTm9uZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRl
eCBiNjY5ZGQ4YjdhZDI2ZDNmNzdkOTY4NmRlNjA4MzQzNGYzNmRiYzUzLi40ODYxZWMxNmE2YWNm
N2QwNTAxNTBlZGMyMDNkMmYxYzgxMTA0MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTM3Miw3ICszNzIsNyBA
QCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKEJ5VmFs
SW5mbyogYnlWYWxJbmZvLCBPcCBieXRlYwogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1
dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtp
bmQsIHB1dEJ5VmFsRmxhZ3MoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBAIC02MDYsNyArNjA2LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29k
ZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRl
Y29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLAotICAgICAgICByZWdUMSwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIGRpcmVjdCA/
IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1v
ZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQdXRCeVZhbE5vbmUpOwogICAgIAog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggZTE2
NGJjMTU0ODljODEyZTdmYTg2YTEyM2QyMjUwZjNkYjk4N2E5My4uNWNkN2FmNTJkODc2MDY0N2Ey
ZDBkZWExMzBiNjA5ZmMxNDgyYmNiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCkBAIC01MjAsNiArNTIwLDEwIEBAIHN0YXRpYyBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIGFw
cHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0CiAgICAgaWYg
KHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQog
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3Q7CisgICAgICAg
IGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUpCisgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3Q7CisgICAgICAgIGlmIChwdXRLaW5kID09IERp
cmVjdFB1dFByaXZhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVTdHJpY3Q7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OwogICAg
IH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC01MzIsNiArNTM2LDEwIEBAIHN0YXRp
YyBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5j
dGlvbihjb25zdCBQdXRQcm9wCiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAg
ICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
QWRkUHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0
ZVN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRl
KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0
aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CiAg
ICAgfQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTYyNCw2ICs2MzIsNyBAQCBzdGF0
aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5
UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICAgICAgICAg
IGlmIChwdXRLaW5kID09IE5vdERpcmVjdCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
cHV0S2luZCAhPSBEaXJlY3RQdXRQcml2YXRlICYmIHB1dEtpbmQgIT0gRGlyZWN0QWRkUHJpdmF0
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hhaW5G
b3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CkBAIC02NDEsNiArNjUwLDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJs
b2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAg
ICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RBZGRQcml2YXRlKSB7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAg
ICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNv
ZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgIH0KKwog
ICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKHZt
LCBjb2RlQmxvY2ssIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3du
ZWRCeUNvZGVCbG9jayhpZGVudCksIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUs
IGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90
LmlzQ2FjaGVhYmxlU2V0dGVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNzEyNWJkNGY1MWFmODE1Yjlk
NTA2NjFlYjdhM2MyNDFhNWFkNjAzYi4uNzU2OGQyMzZkM2FmYjVmYzE0YTYzODc0NTE4NzZmODk5
MmY5NDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJOYXRpdmVF
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHJvdG9D
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93
Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNo
YWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAppbmRleCAyYmZmYzM4MTYzZmUzMWJlOTQxYmVkNmE1ZmI1NmQyOThiZWI2MjI3Li5jMTM0ZTM3
ZTQ5ZDQ1YjFkNTc1ZWM0OGQxM2FmZjljMzFlNWNlNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEwNTksMTQgKzEwNTksMTcgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIFJF
TEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpOworICAgIGJvb2wgaXNQcml2YXRlTmFtZUFjY2VzcyA9IGJ5
dGVjb2RlLm1fZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVOYW1lOwogICAgIGlmIChMSUtFTFkoc3Vi
c2NyaXB0LmlzVUludDMyKCkpKSB7CiAgICAgICAgIC8vIERlc3BpdGUgaXRzIG5hbWUsIEpTVmFs
dWU6OmlzVUludDMyIHdpbGwgcmV0dXJuIHRydWUgb25seSBmb3IgcG9zaXRpdmUgYm94ZWQgaW50
MzJfdDsgYWxsIHRob3NlIHZhbHVlcyBhcmUgdmFsaWQgYXJyYXkgaW5kaWNlcy4KICAgICAgICAg
QVNTRVJUKGlzSW5kZXgoc3Vic2NyaXB0LmFzVUludDMyKCkpKTsKKyAgICAgICAgQVNTRVJUKCFp
c1ByaXZhdGVOYW1lQWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBzdWJzY3JpcHQuYXNVSW50MzIoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9k
ZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRo
cm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCiAgICAgaWYgKHN1YnNjcmlwdC5p
c0RvdWJsZSgpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZUFjY2Vzcyk7CiAgICAg
ICAgIGRvdWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwogICAg
ICAgICB1aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pihz
dWJzY3JpcHRBc0RvdWJsZSk7CiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJz
Y3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewpAQCAtMTA4MCw5
ICsxMDgzLDE4IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2Rp
cmVjdCkKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAg
IExMSU5UX0VORCgpOwogCisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9PSBp
c1ByaXZhdGVOYW1lQWNjZXNzKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4
KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1
dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsK
ICAgICBlbHNlIHsKKyAgICAgICAgaWYgKGlzUHJpdmF0ZU5hbWVBY2Nlc3MpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgLy8gVGhy
b3cgYSBUeXBlRXJyb3IgaWYgYXR0ZW1wdGluZyB0byBzdG9yZSB0byBhIG5vbi1leGlzdGVudCBw
cml2YXRlIGZpZWxkLiBUaGlzIGlzIHNpbWlsYXIgdG8gYSBURFotbGlrZSBiZWhhdmlvdXIuCisg
ICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJv
cGVydHksIHNsb3QpOworICAgICAgICAgICAgaWYgKGZvdW5kID09IGJvb2woYnl0ZWNvZGUubV9m
bGFncyAmIFB1dEJ5VmFsVGhyb3dJZkV4aXN0cykpCisgICAgICAgICAgICAgICAgTExJTlRfVEhS
T1coZm91bmQgPyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkg
OiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAg
fQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUp
OwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFs
T2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KaW5kZXggNjI2NTJhNjYyMzVlYmM1Mjc5MGFmMTcwZjBkZmI4YTRkYjQwMDE0Mi4u
NmI3OWU4ODgzNzVhNTBlNTM1M2ZlZjg3OGEyNzI0MGVkYTI5ZTFlMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KQEAgLTE1MDksNjQgKzE1MDksNjkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlf
aWQsIE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5k
KQogCittYWNybyBnZXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2xvd1BhdGhO
YW1lLCBvc3JFeGl0UG9pbnQpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFt
ZSUsICVvcGNvZGVTdHJ1Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKKyAgICAgICAgbWV0YWRhdGEodDUsIHQyKQorICAgICAgICBnZXQobV9iYXNlLCB0
MikKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxU
YWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAgIGFy
cmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0Miwg
dDUsIHQxKQorICAgICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xv
dykKKyAgICAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMKKyAgICAgICAg
YW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKKyAgICAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwg
Lm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFw
ZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCisKKyAgICAub3BHZXRCeVZhbElzQ29udGlndW91
czoKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAg
ICBsb2FkaSBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MywgdDEsIDhdLCB0MQorICAgICAgICBqbXAgLm9wR2V0QnlWYWxEb25lCisKKyAgICAu
b3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6CisgICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwg
Lm9wR2V0QnlWYWxOb3REb3VibGUKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdl
dEJ5VmFsU2xvdworICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisgICAgICAgIGJkbmVx
dW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICAjIEZJWE1FOiBUaGlzIGNvdWxk
IGJlIG1hc3NpdmVseSBvcHRpbWl6ZWQuCisgICAgICAgIGZkMmlpIGZ0MCwgdDEsIHQyCisgICAg
ICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGptcCAub3BHZXRCeVZhbE5vdEVtcHR5CisKKyAg
ICAub3BHZXRCeVZhbE5vdERvdWJsZToKKyAgICAgICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwg
dDIKKyAgICAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3Jh
Z2VTaGFwZSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4
aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAu
b3BHZXRCeVZhbFNsb3cKKyAgICAgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRh
Z09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVj
dG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorCisgICAgLm9wR2V0QnlWYWxEb25l
OgorICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRCeVZhbFNsb3cKKyAgICAub3BHZXRCeVZhbE5vdEVtcHR5OgorICAgICAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgICAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCB0
NSwgdDIsIHQxKQorICAgICAgICBkaXNwYXRjaCgpCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCi0gICAgbWV0YWRhdGEodDUsIHQyKQotICAgIGdldChtX2Jhc2UsIHQyKQot
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwg
Lm9wR2V0QnlWYWxTbG93KQotICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0
QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLSAgICBnZXQobV9w
cm9wZXJ0eSwgdDMpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMs
IEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1
dHRlcmZseVt0MF0sIHQzCi0gICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAgICBiaWVx
IHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVxIHQyLCBD
b250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRCeVZhbElz
Q29udGlndW91czoKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0g
ICAgbG9hZGkgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MywgdDEsIDhdLCB0MQotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxO
b3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3RE
b3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9h
ZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xv
dwotICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KLSAgICBm
ZDJpaSBmdDAsIHQxLCB0MgotICAgIGdldChtX2RzdCwgdDApCi0gICAgam1wIC5vcEdldEJ5VmFs
Tm90RW1wdHkKLQotLm9wR2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VT
aGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3Rv
cmFnZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9w
R2V0QnlWYWxTbG93Ci0gICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNl
dFt0MywgdDEsIDhdLCB0MgotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXls
b2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCi0KLS5vcEdldEJ5VmFsRG9uZToKLSAgICBnZXQobV9k
c3QsIHQwKQotICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdwotLm9w
R2V0QnlWYWxOb3RFbXB0eToKLSAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQot
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmls
ZShPcEdldEJ5VmFsLCB0NSwgdDIsIHQxKQotICAgIGRpc3BhdGNoKCkKKyAgICAub3BHZXRCeVZh
bFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3Bh
dGNoKCkKIAotLm9wR2V0QnlWYWxTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2goKQorICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAg
ICAgICAgb3NyRXhpdFBvaW50KHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZW5kKQorZW5k
CiAKLS5vc3JSZXR1cm5Qb2ludDoKK2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
X2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsLCBtYWNybyhzaXplLCBtZXRhZGF0YSwgcmV0dXJu
KQogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXpl
KQogICAgIG1ldGFkYXRhKHQyLCB0MykKICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgdDIs
IHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIwKQotCiBlbmQpCiAKK2dldEJ5VmFsT3AoZ2V0X2J5
X3ZhbF9kaXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJl
Y3QsIG1hY3JvKGEsIGIsIGMpIGVuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBv
cGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVv
cGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMzQxNjgwYWJlZTgxOWEyNTJjNzdlZTVmNmYw
OTZlZDU3ZTExYzk0NC4uY2U0YWUzZmYyNjI0MGFkODRkNzI1ZTY0MmYyNWRkMTI0YzdhMjMwNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTE0OTIsMTg0ICsxNDkyLDE4NyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdAogCiBlbmQpCiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0
LCBzbG93UGF0aE5hbWUpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUs
ICVvcGNvZGVTdHJ1Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKKyAgICAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAg
ICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQorICAgICAgICAgICAgc3RvcmVxIHJlc3VsdCwg
W2Nmciwgc2NyYXRjaCwgOF0KKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0
JSwgdDUsIHJlc3VsdCkKKyAgICAgICAgICAgIGRpc3BhdGNoKCkKKyAgICAgICAgZW5kCiAKLWxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAgbWFjcm8gZmluaXNoR2V0QnlW
YWwocmVzdWx0LCBzY3JhdGNoKQotICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCi0gICAgICAg
IHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCB0NSwgcmVzdWx0KQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kCisgICAg
ICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgICAg
IG9ycSBudW1iZXJUYWcsIHJlc3VsdAorICAgICAgICAgICAgZmluaXNoR2V0QnlWYWwocmVzdWx0
LCBzY3JhdGNoKQorICAgICAgICBlbmQKIAotICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJl
c3VsdCwgc2NyYXRjaCkKLSAgICAgICAgb3JxIG51bWJlclRhZywgcmVzdWx0Ci0gICAgICAgIGZp
bmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICBlbmQKKyAgICAgICAgbWFjcm8gZmlu
aXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgICAg
ICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEKKyAgICAgICAgICAgIHN1YnEgbnVtYmVyVGFnLCBzY3Jh
dGNoMQorICAgICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAg
ICAgICBlbmQKIAotICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRj
aDEsIHNjcmF0Y2gyKQotICAgICAgICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEKLSAgICAgICAgc3Vi
cSBudW1iZXJUYWcsIHNjcmF0Y2gxCi0gICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBz
Y3JhdGNoMikKLSAgICBlbmQKKyAgICAgICAgbWV0YWRhdGEodDUsIHQyKQogCi0gICAgbWV0YWRh
dGEodDUsIHQyKQorICAgICAgICBnZXQobV9iYXNlLCB0MikKKyAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCiAKLSAgICBnZXQo
bV9iYXNlLCB0MikKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAs
IC5vcEdldEJ5VmFsU2xvdykKLQotICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9w
R2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLQotICAgIGdl
dChtX3Byb3BlcnR5LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwg
dDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgc3hpMnEgdDEsIHQxCi0KLSAgICBsb2FkQ2Fn
ZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCi0gICAg
bW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwotCi0gICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywg
dDIKLSAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwotICAg
IGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cwotCi0u
b3BHZXRCeVZhbElzQ29udGlndW91czoKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0
QnlWYWxTbG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIK
LSAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNsb3cKLSAgICBqbXAgLm9wR2V0QnlWYWxEb25lCi0K
LS5vcEdldEJ5VmFsTm90Q29udGlndW91czoKLSAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUsIC5v
cEdldEJ5VmFsTm90RG91YmxlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFs
U2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAg
IGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdwotICAgIGZkMnEgZnQwLCB0MgotICAg
IHN1YnEgbnVtYmVyVGFnLCB0MgotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLSAgICAKLS5vcEdl
dEJ5VmFsTm90RG91YmxlOgotICAgIHN1YmkgQXJyYXlTdG9yYWdlU2hhcGUsIHQyCi0gICAgYmlh
IHQyLCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0
QnlWYWxOb3RJbmRleGVkU3RvcmFnZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRC
eVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3JbdDMsIHQxLCA4XSwgdDIKLSAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNsb3cKLQotLm9w
R2V0QnlWYWxEb25lOgotICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9m
aWxlKE9wR2V0QnlWYWwsIHQ1LCB0MikKLSAgICBkaXNwYXRjaCgpCisgICAgICAgIG1vdmUgdDAs
IHQyCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJy
YXlQcm9maWxlLCB0MiwgdDUsIHQxKQogCi0ub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgot
ICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUgYSB0eXBlZCBhcnJheS4gVGhp
cyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQuCi0gICAgbG9hZGIgSlNDZWxs
OjptX3R5cGVbdDBdLCB0MgotICAgIHN1YmkgRmlyc3RUeXBlZEFycmF5VHlwZSwgdDIKLSAgICBi
aWFlcSB0MiwgTnVtYmVyT2ZUeXBlZEFycmF5VHlwZXNFeGNsdWRpbmdEYXRhVmlldywgLm9wR2V0
QnlWYWxTbG93Ci0gICAgCi0gICAgIyBTd2VldCwgbm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEg
dHlwZWQgYXJyYXkuIERvIHNvbWUgYmFzaWMgdGhpbmdzIG5vdy4KKyAgICAgICAgZ2V0KG1fcHJv
cGVydHksIHQzKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMs
IHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgICAgIHN4aTJxIHQxLCB0MQogCi0gICAgaWYgQVJN
NjRFCi0gICAgICAgIGNvbnN0IGxlbmd0aCA9IHQ2Ci0gICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0
NwotICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCBsZW5ndGgK
LSAgICAgICAgYmlhZXEgdDEsIGxlbmd0aCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZWxzZQotICAg
ICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRlZmluZWQgb24g
dGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBwbGF0Zm9ybXMu
Ci0gICAgICAgIGJpYWVxIHQxLCBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCAub3BH
ZXRCeVZhbFNsb3cKLSAgICBlbmQKKyAgICAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6
bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVtYmVyVGFnKQorICAgICAgICBtb3ZlIFRhZ051bWJlciwg
bnVtYmVyVGFnCiAKLSAgICBsb2FkcCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0
MwotICAgIGNhZ2VkUHJpbWl0aXZlKHQzLCBsZW5ndGgsIHQwLCBzY3JhdGNoKQotCi0gICAgIyBO
b3cgYmlzZWN0IHRocm91Z2ggdGhlIHZhcmlvdXMgdHlwZXM6Ci0gICAgIyAgICBJbnQ4QXJyYXlU
eXBlLAotICAgICMgICAgVWludDhBcnJheVR5cGUsCi0gICAgIyAgICBVaW50OENsYW1wZWRBcnJh
eVR5cGUsCi0gICAgIyAgICBJbnQxNkFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQxNkFycmF5VHlw
ZSwKLSAgICAjICAgIEludDMyQXJyYXlUeXBlLAotICAgICMgICAgVWludDMyQXJyYXlUeXBlLAot
ICAgICMgICAgRmxvYXQzMkFycmF5VHlwZSwKLSAgICAjICAgIEZsb2F0NjRBcnJheVR5cGUsCi0K
LSAgICBiaWEgdDIsIFVpbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdl
dEJ5VmFsQWJvdmVVaW50MTZBcnJheQotCi0gICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlU
eXBlIC4uIFVpbnQxNkFycmF5VHlwZS4KLSAgICBiaWEgdDIsIFVpbnQ4Q2xhbXBlZEFycmF5VHlw
ZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJy
YXkKLQotICAgICMgV2UgaGF2ZSBvbmUgb2YgSW50OEFycmF5VHlwZSAuLi4gVWludDhDbGFtcGVk
QXJyYXlUeXBlCi0gICAgYmlhIHQyLCBJbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlw
ZSwgLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRBcnJheQotCi0gICAgIyBXZSBo
YXZlIEludDhBcnJheVR5cGUuCi0gICAgbG9hZGJzaSBbdDMsIHQxXSwgdDAKLSAgICBmaW5pc2hJ
bnRHZXRCeVZhbCh0MCwgdDEpCi0KLS5vcEdldEJ5VmFsVWludDhBcnJheU9yVWludDhDbGFtcGVk
QXJyYXk6Ci0gICAgYmlhIHQyLCBVaW50OEFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUs
IC5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXkKLQotICAgICMgV2UgaGF2ZSBVaW50OEFycmF5
VHlwZS4KLSAgICBsb2FkYiBbdDMsIHQxXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwg
dDEpCi0KLS5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQ4
Q2xhbXBlZEFycmF5VHlwZS4KLSAgICBsb2FkYiBbdDMsIHQxXSwgdDAKLSAgICBmaW5pc2hJbnRH
ZXRCeVZhbCh0MCwgdDEpCi0KLS5vcEdldEJ5VmFsSW50MTZBcnJheU9yVWludDE2QXJyYXk6Ci0g
ICAgIyBXZSBoYXZlIGVpdGhlciBJbnQxNkFycmF5VHlwZSBvciBVaW50MTZDbGFtcGVkQXJyYXlU
eXBlLgotICAgIGJpYSB0MiwgSW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAu
b3BHZXRCeVZhbFVpbnQxNkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgSW50MTZBcnJheVR5cGUuCi0g
ICAgbG9hZGhzaSBbdDMsIHQxLCAyXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEp
Ci0KLS5vcEdldEJ5VmFsVWludDE2QXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQxNkFycmF5VHlw
ZS4KLSAgICBsb2FkaCBbdDMsIHQxLCAyXSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwg
dDEpCi0KLS5vcEdldEJ5VmFsQWJvdmVVaW50MTZBcnJheToKLSAgICAjIFdlIGhhdmUgb25lIG9m
IEludDMyQXJyYXlUeXBlIC4uIEZsb2F0NjRBcnJheVR5cGUuCi0gICAgYmlhIHQyLCBVaW50MzJB
cnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbEZsb2F0MzJBcnJheU9y
RmxvYXQ2NEFycmF5Ci0KLSAgICAjIFdlIGhhdmUgZWl0aGVyIEludDMyQXJyYXlUeXBlIG9yIFVp
bnQzMkFycmF5VHlwZQotICAgIGJpYSB0MiwgSW50MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJy
YXlUeXBlLCAub3BHZXRCeVZhbFVpbnQzMkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgSW50MzJBcnJh
eVR5cGUuCi0gICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCi0gICAgZmluaXNoSW50R2V0QnlWYWwo
dDAsIHQxKQotCi0ub3BHZXRCeVZhbFVpbnQzMkFycmF5OgotICAgICMgV2UgaGF2ZSBVaW50MzJB
cnJheVR5cGUuCi0gICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJn
ZSB1bnNpZ25lZCB2YWx1ZXMuCi0gICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCi0gICAgYmlsdCB0
MCwgMCwgLm9wR2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1w
bGVtZW50IGluIExMSW50LgotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0
QnlWYWxGbG9hdDMyQXJyYXlPckZsb2F0NjRBcnJheToKLSAgICAjIFdlIGhhdmUgb25lIG9mIEZs
b2F0MzJBcnJheVR5cGUgb3IgRmxvYXQ2NEFycmF5VHlwZS4gU2FkbHksIHdlIGNhbm5vdCBoYW5k
bGUgRmxvYXQzMkFycmF5Ci0gICAgIyBpbmxpbmUgeWV0LiBUaGF0IHdvdWxkIHJlcXVpcmUgc29t
ZSBvZmZsaW5lYXNtIGNoYW5nZXMuCi0gICAgYmllcSB0MiwgRmxvYXQzMkFycmF5VHlwZSAtIEZp
cnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsU2xvdwotCi0gICAgIyBXZSBoYXZlIEZsb2F0
NjRBcnJheVR5cGUuCi0gICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQw
LCBmdDAsIC5vcEdldEJ5VmFsU2xvdwotICAgIGZpbmlzaERvdWJsZUdldEJ5VmFsKGZ0MCwgdDAs
IHQxKQotCi0ub3BHZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCgpCisgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFw
ZU1hc2ssIHQyCisgICAgICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250
aWd1b3VzCisgICAgICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90
Q29udGlndW91cworCisgICAgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6CisgICAgICAgIGJpYWVx
IHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5w
dWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkK
KyAgICAgICAgbG9hZHEgW3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5
VmFsU2xvdworICAgICAgICBqbXAgLm9wR2V0QnlWYWxEb25lCisKKyAgICAub3BHZXRCeVZhbE5v
dENvbnRpZ3VvdXM6CisgICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxO
b3REb3VibGUKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRl
eGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwor
ICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisg
ICAgICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBmZDJxIGZ0
MCwgdDIKKyAgICAgICAgc3VicSBudW1iZXJUYWcsIHQyCisgICAgICAgIGptcCAub3BHZXRCeVZh
bERvbmUKKyAgICAgICAgCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6CisgICAgICAgIHN1Ymkg
QXJyYXlTdG9yYWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFn
ZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UK
KyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRl
cjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBn
ZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0
MSwgOF0sIHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdworCisgICAgLm9wR2V0
QnlWYWxEb25lOgorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1
ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1LCB0MikKKyAgICAgICAgZGlzcGF0Y2goKQogCi0u
b3NyUmV0dXJuUG9pbnQ6Ci0gICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dl
dF9ieV92YWwsIHNpemUpCi0gICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCB0NSwgcjApCi0gICAgcmV0dXJuKHIwKQorICAgIC5vcEdldEJ5VmFsTm90SW5k
ZXhlZFN0b3JhZ2U6CisgICAgICAgICMgRmlyc3QgbGV0cyBjaGVjayBpZiB3ZSBldmVuIGhhdmUg
YSB0eXBlZCBhcnJheS4gVGhpcyBsZXRzIHVzIGRvIHNvbWUgYm9pbGVycGxhdGUgdXAgZnJvbnQu
CisgICAgICAgIGxvYWRiIEpTQ2VsbDo6bV90eXBlW3QwXSwgdDIKKyAgICAgICAgc3ViaSBGaXJz
dFR5cGVkQXJyYXlUeXBlLCB0MgorICAgICAgICBiaWFlcSB0MiwgTnVtYmVyT2ZUeXBlZEFycmF5
VHlwZXNFeGNsdWRpbmdEYXRhVmlldywgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIAorICAgICAg
ICAjIFN3ZWV0LCBub3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSB0eXBlZCBhcnJheS4gRG8gc29t
ZSBiYXNpYyB0aGluZ3Mgbm93LgogCi1lbmQpCisgICAgICAgIGlmIEFSTTY0RQorICAgICAgICAg
ICAgY29uc3QgbGVuZ3RoID0gdDYKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSB0NworICAg
ICAgICAgICAgbG9hZGkgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVuZ3RoW3QwXSwgbGVuZ3RoCisg
ICAgICAgICAgICBiaWFlcSB0MSwgbGVuZ3RoLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgIyBsZW5ndGggYW5kIHNjcmF0Y2ggYXJlIGludGVudGlvbmFsbHkgdW5k
ZWZpbmVkIG9uIHRoaXMgYnJhbmNoIGJlY2F1c2UgdGhleSBhcmUgbm90IHVzZWQgb24gb3RoZXIg
cGxhdGZvcm1zLgorICAgICAgICAgICAgYmlhZXEgdDEsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xl
bmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBlbmQKKworICAgICAgICBsb2FkcCBK
U0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MworICAgICAgICBjYWdlZFByaW1pdGl2
ZSh0MywgbGVuZ3RoLCB0MCwgc2NyYXRjaCkKKworICAgICAgICAjIE5vdyBiaXNlY3QgdGhyb3Vn
aCB0aGUgdmFyaW91cyB0eXBlczoKKyAgICAgICAgIyAgICBJbnQ4QXJyYXlUeXBlLAorICAgICAg
ICAjICAgIFVpbnQ4QXJyYXlUeXBlLAorICAgICAgICAjICAgIFVpbnQ4Q2xhbXBlZEFycmF5VHlw
ZSwKKyAgICAgICAgIyAgICBJbnQxNkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50MTZBcnJh
eVR5cGUsCisgICAgICAgICMgICAgSW50MzJBcnJheVR5cGUsCisgICAgICAgICMgICAgVWludDMy
QXJyYXlUeXBlLAorICAgICAgICAjICAgIEZsb2F0MzJBcnJheVR5cGUsCisgICAgICAgICMgICAg
RmxvYXQ2NEFycmF5VHlwZSwKKworICAgICAgICBiaWEgdDIsIFVpbnQxNkFycmF5VHlwZSAtIEZp
cnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsQWJvdmVVaW50MTZBcnJheQorCisgICAgICAg
ICMgV2UgaGF2ZSBvbmUgb2YgSW50OEFycmF5VHlwZSAuLiBVaW50MTZBcnJheVR5cGUuCisgICAg
ICAgIGJpYSB0MiwgVWludDhDbGFtcGVkQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBv
bmUgb2YgSW50OEFycmF5VHlwZSAuLi4gVWludDhDbGFtcGVkQXJyYXlUeXBlCisgICAgICAgIGJp
YSB0MiwgSW50OEFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWlu
dDhBcnJheU9yVWludDhDbGFtcGVkQXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgSW50OEFycmF5
VHlwZS4KKyAgICAgICAgbG9hZGJzaSBbdDMsIHQxXSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRB
cnJheToKKyAgICAgICAgYmlhIHQyLCBVaW50OEFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5
cGUsIC5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXkKKworICAgICAgICAjIFdlIGhhdmUgVWlu
dDhBcnJheVR5cGUuCisgICAgICAgIGxvYWRiIFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJ
bnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5Ogor
ICAgICAgICAjIFdlIGhhdmUgVWludDhDbGFtcGVkQXJyYXlUeXBlLgorICAgICAgICBsb2FkYiBb
dDMsIHQxXSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9w
R2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIGVpdGhl
ciBJbnQxNkFycmF5VHlwZSBvciBVaW50MTZDbGFtcGVkQXJyYXlUeXBlLgorICAgICAgICBiaWEg
dDIsIEludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50
MTZBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4KKyAgICAgICAgbG9h
ZGhzaSBbdDMsIHQxLCAyXSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQor
CisgICAgLm9wR2V0QnlWYWxVaW50MTZBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQxNkFy
cmF5VHlwZS4KKyAgICAgICAgbG9hZGggW3QzLCB0MSwgMl0sIHQwCisgICAgICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsQWJvdmVVaW50MTZBcnJheToKKyAg
ICAgICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQzMkFycmF5VHlwZSAuLiBGbG9hdDY0QXJyYXlUeXBl
LgorICAgICAgICBiaWEgdDIsIFVpbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUs
IC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXkKKworICAgICAgICAjIFdlIGhh
dmUgZWl0aGVyIEludDMyQXJyYXlUeXBlIG9yIFVpbnQzMkFycmF5VHlwZQorICAgICAgICBiaWEg
dDIsIEludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50
MzJBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KKyAgICAgICAgbG9h
ZGkgW3QzLCB0MSwgNF0sIHQwCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKKwor
ICAgIC5vcEdldEJ5VmFsVWludDMyQXJyYXk6CisgICAgICAgICMgV2UgaGF2ZSBVaW50MzJBcnJh
eVR5cGUuCisgICAgICAgICMgVGhpcyBpcyB0aGUgaGFyZGVzdCBwYXJ0IGJlY2F1c2Ugb2YgbGFy
Z2UgdW5zaWduZWQgdmFsdWVzLgorICAgICAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKKyAgICAg
ICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dh
cmQgdG8gaW1wbGVtZW50IGluIExMSW50LgorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwg
dDEpCisKKyAgICAub3BHZXRCeVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5OgorICAgICAg
ICAjIFdlIGhhdmUgb25lIG9mIEZsb2F0MzJBcnJheVR5cGUgb3IgRmxvYXQ2NEFycmF5VHlwZS4g
U2FkbHksIHdlIGNhbm5vdCBoYW5kbGUgRmxvYXQzMkFycmF5CisgICAgICAgICMgaW5saW5lIHll
dC4gVGhhdCB3b3VsZCByZXF1aXJlIHNvbWUgb2ZmbGluZWFzbSBjaGFuZ2VzLgorICAgICAgICBi
aWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlW
YWxTbG93CisKKyAgICAgICAgIyBXZSBoYXZlIEZsb2F0NjRBcnJheVR5cGUuCisgICAgICAgIGxv
YWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlW
YWxTbG93CisgICAgICAgIGZpbmlzaERvdWJsZUdldEJ5VmFsKGZ0MCwgdDAsIHQxKQorCisgICAg
Lm9wR2V0QnlWYWxTbG93OgorICAgICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGhOYW1lKQorICAg
ICAgICBkaXNwYXRjaCgpCisKKyAgICAub3NyUmV0dXJuUG9pbnQ6CisgICAgICAgIGdldHRlclNl
dHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF8lb3Bjb2RlTmFtZSUsIHNpemUpCisgICAgICAgIG1l
dGFkYXRhKHQ1LCB0MikKKyAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCB0NSwg
cjApCisgICAgICAgIHJldHVybihyMCkKKyAgICBlbmQpCitlbmQKKworZ2V0QnlWYWxPcChnZXRf
YnlfdmFsLCBPcEdldEJ5VmFsLCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCiAKK2dldEJ5
VmFsT3AoZ2V0X2J5X3ZhbF9kaXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhfZ2V0
X2J5X3ZhbF9kaXJlY3QpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFt
ZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDRj
NjE3MzBlZGVjOGFkZWJlOTVkNjlmYWE3MDVlYzFjMjBiZjVlOTguLjgzNWNkMDMwODI5MWEyYzg3
NWYyOWRlZDZiMWRiZjY5Y2I2NzE2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXIqIHByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwg
RG90VHlwZSB0eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAgICAg
IGlmIChiYXNlLT5pc1N1cGVyTm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJvcGVydHko
KTsKICAgICAgICAgCi0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOworICAg
ICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vz
c29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CkBAIC02NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5vZGUtPmlzQXNzaWdubWVudExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZh
dGVMb2NhdGlvbihjb25zdCBFeHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5vZGUtPmlzUHJpdmF0ZUxvY2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09iamVjdExp
dGVyYWwoY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2Rl
LT5pc09iamVjdExpdGVyYWwoKTsKQEAgLTE0MzgsMTUgKzE0NDMsMTUgQEAgRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24KICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFj
Y2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUgPSBudWxs
cHRyOwogICAgIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigp
ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSB8
fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmNhbGxQcml2YXRlTmFtZSgpKSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNo
aWxkRGVwdGgpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBk
b3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBs
eUNoaWxkRGVwdGgpOwogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90
LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBs
eVB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgY2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0aGUg
Ynl0ZWNvZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5IHll
dC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NjguCiAg
ICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikKLSAg
ICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAg
ICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFy
Z3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsK
ICAgICB9CiAgICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5vZGUg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5k
aXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KQEAg
LTE1NzEsOSArMTU3Niw5IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWdu
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgQVNTRVJUKGxv
Yy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAgIGlmIChvcCA9PSBPcEVxdWFsKQot
ICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50
cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgQXNzaWduRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBkb3QtPnR5cGUoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90
KCksIHN0YXJ0LCBlbmQpOwogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1f
cGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFy
dCwgZW5kKTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgZG90LT50eXBlKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBz
dGFydCwgZW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCks
IGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCBiMDgzNWYzMDQ1MTdkNzllOTIxY2ViMDY2
MmY3OTI4N2Q3YmNjZjFkLi4zZTEzZmYyOWNmNmFhZDA0Yzg2YTMyNTY1ODdlYjQ3NzAzMzU4YzJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTM5LDEwICs5Mzks
MTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3Jk
ID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKworICAgIGJvb2wgaXNQcml2
YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBpc0J1aWx0aW5OYW1lID0gbV9j
dXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiAgICAgYm9vbCBpc1dl
bGxLbm93blN5bWJvbCA9IGZhbHNlOwotICAgIGlmIChpc1ByaXZhdGVOYW1lKSB7CisgICAgaWYg
KGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bik7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ0AnKSB7CkBA
IC05NTMsNyArOTU0LDEwIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgCiAgICAgY29u
c3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFydE9mZnNldCgpOwotICAg
IAorCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAgICB3aGls
ZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkKICAgICAgICAgc2hpZnQoKTsKICAgICAKQEAgLTk2
Niw3ICs5NzAsOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgIAogICAgIGlmIChzaG91
bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAg
ICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJT
dGFydDsKLSAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc1ByaXZhdGVO
YW1lKSB7CisgICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBp
ZGVudGlmaWVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAm
JiBpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgICAgICBpZiAoaXNXZWxsS25vd25TeW1ib2wpCiAg
ICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woaWRl
bnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC05
ODgsMjAgKzk5MywyMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgIH0gZWxzZQogICAg
ICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKIAotICAgIGlmIChVTkxJS0VMWSgocmVt
YWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxh
Z3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgIGF1dG8g
aWRlbnRUeXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CisgICAgaWYg
KFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29u
dGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc0J1aWx0aW5OYW1l
KSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYg
KHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoVGFi
bGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwogICAgICAgICAg
ICAgQVNTRVJUKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgfHwgIWVudHJ5KTsKICAgICAg
ICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAg
ICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tl
biA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKLSAgICAg
ICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2Rl
ID8gdG9rZW4gOiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURf
SUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBpZGVudFR5cGU7CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgIH0K
IAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQogCiB0ZW1wbGF0
ZSA8PgpAQCAtMTAxNiwxMCArMTAyMiwxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAg
ICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RN
b2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIGJvb2wg
aXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uOworCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAgICBi
b29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5G
dW5jdGlvbjsKICAgICBib29sIGlzV2VsbEtub3duU3ltYm9sID0gZmFsc2U7Ci0gICAgaWYgKGlz
UHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAoaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQo
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnQCcpIHsKQEAgLTEwMzMsMTQgKzEwNDAsMTcgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxVQ2hhcj46OnAKICAgICBpbnQgaWRlbnRpZmllckxpbmVTdGFydCA9IGN1cnJlbnRMaW5lU3Rh
cnRPZmZzZXQoKTsKIAogICAgIFVDaGFyIG9yQWxsQ2hhcnMgPSAwOwotICAgIAorCisgICAgaWYg
KGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAgICB3aGlsZSAoaXNJZGVudFBh
cnQobV9jdXJyZW50KSkgewogICAgICAgICBvckFsbENoYXJzIHw9IG1fY3VycmVudDsKICAgICAg
ICAgc2hpZnQoKTsKICAgICB9CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAn
XFwnKSkgewotICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUpOworICAgICAgICBBU1NFUlQo
IWlzQnVpbHRpbk5hbWUpOwogICAgICAgICBzZXRPZmZzZXRGcm9tU291cmNlUHRyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxpbmVTdGFydCk7CiAgICAgICAgIHJldHVybiBwYXJzZUlkZW50
aWZpZXJTbG93Q2FzZTxzaG91bGRDcmVhdGVJZGVudGlmaWVyPih0b2tlbkRhdGEsIGxleGVyRmxh
Z3MsIHN0cmljdE1vZGUpOwogICAgIH0KQEAgLTEwNTQsNyArMTA2NCw3IEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8VUNoYXI+OjpwCiAgICAgCiAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0g
Y3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0YXJ0OwotICAgICAgICBpZiAobV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uICYmIGlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgaWYgKG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgICAgICBpZiAo
aXNXZWxsS25vd25TeW1ib2wpCiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9hcmVuYS0+bWFr
ZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29r
VXBXZWxsS25vd25TeW1ib2woaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKSk7CiAg
ICAgICAgICAgICBlbHNlCkBAIC0xMDc5LDcgKzEwODksNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFy
Pjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKICAg
ICAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4
ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlz
UHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVu
Z3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdv
cmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlk
ZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAg
ICAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVu
dHJ5KCppZGVudCk7CkBAIC0xMDk5LDggKzExMDksMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKU1Rva2Vu
VHkKIHsKICAgICB0b2tlbkRhdGEtPmVzY2FwZWQgPSB0cnVlOwogICAgIGF1dG8gaWRlbnRpZmll
clN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9ICpp
ZGVudGlmaWVyU3RhcnQgPT0gJyMnOworICAgIGF1dG8gaWRlbnRUeXBlID0gaXNQcml2YXRlTmFt
ZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CiAgICAgYm9vbCBidWZmZXJSZXF1aXJlZCA9IGZhbHNl
OwogCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAgICB3aGls
ZSAodHJ1ZSkgewogICAgICAgICBpZiAoTElLRUxZKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpKSB7
CiAgICAgICAgICAgICBzaGlmdCgpOwpAQCAtMTEyMCw3ICsxMTM1LDggQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVy
PiBKU1Rva2VuVHkKICAgICAgICAgYXV0byBjaGFyYWN0ZXIgPSBwYXJzZVVuaWNvZGVFc2NhcGUo
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFjaGFyYWN0ZXIuaXNWYWxpZCgpKSkKICAgICAgICAg
ICAgIHJldHVybiBjaGFyYWN0ZXIuaXNJbmNvbXBsZXRlKCkgPyBVTlRFUk1JTkFURURfSURFTlRJ
RklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSyA6IElOVkFMSURfSURFTlRJRklFUl9VTklDT0RF
X0VTQ0FQRV9FUlJPUlRPSzsKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fYnVmZmVyMTYuc2l6ZSgp
ID8gIWlzSWRlbnRQYXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSA6ICFpc0lkZW50U3RhcnQoY2hhcmFj
dGVyLnZhbHVlKCkpKSkKKyAgICAgICAgYm9vbCBpc0lkZW50aWZpZXJTdGFydCA9IGlzUHJpdmF0
ZU5hbWUgPyBtX2J1ZmZlcjE2LnNpemUoKSA9PSAxIDogIW1fYnVmZmVyMTYuc2l6ZSgpOworICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudGlmaWVyU3RhcnQgPyAhaXNJZGVudFN0YXJ0KGNoYXJh
Y3Rlci52YWx1ZSgpKSA6ICFpc0lkZW50UGFydChjaGFyYWN0ZXIudmFsdWUoKSkpKQogICAgICAg
ICAgICAgcmV0dXJuIElOVkFMSURfSURFTlRJRklFUl9VTklDT0RFX0VTQ0FQRV9FUlJPUlRPSzsK
ICAgICAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZWNvcmRV
bmljb2RlQ29kZVBvaW50KGNoYXJhY3Rlci52YWx1ZSgpKTsKQEAgLTExNDksMTMgKzExNjUsMTMg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBKU1Rva2VuVHkKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlk
ZW50aWZpZXIpOwogICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6Om1h
aW5UYWJsZS5lbnRyeSgqaWRlbnQpOwogICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAg
cmV0dXJuIElERU5UOworICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgSlNU
b2tlblR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFs
dWUoKSk7CiAgICAgICAgIGlmICgodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJp
Y3RNb2RlKQogICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlclJlcXVpcmVkID8gVU5FWFBFQ1RFRF9F
U0NBUEVfRVJST1JUT0sgOiB0b2tlbjsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAg
cmV0dXJuIGlkZW50VHlwZTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjaGFyYWN0
ZXJSZXF1aXJlc1BhcnNlU3RyaW5nU2xvd0Nhc2UoTENoYXIgY2hhcmFjdGVyKQpAQCAtMjQzMywx
NCArMjQ0OSwyMSBAQCBzdGFydDoKICAgICAgICAgbV9oYXNMaW5lVGVybWluYXRvckJlZm9yZVRv
a2VuID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8g
c3RhcnQ7Ci0gICAgY2FzZSBDaGFyYWN0ZXJIYXNoOgorICAgIGNhc2UgQ2hhcmFjdGVySGFzaDog
ewogICAgICAgICAvLyBIYXNoYmFuZyBpcyBvbmx5IHBlcm1pdHRlZCBhdCB0aGUgc3RhcnQgb2Yg
dGhlIHNvdXJjZSB0ZXh0LgotICAgICAgICBpZiAocGVlaygxKSA9PSAnIScgJiYgIWN1cnJlbnRP
ZmZzZXQoKSkgeworICAgICAgICBhdXRvIG5leHQgPSBwZWVrKDEpOworICAgICAgICBpZiAobmV4
dCA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkgewogICAgICAgICAgICAgc2hpZnQoKTsKICAg
ICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7
CiAgICAgICAgIH0KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBpdCBjb3VsZCBiZSBhIHZhbGlkIFBy
aXZhdGVOYW1lLgorICAgICAgICBpZiAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSAmJiAoaXNJ
ZGVudFN0YXJ0KG5leHQpIHx8IG5leHQgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgIGxleGVyRmxh
Z3MucmVtb3ZlKExleGVyRmxhZ3M6OkRvbnRCdWlsZEtleXdvcmRzKTsKKyAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudDsKKyAgICAgICAgfQogICAgICAgICBnb3RvIGludmFsaWRDaGFyYWN0ZXI7
CisgICAgfQogICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKICAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgICAgIGdvdG8gcGFyc2VJ
ZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3Jz
LmgKaW5kZXggZmQ5N2EwY2E5MzVlN2U1Nzc4YTA5Mzg1MDIyZjk4Njc4MDE0YTMyNC4uMDZlNjAy
YTdiZGE3MmJiMjgyMTk4ZjI5N2Q4M2E0MWFhOGU1MTI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTMyNywxMCArMzI3LDE2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNjZXNzb3JO
b2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIGlubGluZSBC
YXNlRG90Tm9kZTo6QmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5
cGUpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9iYXNl
KGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICAgICAgLCBtX3R5cGUodHlwZSkK
KyAgICB7CisgICAgfQorCisgICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlKQorICAgICAgICA6IEJhc2VE
b3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICB7CiAgICAgfQogICAgIApA
QCAtNDE4LDExICs0MjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAg
aW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2Nh
dGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNl
KQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAg
ewogICAgIH0KQEAgLTQzNywxNCArNDQxLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAgaW5s
aW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAg
ICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDog
RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBl
IHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKKyAgICAgICAg
OiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgICAgICAsIG1fZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKICAgICB7CiAg
ICAgfQpAQCAtNzUwLDIxICs3NTQsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQs
IHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3Rh
cnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX3JpZ2h0SGFzQXNz
aWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2Rl
OjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwg
T3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBC
YXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAg
ICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9y
aWdodChyaWdodCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwgbV9yaWdo
dEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCmluZGV4IDlkMWNmYTRmMTc2MTMwMmEzM2JiYWUzMWVmNjBmZGZjYWYy
MDdkZjUuLjExYmY0YTY4NGExYmQ5YTA5M2ViOGViMTZlMWUxMzcyNjYyMGQzOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBQ
cm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wTmFtZSkKIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4aWNh
bFNjb3BlRm9yQ2xhc3MoUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKIHsKICAgICB3aGlsZSAobGlz
dCkgewotICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQor
ICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIHx8IGxpc3Qt
Pm1fbm9kZS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
bGlzdCA9IGxpc3QtPm1fbmV4dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKaW5kZXggNDlhYWM0NzM1ODA3MGUzZjM4Yjc4YzIxMmYwMjMyOTEzNWE5NmZiYS4uMjYzZjY1
ZmQyZTYyZWQwYTk4YWJjOThkZDQ1NWZhMGM0NjM3MGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaApAQCAtMTgyLDYgKzE4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0gICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0ZUxvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNz
aWdubWVudExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNMb2NhdGlvbigpOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIGlzQXNzaWduUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQpAQCAtNzEyLDcgKzcxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gY2xh
c3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0
VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFyZW5h
RnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENv
bnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhh
bmQgPSAxNiwgU3ByZWFkID0gMzIgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENv
bnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhh
bmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OwogICAgICAgICBlbnVtIFB1dFR5
cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQcm9wZXJ0
eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwg
U3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzMxLDYgKzczMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlz
Q2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wg
aXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9w
ZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlk
ZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRl
OyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJp
dmF0ZTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3Qg
eyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAg
dm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxp
Y2F0ZSA9IHRydWU7IH0KQEAgLTc0MSw3ICs3NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9l
eHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVu
c2lnbmVkIG1fdHlwZSA6IDY7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CiAgICAgICAg
IHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX3B1
dFR5cGUgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3Vs
ZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CkBAIC04MTMsOSArODE1LDMwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAg
fTsKIAotICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBlbnVtIGNsYXNzIERv
dFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSB9OworICAgIGNsYXNzIEJhc2VEb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vzc29yTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYpOworICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOworCisgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CisgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
OyB9CisgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAg
ICAgICBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlw
ZTo6UHJpdmF0ZU5hbWU7IH0KKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFz
ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQcm9wZXJ0eShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBS
ZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQ
dXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHZhbHVlKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
YmFzZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAgICAgICAgRG90VHlw
ZSBtX3R5cGU7CisgICAgfTsKKworICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1
YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
OyB9CkBAIC04MjQsMTAgKzg0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQogICAgICAgICBi
b29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFNwcmVhZEV4cHJlc3Npb25Ob2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewpAQCAtOTQwLDkgKzk2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1f
c3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBCYXNl
RG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgRnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKQEAgLTk1MCw4ICs5NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAg
IH07CiAKQEAgLTk4OCw3ICsxMDA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
QXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6
ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxs
T3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtOTk3
LDcgKzEwMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0
aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVu
dHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlz
dGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKKyAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBs
eSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtMTQzMiwyOCAr
MTQ1MSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdu
bWVudHMgOiAxOwogICAgIH07CiAKLSAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAg
IGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEFzc2ln
bkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRh
IHsKKyAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9k
ZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUs
IE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFz
ZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIHVuc2lnbmVkIG1fb3BlcmF0b3IgOiAzMTsKICAgICAg
ICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjIzNiw3ICsyMjUxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNzIFR5cGUg
eyBOYW1lLCBDb21wdXRlZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgTmFtZSwg
UHJpdmF0ZU5hbWUsIENvbXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25Ob2RlKiwg
VHlwZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCmluZGV4IGM0YWFjOGU1NWVkNzM2OWIwOWY5NzU0ZTU0YjMyZGFlY2Y3MzJiN2IuLmU4ZmUw
M2MzM2RkZmM3NzA2MmExMTBjYjkyYWIzMzcwOGIwNTEwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgyMCw2ICs4MjAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlh
YmxlRGVjbAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAgZGVjbGFy
YXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKworICAgICAg
ICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5h
bWUgdG8gZGVjbGFyZSBhIHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJZGVudGlm
aWVyKCkpIHsKICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVjbGFyYXRp
b25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFyYXRpb25U
eXBlID09IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAgICAgICAg
ICAgICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2Fs
RGVjbGFyYXRpb24iKTsKQEAgLTEyNzgsNiArMTI4MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZURlCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1
cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
c2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtp
bmROYW1lKGtpbmQpKTsKKyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0dXJpbmdLaW5k
OjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1h
dGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAiLCBkZXN0
cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAgICAgICBmYWls
V2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFy
YW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkg
JiYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwga2luZCA9
PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1c2UgJ2xl
dCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAt
MjkzOCw2ICsyOTQyLDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2Uo
Y29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFt
ZSIpOwogICAgICAgICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJd
IiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6
OnVzZUNsYXNzRmllbGRzKCkpOworICAgICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47
CisgICAgICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAg
ZmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3Mg
ZWxlbWVudCBjYW5ub3QgYmUgcHJpdmF0ZSIpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dl
dHRlciB8fCBpc1NldHRlciwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRl
IG5hbWUiKTsKKyAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CisgICAgICAgICAgICBuZXh0KCk7
CisgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4p
LCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgq
aWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwg
IkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgZmllbGQgdHdpY2UiKTsKKyAgICAgICAgICAgIHR5cGUg
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlBy
aXZhdGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCiAgICAg
ICAgICAgICAgICAgZ290byBuYW1lZEtleXdvcmQ7CkBAIC0yOTUzLDggKzI5NzAsMTAgQEAgcGFy
c2VNZXRob2Q6CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJz
ZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICB9IGVsc2UgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmll
bGRzKCkgJiYgIW1hdGNoKE9QRU5QQVJFTikgJiYgdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5z
dGFuY2UgJiYgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewogICAg
ICAgICAgICAgQVNTRVJUKCFpc0dldHRlciAmJiAhaXNTZXR0ZXIpOwotICAgICAgICAgICAgaWYg
KGlkZW50KQorICAgICAgICAgICAgaWYgKGlkZW50KSB7CiAgICAgICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yLCAiQ2Fubm90
IGRlY2xhcmUgY2xhc3MgZmllbGQgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3Rv
clByaXZhdGVGaWVsZCwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgY2xhc3MgZmllbGQgbmFtZWQg
JyNjb25zdHJ1Y3RvciciKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1
dGVkUHJvcGVydHlOYW1lKSB7CiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVu
YS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0
ZWRGaWVsZHMrKyk7CkBAIC0zMDE4LDYgKzMwMzcsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5m
by5lbmRPZmZzZXQgPSB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1l
T3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3Mg
Ym9keSIpOwogCisgICAgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkpIHsKKyAgICAgICAg
Ly8gRmFpbCBpZiB0aGVyZSBhcmUgbm8gcGFyZW50IHByaXZhdGUgbmFtZSBzY29wZXMgYW5kIGFu
eSB1c2VkLWJ1dC11bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMuCisgICAgICAgIHNlbWFudGljRmFp
bElmRmFsc2UoY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKSwgIkNhbm5v
dCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzIik7CisgICAgfQogICAgIGF1dG8g
Y2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGluZm8s
IGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBw
YXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwgVHJl
ZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVz
c2lvbjsKQEAgLTMwNDEsNiArMzA2NCw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAg
ICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gMDsKICAgICAgICAgRGVm
aW5lRmllbGROb2RlOjpUeXBlIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6Ok5hbWU7CiAg
ICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFN
RToKKyAgICAgICAgICAgIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1l
OworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgU1RSSU5HOgogICAgICAg
ICBjYXNlIElERU5UOgogICAgICAgICBuYW1lZEtleXdvcmQ6CkBAIC0zMDgwLDYgKzMxMDYsOSBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICBpZiAoY29uc3VtZShFUVVBTCkpCiAg
ICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4
dCk7CiAKKyAgICAgICAgaWYgKHR5cGUgPT0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRl
TmFtZSkKKyAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFs
c2UpOworCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgZGVmaW5lRmllbGQgPSBjb250ZXh0LmNyZWF0
ZURlZmluZUZpZWxkKGZpZWxkTG9jYXRpb24sIGlkZW50LCBpbml0aWFsaXplciwgdHlwZSk7CiAg
ICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBkZWZpbmVGaWVs
ZCk7CiAgICAgfQpAQCAtNDc3Miw2ICs0ODAxLDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNv
cmRDYWxsT3JBcHBseURlcHRoKFBhcnNlclR5cGUqLCBWTSYsIE9wdGlvbmFsPHR5cGVuYW1lIFBh
CiB7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Citib29sIFBhcnNlcjxMZXhl
clR5cGU+OjplbnN1cmVQcml2YXRlTmFtZVVzZWQoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7
CisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgU2NvcGVSZWYgY3VycmVudCA9
IGN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKCZmb3VuZCk7CisgICAgaWYgKCFmb3VuZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY3VycmVudC0+aGFzUHJpdmF0ZU5hbWUoKmlkZW50
KSkKKyAgICAgICAgY3VycmVudC0+dXNlUHJpdmF0ZU5hbWUoKmlkZW50KTsKKworICAgIHJldHVy
biB0cnVlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
ZW1iZXJFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewpAQCAtNDg4Nyw2ICs0OTMy
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKIAogICAgICAgICAgICAgU2F2ZVBvaW50IHNh
dmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKICAgICAgICAgICAgIG5leHQoKTsK
KyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5u
b3QgYWNjZXNzIHByaXZhdGUgaWRlbnRpZmllcnMgaW4gYW4gb3B0aW9uYWwgY2hhaW4iKTsKICAg
ICAgICAgICAgIGlmIChtYXRjaChPUEVOQlJBQ0tFVCkgfHwgbWF0Y2goT1BFTlBBUkVOKSB8fCBt
YXRjaChCQUNLUVVPVEUpKQogICAgICAgICAgICAgICAgIHR5cGUgPSBtX3Rva2VuLm1fdHlwZTsK
ICAgICAgICAgICAgIGVsc2UgewpAQCAtNDk3NCw4ICs1MDIwLDIxIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVt
YmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVz
c2lvbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVu
ZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgbmV4dEV4cGVjdElk
ZW50aWZpZXIoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtleXdvcmRzIHwgTGV4ZXJGbGFnczo6SWdu
b3JlUmVzZXJ2ZWRXb3Jkcyk7CisgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBhdXRvIHR5cGUgPSBE
b3RUeXBlOjpOYW1lOworICAgICAgICAgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkpIHsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ZmFpbElmVHJ1ZShiYXNlSXNTdXBlciwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBuYW1lcyBmcm9t
IHN1cGVyIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50U2NvcGUo
KS0+ZXZhbENvbnRleHRUeXBlKCkgPT0gRXZhbENvbnRleHRUeXBlOjpJbnN0YW5jZUZpZWxkRXZh
bENvbnRleHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShj
dXJyZW50U2NvcGUoKS0+aGFzUHJpdmF0ZU5hbWUoKmlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2Ug
dW5kZWNsYXJlZCBwcml2YXRlIGZpZWxkICciLCBpZGVudC0+aW1wbCgpLCAiJyIpOworICAgICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGVuc3VyZVByaXZhdGVOYW1lVXNlZChp
ZGVudCksICJDYW5ub3QgcmVmZXJlbmNlIHByaXZhdGUgbmFtZXMgb3V0c2lkZSBvZiBjbGFzcyIp
OworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZSA9IGlk
ZW50OworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRl
bnQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IERvdFR5cGU6OlByaXZhdGVO
YW1lOworICAgICAgICAgICAgICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IElERU5UOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVk
IGEgcHJvcGVydHkgbmFtZSBhZnRlciAiLCBvcHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICIn
LiciKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3Rh
cnRMb2NhdGlvbiwgYmFzZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwg
ZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3RhcnRMb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5
cGUsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmRQb3NpdGlvbigpKTsK
ICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYmFzZUlzU3VwZXIgJiYgY3VycmVudFNjb3Bl
KCktPmlzQXJyb3dGdW5jdGlvbigpKSkKICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0
aW9uU2NvcGUoKS0+c2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc1N1cGVyUHJvcGVydHkoKTsKICAg
ICAgICAgICAgICAgICBuZXh0KCk7CkBAIC01MTcwLDYgKzUyMjksNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVu
YXJ5RXhwcmVzcwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46
CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QoY29udGV4dC5pc1Jlc29sdmUoZXhwciks
ICJDYW5ub3QgZGVsZXRlIHVucXVhbGlmaWVkIHByb3BlcnR5ICciLCBtX3BhcnNlclN0YXRlLmxh
c3RJZGVudGlmaWVyLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CisgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUoY29udGV4dC5pc1ByaXZhdGVMb2NhdGlvbihleHByKSwgIkNhbm5v
dCBkZWxldGUgcHJpdmF0ZSBmaWVsZCAiLCBtX3BhcnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZS0+
aW1wbCgpKTsKICAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKGxvY2F0
aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVw
dGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAg
LTUyNDAsNyArNTMwMCwxMSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBh
cnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgSU5W
QUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CiAgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBw
cml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIAorCisgICAgY2FzZSBQUklWQVRFTkFNRToKKyAgICAgICAgb3V0LnByaW50KCJVbmV4
cGVjdGVkIHByaXZhdGUgbmFtZSAiLCBnZXRUb2tlbigpKTsKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgY2FzZSBBV0FJVDoKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhw
ZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCmluZGV4IDc5ZWEwOTY2ZGI2MjQ1OTRmMmFjMmMzOGNmODRiYzNiYzM2
ZWMzNWQuLjViYzQ2MzA3YTI1MTMxMDFkMmYxYTg5YjVlZDJmZGUyYWU2MjBjM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkKICAgICAgICAgLCBtX2lzRXZhbENvbnRl
eHQoZmFsc2UpCiAgICAgICAgICwgbV9oYXNOb25TaW1wbGVQYXJhbWV0ZXJMaXN0KGZhbHNlKQor
ICAgICAgICAsIG1faXNQcml2YXRlTmFtZVNjb3BlKGZhbHNlKQogICAgICAgICAsIG1faXNDbGFz
c1Njb3BlKGZhbHNlKQogICAgICAgICAsIG1fZXZhbENvbnRleHRUeXBlKEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKQEAgLTI4OSw2ICsyOTAsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0dlbmVyYXRvckJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRv
ckJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2lzQXN5bmNGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSBj
b25zdCB7IHJldHVybiBtX2lzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5OyB9CisgICAgYm9vbCBpc1By
aXZhdGVOYW1lU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2lzUHJpdmF0ZU5hbWVTY29wZTsgfQog
ICAgIGJvb2wgaXNDbGFzc1Njb3BlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzU2NvcGU7IH0K
IAogICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7
IH0KQEAgLTMwNSw4ICszMDcsMTQgQEAgcHVibGljOgogICAgICAgICBtX2FsbG93c0xleGljYWxE
ZWNsYXJhdGlvbnMgPSB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNQcml2YXRlTmFtZVNj
b3BlKCkKKyAgICB7CisgICAgICAgIG1faXNQcml2YXRlTmFtZVNjb3BlID0gdHJ1ZTsKKyAgICB9
CisKICAgICB2b2lkIHNldElzQ2xhc3NTY29wZSgpCiAgICAgeworICAgICAgICBzZXRJc1ByaXZh
dGVOYW1lU2NvcGUoKTsKICAgICAgICAgbV9pc0NsYXNzU2NvcGUgPSB0cnVlOwogICAgIH0KIApA
QCAtNDcxLDcgKzQ3OSw0NCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9sZXhp
Y2FsVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmdldCgpKTsKICAgICB9Ci0gICAgCisKKyAgICBi
b29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQcml2YXRlTmFtZShpZGVudCk7CisgICAg
fQorCisgICAgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhTY29wZSYgb3RoZXIpCisg
ICAgeworICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMuY29weVVuZGVjbGFyZWRQcml2YXRlTmFt
ZXMob3RoZXIubV9sZXhpY2FsVmFyaWFibGVzKTsKKyAgICB9CisKKyAgICBib29sIGhhc1VzZWRC
dXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2xl
eGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9y
IChhdXRvIGVudHJ5IDogbV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lcygpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52YWx1ZS5pc0Rl
Y2xhcmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHVz
ZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIG1fbGV4aWNhbFZhcmlh
Ymxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1
bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBE
ZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOwor
ICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0
ZU5hbWUoaWRlbnQpOworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAg
ICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFy
YXRpb247CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGhhc0RlY2xhcmVkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAg
IHsKICAgICAgICAgcmV0dXJuIGhhc0RlY2xhcmVkUGFyYW1ldGVyKGlkZW50LmltcGwoKSk7CkBA
IC04MzQsNiArODc5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQXJndW1lbnRzOwogICAg
IGJvb2wgbV9pc0V2YWxDb250ZXh0OwogICAgIGJvb2wgbV9oYXNOb25TaW1wbGVQYXJhbWV0ZXJM
aXN0OworICAgIGJvb2wgbV9pc1ByaXZhdGVOYW1lU2NvcGU7CiAgICAgYm9vbCBtX2lzQ2xhc3NT
Y29wZTsKICAgICBFdmFsQ29udGV4dFR5cGUgbV9ldmFsQ29udGV4dFR5cGU7CiAgICAgdW5zaWdu
ZWQgbV9jb25zdHJ1Y3RvcktpbmQ7CkBAIC05MDUsNyArOTUxLDcgQEAgcHVibGljOgogICAgIH5Q
YXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXIm
LCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9u
Q29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZl
Y3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBh
cnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3Rv
clBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxw
dHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQogICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0IHsgcmV0dXJu
IG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTExNzgsNiArMTIyNCwzMiBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CiAgICAg
fQogCisgICAgU2NvcGVSZWYgY3VycmVudFByaXZhdGVOYW1lU2NvcGUoYm9vbCAqZm91bmQgPSAw
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwor
ICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB3aGlsZSAo
aSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAg
aS0tOworICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICAqZm91bmQgPSBtX3Njb3BlU3Rh
Y2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9z
Y29wZVN0YWNrLCBpKTsKKyAgICB9CisKKyAgICBib29sIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5h
bWVzVG9PdXRlclNjb3BlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zY29wZVN0YWNrLmlz
RW1wdHkoKSk7CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBjdXJyZW50UHJpdmF0ZU5hbWVT
Y29wZSgpOworICAgICAgICB1bnNpZ25lZCBpID0gY3VycmVudC5pbmRleCgpIC0gMTsKKyAgICAg
ICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAg
ICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICByZXR1cm4gIWN1
cnJlbnQtPmhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCk7CisKKyAgICAgICAgY3Vy
cmVudC0+Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMobV9zY29wZVN0YWNrW2ldKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgU2NvcGVSZWYgY2xvc2VzdFBhcmVudE9yZGlu
YXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9
IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwpAQCAtMTQ1Miw2ICsxNTI0LDE2IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5tX3R5cGUgPT0gZXhwZWN0ZWQ7CiAgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQW5kVXBkYXRlKEpTVG9rZW5UeXBlIGV4
cGVjdGVkLCBjb25zdCBKU1Rva2VuJiB0b2tlbikKKyAgICB7CisgICAgICAgIGlmIChtYXRjaChl
eHBlY3RlZCkpIHsKKyAgICAgICAgICAgIG1fdG9rZW4gPSB0b2tlbjsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAg
ICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hDb250ZXh0dWFsS2V5d29yZChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIHsKQEAgLTE3MDIsNiArMTc4NCw4IEBAIHByaXZh
dGU6CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9v
bCBpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoVHJlZUJ1aWxkZXImLCBUcmVlRXhwcmVzc2lvbik7
CiAKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGNvbnN0IElk
ZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNU
b2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKICAgICAKQEAg
LTE3OTYsNiArMTg4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUGFyc2VQaGFzZSBm
dW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkgfTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxscHRyIH07CiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxscHRyIH07CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9v
bCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUGFyc2luZ0NsYXNzRmllbGRJ
bml0aWFsaXplciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTE5NDUsNyArMjAzMCw3IEBAIHByaXZh
dGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
c2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwg
T3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBj
b25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQorc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJF
cnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+
IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0
cmluZyBlcnJNc2c7CkBAIC0xOTYwLDYgKzIwNDUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0
IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpi
ZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFy
dENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9k
ZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAmJiB2YXJpYWJsZXNVbmRlclREWi0+cHJpdmF0ZU5h
bWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2Nv
cGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5kZXJURFotPmNvcHlQcml2YXRlTmFtZXMoY3VycmVu
dFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgfQorCiAgICAgYXV0byBwYXJzZVJl
c3VsdCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29udGV4dCwg
ZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucyk7CiAKICAgICBpbnQgbGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsK
QEAgLTIwNDQsNiArMjEzNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRl
eHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFs
Q29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VE
YXRhID0gbnVsbHB0ciwKKyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNV
bmRlclREWiA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5z
dGFuY2VGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIpCiB7CiAgICAgQVNTRVJUKCFzb3VyY2UucHJv
dmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwpAQCAtMjA1NSw3ICsyMTQ2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQo
KSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVp
bHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5n
LCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRl
eHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdn
ZXJQYXJzZURhdGEpOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4o
ZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2lu
Z0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBp
bnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBh
cnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4o
KSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6
bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAg
ICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsK
ICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4p
IHsKQEAgLTIwNjgsNyArMjE1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJz
ZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
IkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3VsZCBhbHdheXMg
dXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNl
cih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VN
b2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0
aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENv
bnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSk7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5w
YXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNl
ZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFt
LCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQg
PSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4
dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5zdGFuY2VGaWVs
ZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAg
ICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oCmluZGV4IGRiZDZkNjUxNGNmYmNmZTIzMTM2NTNjODZlMWM0YWUwMzNiOGYy
NDMuLmY1NjkwNGM4OTgyMWU3YWE4ZWM1YzFiNTAyNDk3ZDlhMzAwZWI1MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTE0LDYgKzExNCw3IEBA
IGVudW0gSlNUb2tlblR5cGUgewogICAgIERPVUJMRSwKICAgICBCSUdJTlQsCiAgICAgSURFTlQs
CisgICAgUFJJVkFURU5BTUUsCiAgICAgU1RSSU5HLAogICAgIFRFTVBMQVRFLAogICAgIFJFR0VY
UCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXgg
ZjliYjA3YjRkZDQwODljN2IxZTNhMGYzZjU5NTQxYjMxN2E1MmQ3Zi4uZTliNmQ3ZTk0Njc0NGUx
YTA4ZGMxY2MyOGE0NmI3MTM3NzNjOTg0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgICAgICBS
ZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3Ry
aW5nRXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhw
ciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCiAgICAgICAgIEZ1bmN0aW9uRXhwciwg
Q2xhc3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIsIEJyYWNrZXRFeHByLCBEb3RFeHByLCBD
YWxsRXhwciwKLSAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwg
QmluYXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwKKyAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9z
dEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwgUHJpdmF0ZURvdEV4
cHIsCiAgICAgICAgIENvbmRpdGlvbmFsRXhwciwgQXNzaWdubWVudEV4cHIsIFR5cGVvZkV4cHIs
CiAgICAgICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJhbEV4cHIsIEJpbmRpbmdEZXN0cnVjdHVy
aW5nLCBSZXN0UGFyYW1ldGVyLAogICAgICAgICBBcnJheURlc3RydWN0dXJpbmcsIE9iamVjdERl
c3RydWN0dXJpbmcsIFNvdXJjZUVsZW1lbnRzUmVzdWx0LApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1
YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vz
cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmll
ciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWUgPyBQcml2YXRlRG90RXhwciA6IERvdEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGlu
dCkgeyByZXR1cm4gWWFycjo6aGFzRXJyb3IoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJp
bmcoKSwgZmxhZ3Muc3RyaW5nKCkpKSA/IDAgOiBSZWdFeHBFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlw
ZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlw
ZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KQEAgLTQwMyw3ICs0MDMsMTIgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc0xvY2F0aW9uKEV4cHJlc3Npb25UeXBlIHR5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwg
dHlwZSA9PSBCcmFja2V0RXhwcjsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIg
fHwgdHlwZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0gUHJpdmF0ZURvdEV4cHIgfHwgdHlwZSA9PSBC
cmFja2V0RXhwcjsKKyAgICB9CisKKyAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKEV4cHJlc3Np
b25UeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBQcml2YXRlRG90RXhw
cjsKICAgICB9CiAKICAgICBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKEV4cHJlc3Npb25UeXBl
IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcAppbmRleCA4ZTY5MTUxYzdiNmNiMzExMWIwZmU3N2NlODk3MzA3NDA2MmY1
ZjVhLi4xZjU3MDg4YTM0YzY2M2NhNzAyZjc3ZDQ3NzQwNjk2ZTI2NzY4OGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAK
QEAgLTI5LDYgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitWYXJpYWJsZUVudmlyb25t
ZW50JiBWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgb3RoZXIpCit7CisgICAgbV9tYXAgPSBvdGhlci5tX21hcDsKKyAgICBtX2lzRXZlcnl0
aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKKyAgICBtX3JhcmVE
YXRhLnJlc2V0KCk7CisgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURh
dGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhl
ci5tX3JhcmVEYXRhKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIHZvaWQgVmFyaWFibGVFbnZp
cm9ubWVudDo6bWFya1ZhcmlhYmxlQXNDYXB0dXJlZElmRGVmaW5lZChjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogewogICAgIGF1dG8gZmluZFJlc3VsdCA9IG1f
bWFwLmZpbmQoaWRlbnRpZmllcik7CkBAIC04MCw2ICs5MCw3IEBAIHZvaWQgVmFyaWFibGVFbnZp
cm9ubWVudDo6c3dhcChWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKIHsKICAgICBtX21hcC5z
d2FwKG90aGVyLm1fbWFwKTsKICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gb3RoZXIubV9p
c0V2ZXJ5dGhpbmdDYXB0dXJlZDsKKyAgICBtX3JhcmVEYXRhLnN3YXAob3RoZXIubV9yYXJlRGF0
YSk7CiB9CiAKIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNJbXBvcnRl
ZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQpAQCAtMTAwLDcg
KzExMSw3IEBAIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZp
cm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50CiAgICAgOiBtX2lzRXZlcnl0aGluZ0Nh
cHR1cmVkKGVudi5pc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpKQogewogICAgIFZlY3RvcjxzdGQ6OnBh
aXI8VW5pcXVlZFN0cmluZ0ltcGwqLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnk+LCAzMj4gc29y
dGVkRW50cmllczsKLSAgICBzb3J0ZWRFbnRyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW52
LnNpemUoKSk7CisgICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5t
YXBTaXplKCkpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGVudikKICAgICAgICAgc29ydGVkRW50
cmllcy5hcHBlbmQoeyBwYWlyLmtleS5nZXQoKSwgcGFpci52YWx1ZSB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1
MzJkMTQ2ZWZkMWZjYWU1MzI2OWU3NWRmNmY1ZmRiZWExOTkyYzUyLi4wYzFkMGFjM2ViYWRjYThl
YzM4YTZjODhlYTYzMTM5YjQ5MGEzMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5j
bHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNDIsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0Z1bmN0aW9uOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzUGFyYW1ldGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRz
ICYgSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lz
dGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTmFtZTsgfQogCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBA
IC01Myw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNGdW5j
dGlvbigpIHsgbV9iaXRzIHw9IElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0SXNQYXJhbWV0ZXIoKSB7IG1fYml0cyB8PSBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIHsgbV9iaXRzIHw9
IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldElzUHJpdmF0ZU5hbWUoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVOYW1lOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBA
IC03NCw3ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIElzSW1wb3J0ZWROYW1lc3BhY2UgPSAx
IDw8IDYsCiAgICAgICAgIElzRnVuY3Rpb24gPSAxIDw8IDcsCiAgICAgICAgIElzUGFyYW1ldGVy
ID0gMSA8PCA4LAotICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwg
OQorICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwgOSwKKyAgICAg
ICAgSXNQcml2YXRlTmFtZSA9IDEgPDwgMTAsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMg
eyAwIH07CiB9OwpAQCAtODMsMTUgKzg4LDU1IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKIH07CiAK
K3N0cnVjdCBQcml2YXRlTmFtZUVudHJ5IHsKK3B1YmxpYzoKKyAgICBQcml2YXRlTmFtZUVudHJ5
KHVpbnQxNl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMg
JiBJc0RlY2xhcmVkOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBt
X2JpdHMgfD0gSXNVc2VkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRGVjbGFyZWQo
KSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CisKKyAgICB1aW50MTZfdCBiaXRzKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJpdmF0ZU5h
bWVFbnRyeSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9iaXRzID09IG90
aGVyLm1fYml0czsKKyAgICB9CisKKyAgICBlbnVtIFRyYWl0cyA6IHVpbnQxNl90IHsKKyAgICAg
ICAgSXNVc2VkID0gMSA8PCAwLAorICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAorICAgIH07
CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OworfTsKKworc3RydWN0IFBy
aXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworfTsKKwog
Y2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1h
cDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBNYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50
cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOwogcHVibGljOgot
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9u
bWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJs
ZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmKSA9IGRlZmF1bHQ7Ci0gICAg
VmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQm
KSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KFZhcmlhYmxl
RW52aXJvbm1lbnQmJikgPSBkZWZhdWx0OworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSB7IH0K
KyAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikKKyAg
ICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX2lzRXZlcnl0
aGluZ0NhcHR1cmVkKG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCisgICAgICAgICwgbV9y
YXJlRGF0YShXVEZNb3ZlKG90aGVyLm1fcmFyZURhdGEpKQorICAgIHsKKyAgICB9CisgICAgVmFy
aWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKKyAgICAg
ICAgOiBtX21hcChvdGhlci5tX21hcCkKKyAgICAgICAgLCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVk
KG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCisgICAgICAgICwgbV9yYXJlRGF0YShvdGhl
ci5tX3JhcmVEYXRhID8gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVE
YXRhPigqb3RoZXIubV9yYXJlRGF0YSkgOiBudWxscHRyKQorICAgIHsKKyAgICB9CisgICAgVmFy
aWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90
aGVyKTsKIAogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBiZWdpbigpIHsgcmV0dXJu
IG1fbWFwLmJlZ2luKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZW5kKCkg
eyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KQEAgLTk5LDcgKzE0NCw4IEBAIHB1YmxpYzoKICAgICBB
TFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5hZGQo
aWRlbnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkpOyB9CiAgICAgQUxXQVlTX0lO
TElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBy
ZXR1cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVO
YW1lc1NpemUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlu
cyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJl
dHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCByZW1vdmUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyBy
ZXR1cm4gbV9tYXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6
Oml0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
cikgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQpAQCAtMTE2LDExICsxNjIsMTA0
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuICFtX21hcC5zaXplKCk7IH0KIAorICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0g
V1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lczo6aXRlcmF0b3I+OworCisgICAgQUxXQVlT
X0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1w
bCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsg
fQorCisgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBhdXRvJiBtZXRh
ID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgbWV0YS5z
ZXRJc0RlY2xhcmVkKCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTmFtZSgpOworICAgICAgICBlbnRy
eS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAg
cmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisgICAgfQorICAgIHZvaWQgdXNl
UHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZp
ZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzVXNlZCgpOworICAgICAgICBpZiAobWV0YS5p
c0RlY2xhcmVkKCkpCisgICAgICAgICAgICBmaW5kKGlkZW50aWZpZXIpLT52YWx1ZS5zZXRJc0Nh
cHR1cmVkKCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZXNSYW5nZSBw
cml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRv
clJhbmdlIG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2ZW50IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVj
a1ZhbGlkaXR5KCkuCisgICAgICAgIEFTU0VSVChwcml2YXRlTmFtZXNTaXplKCkgPiAwKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHByaXZhdGVOYW1lc1NpemUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250
YWlucyhpZGVudGlmaWVyLmltcGwoKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGNvcHlQcml2YXRlTmFtZXMoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICghb3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG90aGVyLm1fcmFyZURhdGEgPSBX
VEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAg
IGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50
cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LnZhbHVl
LmlzVXNlZCgpICYmIGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkpCisgICAgICAgICAgICAgICAg
ICAgIG90aGVyLm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChlbnRyeS5rZXksIGVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmlyb25tZW50
JiBvdXRlcikgY29uc3QgeworICAgICAgICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNm
ZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2YXRlTmFtZXMgZnJvbSBhbgorICAgICAgICAvLyBpbm5l
ciBQcml2YXRlTmFtZUVudmlyb25tZW50IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5F
IGlzIHVzZWQKKyAgICAgICAgLy8gZWFybGllciBpbiB0aGUgc291cmNlIGNvZGUgdGhhbiBpdCBp
cyBkZWZpbmVkLgorICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAg
ICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgb3V0ZXIuZ2V0T3JBZGRQcml2YXRlTmFtZShlbnRyeS5rZXku
Z2V0KCkpLnNldElzVXNlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgc3RydWN0IFJhcmVEYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOworCisgICAgICAgIFJhcmVEYXRhKCkgeyB9CisgICAgICAgIFJhcmVEYXRhKFJhcmVEYXRh
JiYgb3RoZXIpCisgICAgICAgICAgICA6IG1fcHJpdmF0ZU5hbWVzKFdURk1vdmUob3RoZXIubV9w
cml2YXRlTmFtZXMpKQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgUmFyZURhdGEoY29u
c3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CisgICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29u
c3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CisgICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVO
YW1lczsKKyAgICB9OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJs
ZUVudmlyb25tZW50OwogCiAgICAgTWFwIG1fbWFwOwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdD
YXB0dXJlZCB7IGZhbHNlIH07CisKKyAgICBQcml2YXRlTmFtZUVudHJ5JiBnZXRPckFkZFByaXZh
dGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJs
ZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuYWRkKGltcGwsIFByaXZhdGVOYW1lRW50cnkoMCkpLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmFyaWFibGVFbnZpcm9ubWVudDo6
UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDb21wYWN0VmFyaWFibGVFbnZpcm9u
bWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRU
eXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
aW5kZXggMjI2YjQ4MzU0NjJkOGM0NWU2MTlmNjY4MDBiZTk5N2E5MWFlODhhMS4uZmU2ZGNiYTI3
ZDk3ZWUwNzI0NzZiMzNmNTM2YmFjNGQ2NTM1NzIxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtODU3LDYgKzg1NywxMiBAQCBwdWJsaWM6
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVuY29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7
CiAgICAgfQorCisgICAgU291cmNlVHlwZTxUPiogZGVjb2RlQXNQdHIoRGVjb2RlciYgZGVjb2Rl
cikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkp
OworICAgICAgICByZXR1cm4gdGhpcy0+dGVtcGxhdGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNv
ZGVyKTsKKyAgICB9CiB9OwogCiBjbGFzcyBDYWNoZWRTaW1wbGVKdW1wVGFibGUgOiBwdWJsaWMg
Q2FjaGVkT2JqZWN0PFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiB7CkBAIC0xMDA0LDIzICsxMDEw
LDQ1IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXpl
ciA6IDE7CiB9OwogCitjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBw
dWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CitwdWJs
aWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFt
ZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAg
ICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJl
RGF0YSYgcmFyZURhdGEpIGNvbnN0CisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNv
ZGUoZGVjb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwg
VW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2
YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGlj
IENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KQog
ICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IGVudi5tX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkOwogICAgICAgICBtX21hcC5lbmNvZGUoZW5jb2RlciwgZW52Lm1fbWFwKTsKKyAg
ICAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZW52Lm1fcmFyZURhdGEuZ2V0KCkpOwog
ICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJv
bm1lbnQmIGVudikgY29uc3QKICAgICB7CiAgICAgICAgIGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1
cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICAgICAgbV9tYXAuZGVjb2RlKGRlY29k
ZXIsIGVudi5tX21hcCk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIGVudi5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJv
bm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29k
ZXIsICplbnYubV9yYXJlRGF0YSk7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVm
UHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNr
ZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gbV9tYXA7CisgICAgQ2FjaGVk
UHRyPENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAK
IGNsYXNzIENhY2hlZENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9i
amVjdDxDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudD4gewpAQCAtMTE0Nyw2ICsxMTc1LDIyIEBA
IHByaXZhdGU6CiAgICAgaW50cHRyX3QgbV9iaXRzOwogfTsKIAorY2xhc3MgQ2FjaGVkU3ltYm9s
VGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRh
YmxlUmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEpCisgICAg
eworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2
YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN5
bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVO
YW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRy
PENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5h
bWVzOworfTsKKwogY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKQpAQCAtMTE1Nyw2ICsxMjAxLDcgQEAg
cHVibGljOgogICAgICAgICBtX25lc3RlZExleGljYWxTY29wZSA9IHN5bWJvbFRhYmxlLm1fbmVz
dGVkTGV4aWNhbFNjb3BlOwogICAgICAgICBtX3Njb3BlVHlwZSA9IHN5bWJvbFRhYmxlLm1fc2Nv
cGVUeXBlOwogICAgICAgICBtX2FyZ3VtZW50cy5lbmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUu
bV9hcmd1bWVudHMuZ2V0KCkpOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBz
eW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICBTeW1ib2xUYWJsZSog
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBAIC0xMTcwLDYgKzEyMTUsMTEgQEAgcHVi
bGljOgogICAgICAgICBTY29wZWRBcmd1bWVudHNUYWJsZSogc2NvcGVkQXJndW1lbnRzVGFibGUg
PSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmIChzY29wZWRBcmd1bWVu
dHNUYWJsZSkKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX2FyZ3VtZW50cy5zZXQoZGVjb2Rl
ci52bSgpLCBzeW1ib2xUYWJsZSwgc2NvcGVkQXJndW1lbnRzVGFibGUpOworICAgICAgICBpZiAo
IW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9yYXJl
RGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4o
KTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPmRlY29kZShkZWNvZGVyLCAqc3ltYm9sVGFibGUt
Pm1fcmFyZURhdGEpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwog
ICAgIH0KIApAQCAtMTE4MCw2ICsxMjMwLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25l
c3RlZExleGljYWxTY29wZSA6IDE7CiAgICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOwogICAg
IENhY2hlZFB0cjxDYWNoZWRTY29wZWRBcmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CisgICAg
Q2FjaGVkUHRyPENhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBj
bGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKaW5kZXggMzBiNThiNmFjZGVjZDU4YjAzMDdiZDUyODQ2ZWE0NjU4MmI5YjA5ZC4u
MDUxZWE3YWE2NjgyZDA4ZGRjZTA4N2YxOTI5NTQxNjNjYjI5ZDEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFVubGlu
a2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzCiB7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVu
bGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgIHZtLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpw
YXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSk7Cisg
ICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90
QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVC
bG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVs
bHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250
ZXh0VHlwZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJURFopOwogICAgIGlmICghcm9vdE5vZGUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggNjJjMGQ1OTU3M2E2YTYzOTkw
OTM5ZjFjZWY5NGQ5MTlkN2Q3M2M2ZS4uN2VlNzEzYzljNGEyNTkyZmYzMzBmNjhmNWE2NjQ2ZWQz
ZTgwOWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmNwcApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZp
bmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZChJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5h
bWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGluTmFtZXMtPm5hbWUjI1ByaXZhdGVOYW1l
KCkpCiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5hbWUpICwgbmFtZSMjU3ltYm9sKG1fYnVp
bHRpbk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX0ZJ
RUxEX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmllbGQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJz
KFZNJiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQ1LDYgKzQ2LDcgQEAgQ29tbW9u
SWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICBKU0NfQ09NTU9OX0lE
RU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1P
Tl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1F
KQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lN
Qk9MKElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9Q
UklWQVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRl
eCBkZjAxZjJhMTE4NzQwNDEyNjMyYmYyYWRhYjhhZTA0ZjI2YWM5N2QwLi44ZDJlOWE3ODEyMmY2
MjYxMDYxNmIyMjFkOWJlOGY2YTRiMjM3OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIwNSw2ICsyMDUsOSBAQAogICAg
IG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikKIAorI2RlZmluZSBKU0NfQ09NTU9O
X0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChtYWNybykgXAorICAgIG1hY3JvKGNvbnN0
cnVjdG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1h
Y3JvKSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMzE5LDYg
KzMyMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9Q
UklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCiAKKyNkZWZpbmUgSlNDX0lE
RU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlm
aWVyIG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19F
QUNIX1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dM
T0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFM
CisKICAgICAgICAgLy8gQ2FsbGVycyBvZiB0aGlzIG1ldGhvZCBzaG91bGQgbWFrZSBzdXJlIHRo
YXQgaWRlbnRpZmllcnMgZ2l2ZW4gdG8gdGhpcyBtZXRob2QgCiAgICAgICAgIC8vIHN1cnZpdmUg
dGhlIGxpZmV0aW1lIG9mIENvbW1vbklkZW50aWZpZXJzIGFuZCByZWxhdGVkIFZNLgogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEV4dGVybmFsTmFtZShjb25zdCBJZGVudGlm
aWVyJiBwdWJsaWNOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBwcml2YXRlTmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0
NGQ4ZmI0YjQyMmE5MmQwM2I4MWFiMGFmMThkNGY2NWIxZThjODM1Li40Y2M1MmU2Yzg0NjkyZGJj
NDY0NzFkOGYxMzBmMmZiNTE2YTUyNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEyOTgsNiArMTI5OCw3MiBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgUkVUVVJOX1BS
T0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkpOwogfQog
CitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3QpCit7CisgICAgQkVH
SU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeVZhbERpcmVjdD4oKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gR0VUX0MoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNW
YWx1ZSgpOworCisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0
LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJlID0gKmJhc2VWYWx1
ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgaWYgKEpTQ2VsbDo6Y2FuVXNlRmFz
dEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxBdG9tU3Ry
aW5nSW1wbD4gZXhpc3RpbmdBdG9tU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlz
dGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRvbVN0cmluZykgeworICAgICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blBy
b3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbVN0cmluZy5nZXQoKSkpCisgICAgICAg
ICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAg
IHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgYXV0byYgbWV0YWRh
dGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICBBcnJheVByb2ZpbGUq
IGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKworICAgICAgICBpZiAo
aXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoYXNTdHJpbmcoYmFzZVZh
bHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkpOworICAgICAgICAg
ICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOworICAgICAgICB9IGVsc2UgaWYgKGJh
c2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmNhbkdldEluZGV4UXVp
Y2tseShpKSkKKyAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQob2JqZWN0LT5nZXRJbmRl
eFF1aWNrbHkoaSkpOworCisgICAgICAgICAgICBib29sIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMg
PSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJy
YXlXaXRoQ29udGlndW91cyAmJiBpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+cHVibGljTGVuZ3Ro
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9y
YWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKKyAgICAgICAgICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCisgICAgICAgICAgICAgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgICAgICAg
ICAgICAgIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBnbG9iYWxPYmplY3QtPmlzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpICYmIGdsb2JhbE9iamVjdC0+YXJy
YXlQcm90b3R5cGVDaGFpbklzU2FuZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoIXNraXBNYXJraW5nT3V0T2ZCb3VuZHMgJiYgIUNvbW1vblNsb3dQYXRoczo6Y2FuQWNjZXNz
QXJndW1lbnRJbmRleFF1aWNrbHkoKm9iamVjdCwgaSkpCisgICAgICAgICAgICAgICAgYXJyYXlQ
cm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOworICAgICAgICB9CisKKyAgICAgICAgUkVUVVJOX1BS
T0ZJTEVEKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2Jq
ZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
YXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisKKyAg
ICBib29sIGZvdW5kID0gKGJhc2VWYWx1ZS5hc0NlbGwoKS0+aXNQcm94eSgpICYmIHByb3BlcnR5
LmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgPyBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90
KGFzT2JqZWN0KGJhc2VWYWx1ZSksIGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpCisgICAg
ICAgIDogYmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIHByb3BlcnR5
LCBzbG90KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWZvdW5kICYmIHByb3Bl
cnR5LmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgVEhST1coY3JlYXRlSW52YWxpZFByaXZhdGVO
YW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgUkVUVVJOX1BST0ZJTEVEKGZvdW5kID8gc2xv
dC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5KSA6IGpzVW5kZWZpbmVkKCkpOworfQor
CiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKIHsKICAgICBC
RUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAppbmRleCBiNzEzNWUyYjc4NGFiNjhkYjVmNTU4ZmE3ODUwNGNhYjA5NjQzYzYxLi4zZmQ0
YTliMTk1NTFlZmZhM2Q5ZDk2MWUxZTA1MDkwYTY2NjllY2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjcyLDYgKzI3Miw3IEBA
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3QpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGFmOThkNGQyN2I0
MWQxNDMzNmEwMjE4ZTgwYjc2Y2U0ZDhiNDBiNzIuLmQ4MWU1ODY2NDFiZDZmYzJiYWNkMGZiNDE3
OTkxY2JmMTVmNTliMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMjksNiArMzI5LDE2IEBAIEpTT2JqZWN0KiBjcmVh
dGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBjcmVh
dGVSZWZlcmVuY2VFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6
ZWQgdmFyaWFibGUuIik7CiB9CiAKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIGludmFsaWQg
cHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30K
KworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgbWFrZVN0cmluZygiQ2Fubm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQi
KSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7Cit9CisKIEV4Y2VwdGlvbiog
dGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93
U2NvcGUmIHNjb3BlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IDM1YWQx
MjU1NGM3MDEyN2U0YmZiNzU1MWViYjNjMTc4ZWViNGM2ZTEuLjAyMTMwYWViYWEyOGI3N2Y3OWMx
NmUwMWYyOTYzMTU1YjgyYTc5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTUzLDYgKzUzLDggQEAgSlNPYmplY3QqIGNyZWF0
ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rp
b24oSlNHbG8KIEpTT2JqZWN0KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVjdCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xv
YmFsQXNzaWdubWVudChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3Qq
IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CitKU09iamVj
dCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOwogU3Ry
aW5nIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0ds
b2JhbE9iamVjdCosIFRocm93U2NvcGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBjOTZjMDEzY2QzYjNiYjBhZjE1NjgxNDkz
YWU5NDIyMWI0ZWRjNzcwLi41ODJhNTFhMTczNzI4MWViN2NiYzg5N2VmMTI1NWU4MWNiMGE1NTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0zMDUsNiArMzA1LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+
aGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSkp
OwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRl
U3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
U3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCku
Z2V0KCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMTE2MSw2ICsxMTY3LDEyIEBAIGNhcGl0YWxOYW1l
ICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/
IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5p
dC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBn
bG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpKTsKICAgICAgICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCisKKyAgICAvLyBQcml2YXRlU3ltYm9scyAvIFByaXZhdGVOYW1lcworICAgIG1fbGlu
a1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNy
ZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2Vs
bD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0
LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNy
ZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7CisKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQogICAgIC8vIFdlYkFzc2Vt
Ymx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRl
cm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCA2ZDVhYjY4MmM2
ODM5MTRmNjlmM2U1YzIyODM4NGZlZmU0NjU3N2M4Li45NmM4ZGJkNDMwNjc5MWUxYTVlNjExOGE2
NTIzZTU0ZDgzZjNhNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcApAQCAtMzM5LDYgKzMzOSwxMCBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFy
aWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFZhcmlhYmxlRW52aXJvbm1lbgogICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAg
ICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpLCBpdGVyID0gc3ltYm9s
VGFibGUtPmJlZ2luKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0
ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnBy
aXZhdGVOYW1lcygpKQorICAgICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRlTmFtZShuYW1l
KTsgICAgCisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCBiYzQ5ZGM5ODJjNzMyODJiZWRlYjJiMWRlZmM3
NjdhODVhYjM1YWY5Li43NzkwY2Y1NzNkMjZmOTUyZjQ5OTlhNTNmM2MyNzVkNjc1MWEzY2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0x
ODMsNiArMTgzLDExIEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQo
Vk0mIHZtKQogICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGl0ZXIt
PmtleSwgaXRlci0+dmFsdWUpOwogICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKKyAgICAgICAgICAg
ICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggMmQ3ODZhNThjMDkzODBiMDIzMTUwZjA3
ZTgyMjc2MjZjNmQ2YTU5Ny4uYjBkZDc0ZjdlNGMwMTUwMDM3M2U5Mzc4ZTFhZjk2NDYzZTVmZDI2
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0z
OCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRT
dHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sSW1wbC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNDUwLDYgKzQ1MCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVy
UmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0
LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5
cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7CisgICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNo
PiBQcml2YXRlTmFtZVNldDsKKyAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFt
ZSBQcml2YXRlTmFtZVNldDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTU5NCw3ICs1OTYsMjUgQEAg
cHVibGljOgogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
ICAgIGFkZChsb2NrZXIsIGtleSwgc3RkOjpmb3J3YXJkPEVudHJ5PihlbnRyeSkpOwogICAgIH0K
LSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
RGF0YSAmJiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZSBwcml2YXRlTmFtZXMoKQorICAgIHsKKyAg
ICAgICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRvclJhbmdlIG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2
ZW50IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVja1ZhbGlkaXR5KCkuCisgICAgICAgIEFTU0VSVCho
YXNQcml2YXRlTmFtZXMoKSk7CisgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5lbmQoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5n
SW1wbCoga2V5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgp
KTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdU
Rjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworCisgICAgICAgIEFTU0VSVCgh
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoa2V5KSk7CisgICAgICAgIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVudHJ5PgogICAgIHZvaWQgc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBrZXksIEVudHJ5JiYgZW50cnkpCiAgICAgewpAQCAtNzIxLDE4ICs3
NDEsMjEgQEAgcHJpdmF0ZToKICAgICBTY29wZU9mZnNldCBtX21heFNjb3BlT2Zmc2V0OwogcHVi
bGljOgogICAgIG11dGFibGUgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7Ci1wcml2YXRlOgotICAg
IHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1fbmVzdGVk
TGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KLSAgICB1bnNp
Z25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQotICAgIAorCiAgICAgc3RydWN0IFN5
bWJvbFRhYmxlUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIFVuaXF1ZUlETWFwIG1fdW5pcXVlSURNYXA7CiAgICAgICAgIE9mZnNldFRv
VmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0
TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4g
bV9jb2RlQmxvY2s7CisgICAgICAgIFByaXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOwogICAg
IH07CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV91c2VzTm9uU3RyaWN0RXZhbCA6IDE7Cisg
ICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4
aWNhbFNjb3BlLgorICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsgLy8gU2NvcGVUeXBlCisK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIAog
ICAgIFdyaXRlQmFycmllcjxTY29wZWRBcmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRlMzE0
OWRlM2YwZTVjZWUwOGZhMjg4YjBkZDg5ZTg1N2IwZmQxNmIuLjIwNTdjNmYxM2JiZjNhZGE2NDU5
ZDc2NmQ3NTUwYzY4NjE0NmM4NzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjAtMDMtMDYgIENhaXRsaW4g
UG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBm
b3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV4cGFuZHMgdXBvbiB0aGUgZWFybGllciBwdWJsaWMgZmllbGRzIHBh
dGNoLCBhZGRpbmcgYSBudW1iZXIgb2YgcHJpdmF0ZQorICAgICAgICBmaWVsZCB0ZXN0cy4KKwor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29k
ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXBy
b3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0
LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJl
c3MtaW5zdGFuY2UuanM6CisgICAgICAgIChBLmYpOgorICAgICAgICAoQSk6CisgICAgICAgICog
c3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDMtMDQgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEhhbmRsZSBhbiBvdXQgb2YgbWVt
b3J5IGVycm9yIHdoaWxlIGNvbnN0cnVjdGluZyB0aGUgQnl0ZWNvZGVHZW5lcmF0b3IuCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhlOWFlZDRkMWEzMWJlMGE4MmJjZjA5ODAyMzFmMGJjYmQ1MTBjYzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5j
dGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NG
aWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsg
YSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2QoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7
Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwODY5
OGY2NTE5OWU3Njk5MjlkZmQ5ZWQyYTU1YjU2M2FiZTA4NQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpAQCAt
MCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VDbGFzc0ZpZWxkcz10cnVl
IikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30K
KworY2xhc3MgQyB7CisgICAgI2YgPSAzOworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1
cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhv
ZCgpLCAzKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtb24tcHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1w
cm94eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43N2YwNGU2ZDU0YTY2ZWY1MmJkNWZkMzEzZGI3N2IzMjYyY2Zl
ZTlmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtb24tcHJveHkuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChh
ICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2Vy
dEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNp
emUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEu
bGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0g
IiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIg
PSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAg
cmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmos
IHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9
CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAgICBtZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQgPSBuZXcg
VGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBi
dXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2Yt
bGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5l
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY2NDRkNmIyMTNiY2E1ODU5YmViN2MyZWI2MmU0NjhkMmNiZTdiZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1v
dXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEg
IT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQg
Z290OiAiICsgYSk7Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9IGAKK3ZhciBDID0gY2xhc3Mgewor
ICAgIGFzc2VydE91dE9mTGluZVZhbHVlKCkgeworICAgICAgICBhc3NlcnQodGhpcy4jZjIwMCwg
ImZvbyIpOworICAgIH0KK2A7CisKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkrKykgewor
ICAgIGtsYXNzU291cmNlICs9ICIgICAgI2YiICsgaSArICI7XG4iOworfQorCitrbGFzc1NvdXJj
ZSArPSAiICAgICNmMjAwID0gXCJmb29cIjtcbn0iOworCitldmFsKGtsYXNzU291cmNlKTsKKwor
Zm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
Yy5hc3NlcnRPdXRPZkxpbmVWYWx1ZSgpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMDY5NmJhY2NmOTI3MGNl
YWUwZWI5MzI3ZTQwY2QwOTg5OTZhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpAQCAtMCwwICsxLDE1IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVz
c2FnZSk7Cit9CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihpKSA9PiBp
LiNiIik7CisKKyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fzc2VydChp
bnN0LmEoaW5zdCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3Ry
ZXNzLWluc3RhbmNlLmpzCmluZGV4IDU2NjI0ZmJlZWRiYjAyOGI5NGUwZDZlNjExZmU0OTkzNmQy
NTI1OGYuLjNjOWI1ODhlYmVjOWY0YjZkMmE2OTFjNGY3ZDZiOGMzNWFkOTMzZWUgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKKysrIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAtMyw5ICsz
LDEzIEBACiBjbGFzcyBBIHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7Cisg
ICAgI2QgPSAxOwogICAgIGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAgICNmID0g
ZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZhbCgi
dHJ1ZSIpOworICAgICNpID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgaSsrKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJl
Y3QtZ2V0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHBy
aXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmY3NzhjYWYyZjgzNzc5NGJiZmU0ZmMwYTQ3MGJlOTQwNzU1
Y2NhMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0
LWdldHByaXZhdGUuanMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmllbGRz
PTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdldEJ5VmFs
RGlyZWN0IHNob3VsZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZlIHRoZSBy
ZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3ID0gZmFsc2U7CitjbGFzcyBD
IHsKKyAgICAjeCA9IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkgcmV0dXJu
IHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0aWMgeChv
YmopIHsgcmV0dXJuIG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsg
cmV0dXJuICJ3aXRoICN4IjsgfQorfQorCit0cnkgeworICAgIGZvciAoaSA9IDA7IGkgPCA1MDsg
KytpKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngo
Yyk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYEV4cGVjdGVkIEMueCgke2N9KSB0byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7
CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0g
MzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7Cisg
ICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlw
ZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg0Y2QwMTZhNTUxYWJiNTc4NzdlMmE3NDc1ZjliZTAyNzU2NjkxMDIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNv
bXB1dGVkLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IChleHBl
Y3RlZEVycm9yLCBmdW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5j
dG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5j
ZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUgKyAiIGJ1dCB0aHJvd3M6ICIg
KyBlLm5hbWUpOworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBbe30uI3hdID0gMTsgCisgICAg
ICAgICN4ID0gImZvbyI7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnkt
dmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmZjk0OTVmOTU2OWQ0ZjgyMGEz
NGQyNWUwNWMxM2ZkZTg5YmZhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vIFRPRE86
IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5EZWZhdWx0
KCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZUNsYXNzRmllbGRzPTEi
KQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAi
UHV0QnlWYWxUaHJvd0lmRXhpc3RzIiBzaG91bGQgdGhyb3cgaWYgb3ZlcndyaXRpbmcgYW4gYWxy
ZWFkeSBleGlzdGluZyBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsK
K2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8IDI5ID8g
dGhpcyA6IGM7CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4ID0gaSsr
OworICAgIHgoKSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0cnkgewor
ICAgIGZvciAobGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9IG5ldyBD
QzsKKyAgICAgICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsKKyAgICB9
Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBl
LmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9
CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3Is
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1i
eS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzM5MWZhY2JmNDRjOGMwNWQ4
MTBmZjFmM2ZlY2I4NDVlYzMwZDUwNQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwzMSBAQAorLy8gVE9E
TzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklU
KCItLXVzZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlQ2xhc3NGaWVsZHM9
MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0QnlWYWxQcml2YXRlTmFtZSIgc2hvdWxkIHRocm93IGlm
IHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRo
cmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeDsKKyAgICBjb25zdHJ1Y3RvcigpIHsgcmV0
dXJuIGkgPCAzMCA/IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91dCAjeCIg
fTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4ID0gaSsrOyB9CisgICAgZ2V0
IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giIH0KK30KKwordHJ5IHsK
KyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9iaiA9IG5l
dyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KG9iaik7CisgICAgICAgIGlmIChyZXN1bHQg
IT09IGopCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke29ian0p
IHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7
CisgICAgdGhyZXcgPSB0cnVlOworICAgIC8vIHJ2YWwgb2YgQXNzaWdubWVudEV4cHJlc3Npb24g
aXMgZXZhbHVhdGVkIGJlZm9yZSBQcml2YXRlRmllbGRGaW5kKCN4LCBscmVmKSBpcyBwZXJmb3Jt
ZWQsCisgICAgLy8gdGh1cyBgaWAgaGFzIGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4KKyAgICBp
ZiAoaSAhPT0gMzEgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRo
cm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbAppbmRleCBjZDMwOTQ0ZDM5MmQyNjJiZTAwNDU2NmMxZjljMWQzMGM3MGE2YTY0Li42YTZh
YWEzMjU5ZWZlMjI4ZTc5ZDg2ZWNiMDg5M2Y4NDJmYWY3ZjgzIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBA
IC0zLDYgKzMsNyBAQAogZmxhZ3M6CiAgIEJpZ0ludDogdXNlQmlnSW50CiAgIFdlYWtSZWY6IHVz
ZVdlYWtSZWZzCisgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VDbGFzc0ZpZWxkcwogICBjbGFz
cy1maWVsZHMtcHVibGljOiB1c2VDbGFzc0ZpZWxkcwogc2tpcDoKICAgZmVhdHVyZXM6CkBAIC0x
MSw3ICsxMiw2IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAgLSBjbGFzcy1m
aWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1z
dGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393027</attachid>
            <date>2020-03-09 07:15:46 -0700</date>
            <delta_ts>2020-03-09 10:55:27 -0700</delta_ts>
            <desc>Patch v12</desc>
            <filename>bug-206431-20200309101546.patch</filename>
            <type>text/plain</type>
            <size>180646</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjMxMzM4YTEwODY0NzQ3YTU3MjcyYmJhNTI1ZGExYmExOTNjZDYyLi5kNWM2OGU3NjIxN2E5YjJi
NGJjNzk0YTAzNWVhMzdkNGQyNzg3ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzMgQEAKKzIwMjAtMDMtMDkgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVy
ZW5jZXMgYXJlCisgICAgICAgIHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Ig
bm90IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAg
ICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRo
ZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0
aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUg
ZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVk
IGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVk
IGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5
IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAg
ICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBs
aWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAg
IDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAg
ICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxE
b05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAs
IDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHBy
b2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAg
ICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xv
YmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNj
b3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxO
b3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNl
aXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZh
dGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJs
eSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlW
YWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRk
ZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgSlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0S2luZC5oLgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6RG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoSlNDOjpCYXNl
RG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXREb3Qp
OgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6QXNz
aWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlM
ZXZlbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAq
IGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKSVQ6OnB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnB1dEJ5VmFs
RmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKiBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6aXNQcml2YXRlTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VB
c3NpZ25Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8Q2hhcmFjdGVyVHlwZT46
OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdp
dGhvdXRDbGVhcmluZ0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUpOgorICAg
ICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgor
ICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUpOgor
ICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6
OnNob3VsZENyZWF0ZUxleGljYWxTY29wZUZvckNsYXNzKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzUHJpdmF0ZUxvY2F0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmJhc2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VE
b3ROb2RlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmlzUHJpdmF0
ZU5hbWUgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3Vy
Y2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjplbnN1cmVQcml2
YXRlTmFtZVVzZWQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1i
ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5h
cnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5l
eHBlY3RlZFRva2VuVGV4dCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNQcml2YXRlTmFtZVNj
b3BlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzUHJpdmF0ZU5hbWVTY29wZSk6
CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0NsYXNzU2NvcGUpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29weVVuZGVjbGFy
ZWRQcml2YXRlTmFtZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzVXNlZEJ1dFVuZGVjbGFy
ZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlUHJpdmF0ZU5h
bWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjdXJyZW50UHJpdmF0ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUpOgorICAgICAgICAo
SlNDOjpQYXJzZXI6Om1hdGNoQW5kVXBkYXRlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnN3YXApOgorICAg
ICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52
aXJvbm1lbnQpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTmFtZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTmFt
ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OlByaXZhdGVOYW1lRW50cnkpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1VzZWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0RlY2xhcmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNVc2VkKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6c2V0SXNEZWNsYXJlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmJp
dHMgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6VmFyaWFibGVFbnZpcm9u
bWVudCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnNpemUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjptYXBTaXplIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXNTaXplIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpjb3B5UHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YTo6UmFy
ZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpnZXRPckFkZFByaXZh
dGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFzUHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hl
ZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hl
ZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6
ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6
OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpj
cmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZGVm
aW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1l
L1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDMtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbWVtYmVyIGNvbXBsZXRlZCBzdWJyYW5nZXMgZHVyaW5nIGlu
Y3JlbWVudGFsIFBERiBsb2FkaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGY3YzY2NjJmN2ZlNTY3MDlmNDUwOTRjMDczZjU1YzUwODFjYTg4N2UuLmFmZGJiMGI3Mzdk
NDc3MDZlNWFhMTUzM2JhYzM5ZTBlZWFlNmZjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTUyOSw2ICs1MjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Q
cm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRl
Y29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAg
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIw
MmM0ZjZlNDQxODVkLi5hNmY4NDU4M2IzOTU5OWQzODZjZmQwYzM5YTNjZWRkMDI4NjkzYjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NSw2ICsxMjQ1LDcgQEAKIAkJODY3
MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
SklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxG
bGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJC
OUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5
QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZF
NUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8q
IEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00MTAwLDYgKzQxMDEsOCBAQAogCQk4NjcwNEI4MTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJy
UGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9
IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njcw
NEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8q
IFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNC
MjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5
MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgzNDMsNiArODM0Niw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1
dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJ
ZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlk
VmFyaWFudC5oICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZs
YWdzLmNwcCAqLywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFn
cy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJ
CQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAog
CQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBA
IC0xMDA4Myw2ICsxMDA4OCw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1
dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3NkM2RTgy
MzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NmYxYzY5NDg1
YzZmY2JlZTQ4N2U1YWM5ODZjYTQ2MzYzNTNhZWJlLi40MzE0YmUzMWMyZGRiYjk1YWNiYWRkODZm
MjQwMDE1MDFhMGQ3OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjQsNiAr
MjY0LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAKK2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCmluZGV4IDA2M2M3M2Q1MmNmOGM4NzFiMDliMjg2MmRiNDQ5ZWIwMGYzZDc2YzAu
LjZiZDgwMGRmMGUyZTM5YTViYjMxNThjMzliMWVmYjJjNTIwNzA2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE2Nyw3ICsxNjcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNzZW1i
bHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3Rh
bnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlh
bGl6ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3Jv
KGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5hbWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFU
RSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIG5hbWUjI1N5bWJvbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGQzNzIz
NmY0MGFhODk5MTI3Yzc0OWViZGI5ODY5NmM3Nzg1ZDhjYjMuLjAyYzAxYmQ3YzJlOGMyNmE2OTVm
OGEzNjZiNjU4YmFjNmM5Y2ViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEy
NmEwZjcyNzUzNmYxYmUzN2M0ZS4uOWE3NDQzYTVkNTc1NTVmYTdjMTA2ZGRiYmJjNmVmMzE0NTgz
M2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZs
YWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5
VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVj
dHVyZUlELApAQCAtNTQzLDYgKzU0NCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2Vl
bklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3ZhbF9k
aXJlY3QsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lz
dGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9wIDpw
dXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApA
QCAtNTY2LDYgKzU3OCw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAg
ICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFn
cywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4u
MTVjMTNiZjdhODlmNjdkMjg1OWNiY2Y2MTYxYzMzOTA3ODM0YTc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMTEsNiAr
MjExLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdp
c3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvclN0
cnVjdHVyZVBuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wRW51bWVyYXRvckdl
bmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNl
LCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wR2V0QnlWYWxEaXJlY3QsIGJhc2UsIHByb3BlcnR5KQog
ICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVz
SGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJ
bnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtNDE5LDYgKzQyMCw3IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRzdCkKICAgICBERUZTKE9w
SW5zdGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZhbCwgZHN0KQorICAgIERF
RlMoT3BHZXRCeVZhbERpcmVjdCwgZHN0KQogICAgIERFRlMoT3BUeXBlb2YsIGRzdCkKICAgICBE
RUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERFRlMoT3BJc0VtcHR5LCBk
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2Njlm
N2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi5kNjM4NWIzYmZhZjE4MTE3ZGVlNjIwYzFjMWE3
MzRlNTcxMzNmNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5
cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQ
dXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRl
eCAxYjZlNzI2MjQwOWM4NTc0MzJkNGIyZmNmYWNmMTdjNzYwZDE3YjY0Li4wMmE2Y2YwNDhkMTI0
YTJlOWVlMGI1MzQwMmJkZmJkODI0ZTBjNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICB2KEFycmF5LCBudWxscHRyKSBcCiAgICAgdihhcHBseUZ1
bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxsRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2
KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktf
VElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNzc2YThjY2E4MTEx
MTg0NzI4ZWZhNjAyNTc1MTZhOWVkMDQ0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
dXRCeVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKK3sKKyAgICBD
b21tYVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBpZiAoZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVO
YW1lKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlTmFtZSIpOworICAgIGlmIChm
bGFncyAmIFB1dEJ5VmFsVGhyb3dJZkV4aXN0cykKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
VGhyb3dJZkV4aXN0cyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4OTVi
Njc4NjA3YzlhMzA5MDkzMzcyODE4YzBlOGZmMzdmYWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
U3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBQdXRCeVZhbEZs
YWdzIDogaW50MzJfdCB7CisgICAgUHV0QnlWYWxOb25lID0gMCwKKworICAgIFB1dEJ5VmFsUHJp
dmF0ZU5hbWUgPSAxLAorCisgICAgUHV0QnlWYWxUaHJvd0lmRXhpc3RzID0gMiwKKworICAgIC8v
IFRoZSBQcml2YXRlRmllbGRBZGQgb3BlcmF0aW9uIG11c3QgdGhyb3cgaWYgYW4gZW50cnkgZm9y
IHRoZSBwcml2YXRlIHJlY29yZCBkb2VzIG5vdCBleGlzdAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZp
ZWxkQWRkID0gUHV0QnlWYWxQcml2YXRlTmFtZSB8IFB1dEJ5VmFsVGhyb3dJZkV4aXN0cywKKyAg
ICBQdXRCeVZhbFByaXZhdGVGaWVsZFB1dCA9IFB1dEJ5VmFsUHJpdmF0ZU5hbWUsCit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFt
OworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3Mp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
S2luZC5oCmluZGV4IDYxMTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1YzhhZjY0ODA4MGM0YzYuLjBk
MzliMDM1ODk2ZTllZjYxOTYzNDIzYTYxZTY4MTNlYjgwN2E1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QgfTsKK2VudW0gUHV0S2lu
ZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RBZGRQcml2YXRlLCBEaXJlY3RQdXRQcml2YXRl
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXgg
NGRjMGU5MTViYzM4MjMxOWE5MmE5NjcxYjYzYjI4YjQ3MGRlODEzZC4uZTNmYWRkY2JhOTY2MjVl
OWRlNzMyYWRhNDgxN2NiMDE1ZTk1NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0
ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1v
ZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gZXhlY3V0YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0
aW9ucygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFy
c2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHZtLCBz
b3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlw
dE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NF
UlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYTAxZDQ3ZDdkYzBiYzFi
NDgwMTY1YmJjZDI2NmQxMWE2YzIzMmI0NS4uNjkwZjk4Njg4NWUzMDRhNmI2ZGFkNzVmMzc2YmI3
MzA4NmNjMjViZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4NTcsNiArMTg1NywxMSBAQCBib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0Vu
dHJ5KHZhck9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3Qo
KSA/IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSA6IFByb3BlcnR5QXR0cmlidXRlOjpOb25l
KSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50
cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRv
IHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3Ro
ZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1
ZS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZh
dGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhh
c0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjY0NCw5ICsyNjQ5LDE1IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7CisgICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1p
dCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAg
T3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5
VmFsTm9uZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNjY4LDYgKzI2NzksMTggQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lz
dGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1
dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxQ
cml2YXRlRmllbGRBZGQpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxE
aXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbFByaXZhdGVG
aWVsZFB1dCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVt
aXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJh
ZTc0YmFmZjU1Yi4uOTY0M2E4NGJjY2I4MDYwNjM1ZjdmNmM3ZDY2YWIxYzZjNDY5OTc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtNzg2LDExICs3ODYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJu
YWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFs
dWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lkIGVtaXRT
dXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCAzYjNjZDRiZTQ4OWJjMDI4Y2IwYmJiNDk1ZWQ0YzBiYzdlNTI2MjAyLi5lNjVh
NWQzOThkYzZiZWY4YTIwM2VjYTE4ZGU4NWViZGJjZjQ1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NDksOSAr
NTQ5LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxK
U1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7Ci0gICAgLy8gRmFzdCBj
YXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KKyAg
ICAvLyBQcml2YXRlTmFtZXMgYXJlIGhvaXN0ZWQgYW5kIHdlIG5lZWQgdG8gZGVjbGFyZSB0aGVt
IGJlZm9yZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBoYW5kbGVkLgogICAgIFByb3BlcnR5TGlz
dE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisgICAgZm9y
ICg7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUg
JiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBl
IDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoZ2Vu
ZXJhdG9yLCBkc3QsICpwLT5tX25vZGUpOworICAgIH0KKworICAgIC8vIEZhc3QgY2FzZTogdGhp
cyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCisgICAgcCA9IHRo
aXM7CiAgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpD
b25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0lu
c3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApA
QCAtNzEzLDYgKzcyMywxOCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAg
IGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1Rp
bWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9s
KTsKKworICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIs
IDApOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN5bWJvbCA9IGdl
bmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVh
dGVQcml2YXRlU3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBhcmd1bWVudHMsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9u
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9T
Y29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHN5bWJvbC5nZXQoKSwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFt
ZSA9IGdlbmVyYXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lOwpAQCAtODQzLDE2ICs4NjUsNjYgQEAg
UmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0
ZXJJRCogcmV0OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAg
UmVnaXN0ZXJJRCogcmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERl
c3QuZ2V0KCksIGJhc2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShm
aW5hbERlc3QuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJl
dDsKIH0KIAorUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0
ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9p
ZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0
ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgp
LCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgfQor
CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBpZiAoIXRoaXNWYWx1
ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAg
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCB0aGlzVmFsdWUuZ2V0
KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1Zh
bHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGRzdCwgYmFz
ZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYg
KGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgp
LCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJs
ZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNj
b3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UsIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1
ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBp
ZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVU
aGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1ZSk7Cit9CisKK1JlZ2lzdGVySUQqIEJh
c2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwg
YmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNjQwLDExICsxNzEyLDkgQEAg
UmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0T3B0aW9u
YWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0g
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lk
ZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9u
LmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpOworICAgIGVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rpb24uZ2V0KCksIGJhc2UuZ2V0KCkpOwog
CiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRP
cHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAgLTE5NjUsNiArMjAzNSwyMiBAQCBSZWdp
c3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNj
ZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1l
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAgIFZhcmlhYmxlIHZh
ciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
RGlyZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2
YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVt
aXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwg
dmFsdWUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmUoZHN0LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJh
c2VJc1N1cGVyKSB7CkBAIC0yMTg4LDYgKzIyNzQsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgp
LCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1l
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZh
dGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RH
ZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7Cisg
ICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdl
dCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUo
KSkgewogICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwpAQCAtMjky
NCwxMSArMzAyNSw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmb3J3YXJkUmVzdWx0ID0gKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRv
ci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0Lmdl
dCgpKTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50
LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOworICAg
IGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0KCksIGZvcndhcmRSZXN1bHQuZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdC5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0
LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKIH0KQEAgLTI5NDAsMjMgKzMwMzcsMTUgQEAgUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3QKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywg
bV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4
cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
ewotICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZSk7CisKICAgICBSZWdpc3RlcklE
KiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1f
cmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1fb3BlcmF0b3IpLCBPcGVyYW5kVHlw
ZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigp
KSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgZWxz
ZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVu
dCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1pdFB1dFBy
b3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFsdWUpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5nZXQoKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDM1Miw2ICs0NDQxLDE3IEBAIHZv
aWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmln
dXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTogewor
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm1faWRlbnQpOworICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFt
ZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlv
bigpICsgbV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJp
dmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRBZGQoZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTogewog
ICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xhc3MgZmll
bGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgzMzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgxYmM5ZDJmMWIxZC4uYTNmMzRm
OGM2MjEyN2M5ZTg2ZDJhMDk1MGMwNTZiZjU5MWQ5ZGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNp
bmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
ICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4OGY4
ZTFjMmEwYjY3MGJmOTlmLi41NGRhMzFhZTAwZTAwMmZmNmRjMjQ0MTFkZmQ1NDk2ZWNiNGFkY2Zk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTQsNiArMjk0LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKIAogICAgIGNhc2Ugb3Bf
eWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25tZW50Ogor
ICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6IC8vIEZJWE1FOiBvcF9nZXRfYnlfdmFsX2Rp
cmVjdCB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRzLgogICAg
IGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2YWxfcHJvbG9n
dWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2QwNGFkNjEw
YjZjZjM2YmFkYzFiM2U4MGUzNWYxYTAxNmQ4YmQ4Mi4uNWY2MGExOTg2N2E0ZWY5ODRiYjc5Y2Yx
ZmQ4YzYyZTdlYTBhMjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzODEwLDcgKzEzODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAgc2Ny
YXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtpbmQpOworICAgICAg
ICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCwgUHV0
QnlWYWxOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDY2OWU1MDE1
NmI3Y2UxNmQ3ZTYxZGNlZTkwOTI2YTBiNTE0Yjk5ZTQuLjIxNzdiNTgyZGVmZDE3OThhMzM1MTg5
ZWI3ZTk0N2Q1MDAwMDNhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTM5ODQsNyArMzk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdp
c3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJ
ZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUt
Pm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlWYWxOb25l
KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NDFmZGE2
ODc2ZTY1MmM5ODQ2MDFhMmIzYjc5ZDM0Li41MzBmOTdhNzU3YmJhMWEyNmVlZWM5OTAzZjljNTdk
YjBlYTU3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQw
LDYgKzE0MCw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQ
dXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0
QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggOTA0MGRmMzgyMDc2NGVkZjhk
NTE2MTFmODYwZmM0ZDQyNjU2YzE0OS4uOTVlNjFiY2IzOWM4NmQ2NjI1MmEzNzk5MTJkN2U4NDI0
NmE0ZmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1
aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExp
c3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0
KSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQ
dXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5YmY5YTFhMTk1YzNlODM4NjRj
MWNhMTc4NDA4YTViMGYuLjJmMDM1MDQwODEwMGQ5YjMxYTAyMjA5ODg3MGIwMTUzMDg1M2NhOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hf
d2l0aF9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAg
ICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AocHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5
X3ZhbF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9y
X2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
NjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OS4uNWY3NmY4MzUyODcyMDUw
OWIxOWZlMjIxYjRkMGNlNmFmZWM5NDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0z
OTcsNiArMzk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgogICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHV0QnlWYWxGbGFncyBwdXRCeVZhbEZsYWdzKE9wKTsK
KwogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1
dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZhbEluZm8q
LCBSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYs
IEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY0MTEwMjE3NjRkOTg5NjYy
MjNmZTE4MjBhMmYzODM5YWMzZTdiOWYuLjBkMTZiYTk2MGQ4ZmJmZmNhMDYxNjFiNjg5ZTMxMjU0
YTI2OGE0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMiBAQCB2b2lkIEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2RlIGVj
bWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQg
cHV0S2luZCwgUHV0QnlWYWxGbGFncyBmbGFncykKICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCiAg
ICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwg
dXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQog
ICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQogewogICAgIG1f
c3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsNiArMTUz
LDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChVTkxJS0VMWShtX2ZsYWdzICYgUHV0
QnlWYWxQcml2YXRlTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3Qp
OworICAgICAgICBBU1NFUlQobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKTsKKyAgICAgICAgaWYg
KG1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpCisgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgfQorCiAgICAgaWYg
KG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERp
cmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmgKaW5kZXggMjZlNzAwZmJiN2FkMTgzYmUxYWNiYTczZjM3ZjZmYjQyZmVmY2Qw
ZS4uZjdhNTQ0YzkyMmRmODVjNjk4ZTA5YThhNzUxYzQyMDQ1NTAxYzFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApA
QCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAg
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHV0
QnlWYWxGbGFncyk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJik7CiAgICAgCkBAIC0xNDAsNiArMTQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBF
Q01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFB1dEJ5VmFs
RmxhZ3MgbV9mbGFnczsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggMjNmZjVjODFjMWMwMzIyMmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNiNy4uNzM5
MTRmNDA5ZmI5MTYzMWY4NjM3MWFiNGRlYTZkZmMxMzc1YmE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY2Myw2ICs2NjMsMTggQEAgQUxXQVlTX0lOTElORSBC
aW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNv
ZGUpCiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+
CitBTFdBWVNfSU5MSU5FIFB1dEJ5VmFsRmxhZ3MgSklUOjpwdXRCeVZhbEZsYWdzKE9wKQorewor
ICAgIHJldHVybiBQdXRCeVZhbE5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUg
UHV0QnlWYWxGbGFncyBKSVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFnczsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjJiOWExZDFlOWMzMmQ5Y2Q5OTY5MWIxOTcz
MjA5NWNlOTIzNDY1Yi4uNTI5MjFlMzk1YjEyMjVlYTZhNTFjOGQ0MmRmZDU4NzRiMGMxYTMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC02Nzgs
NiArNjc4LDExMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5v
blN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0
QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVu
dCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCit9IC8vIGV4dGVybiAiQyIKKwordXNp
bmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk0mLCBDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9wZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJik+
OworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmllbGQoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBi
YXNlVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEpTVmFsdWUgdmFsdWUsIFB1dEtpbmQg
cHV0S2luZCwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJp
dmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBBU1NFUlQo
cHV0S2luZCA9PSBEaXJlY3RBZGRQcml2YXRlIHx8IHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0
ZSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Cisg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+
aXNQcm94eSgpID8gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGlkZW50LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0
eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKworICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUg
JiYgZm91bmQpCisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgZWxzZSBp
ZiAocHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRlICYmICFmb3VuZCkKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJy
b3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDA7CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNs
b3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBD
b21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNl
T2JqZWN0LCBpZGVudCwgdmFsdWUsIHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAg
IGNhbGxiYWNrKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQor
CitleHRlcm4gIkMiIHsKKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQ
cml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBwdXRQcml2
YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIHVpZCwgdmFs
dWUsIERpcmVjdEFkZFByaXZhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0
ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBiYXNlT2JqZWN0LCB1aWQsIHZhbHVlLCBEaXJlY3RBZGRQcml2YXRlLCBbPV0oVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3Bl
cnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBi
YXNlT2JqZWN0KSk7CisKKyAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIHN0cnVj
dHVyZSkpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJl
Y3RBZGRQcml2YXRlKTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZh
dGVTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVG
aWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgdWlkLCB2YWx1ZSwg
RGlyZWN0UHV0UHJpdmF0ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSkpOworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIGJhc2VPYmplY3QsIHVpZCwgdmFsdWUsIERpcmVjdFB1dFByaXZhdGUsIFsmXShWTSYgdm0s
IENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHV0UHJvcGVydHlT
bG90JiBwdXRTbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwg
YmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VP
YmplY3QpKTsKKworICAgICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJl
KSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFB1
dFByaXZhdGUpOworICAgIH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Cit9CisKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNTdHJpbmdPclN5bWJvbChKU1Zh
bHVlIHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZS5pc1N0cmluZygpIHx8IHZhbHVlLmlzU3lt
Ym9sKCk7CkBAIC03ODEsNiArODg4LDE2IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
aXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKSB7CisgICAg
ICAgIC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBub24t
ZXhpc3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2UgYmVo
YXZpb3VyLgorICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpOwor
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
c2xvdCk7CisgICAgICAgIGlmIChmb3VuZCA9PSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlW
YWxUaHJvd0lmRXhpc3RzKSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgZm91bmQgPyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2Jh
bE9iamVjdCkgOiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBDb21tb25TbG93UGF0
aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IDYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAu
LmQ2OGQ1M2QxYmU2ZTQ0MWFkZDQ1MzljMzc0ZGM0YjMyZTFjZjg1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJp
Y3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQ
cml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyYmEwZmE2ODQ4YmNlODI5YWNkNjQxOTA1ZjA1ZjRi
ZDU0ZGNiZTM1Li5kNTI4YTM4MGY5MzIwZDFkYzlhZjE0NzlkY2FkNTY1MDllM2VkMWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
Mjg2LDcgKzI4Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtpbmQp
OworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kLCBwdXRCeVZhbEZsYWdzKGJ5dGVjb2Rl
KSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGVtaXRXcml0ZUJhcnJp
ZXIoYmFzZSwgdmFsdWUsIFNob3VsZEZpbHRlckJhc2UpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQo
anVtcCgpKTsKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCi0gICAgICAgIGRp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5v
dERpcmVjdCwgUHV0QnlWYWxOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4
IGI2NjlkZDhiN2FkMjZkM2Y3N2Q5Njg2ZGU2MDgzNDM0ZjM2ZGJjNTMuLjQ4NjFlYzE2YTZhY2Y3
ZDA1MDE1MGVkYzIwM2QyZjFjODExMDQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzcyLDcgKzM3Miw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0
S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCwgcHV0QnlWYWxGbGFncyhieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYwNiw3ICs2MDYsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksCi0gICAgICAgIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgcmVnVDEsIG1fY29kZUJsb2NrLT5lY21hTW9k
ZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFB1dEJ5VmFsTm9uZSk7CiAgICAgCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMTY0
YmMxNTQ4OWM4MTJlN2ZhODZhMTIzZDIyNTBmM2RiOTg3YTkzLi41Y2Q3YWY1MmQ4NzYwNjQ3YTJk
MGRlYTEzMGI2MDlmYzE0ODJiY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKQEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGljIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBw
cm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnQKICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0QWRkUHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGly
ZWN0UHV0UHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZVN0cmljdDsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7CiAgICAg
fQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTUzMiw2ICs1MzYsMTAgQEAgc3RhdGlj
IFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKGNvbnN0IFB1dFByb3AKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RB
ZGRQcml2YXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRl
U3RyaWN0T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFB1dFByaXZhdGUp
CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3RPcHRp
bWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKICAg
ICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtNjI0LDYgKzYzMiw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAg
aWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChw
dXRLaW5kICE9IERpcmVjdFB1dFByaXZhdGUgJiYgcHV0S2luZCAhPSBEaXJlY3RBZGRQcml2YXRl
KTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZv
ckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKQEAgLTY0MSw2ICs2NTAsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0s
IGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKGlkZW50KSwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3Qu
aXNDYWNoZWFibGVTZXR0ZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA3MTI1YmQ0ZjUxYWY4MTViOWQ1
MDY2MWViN2EzYzI0MWE1YWQ2MDNiLi43NTY4ZDIzNmQzYWZiNWZjMTRhNjM4NzQ1MTg3NmY4OTky
Zjk0NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dD
aGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hh
aW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDJiZmZjMzgxNjNmZTMxYmU5NDFiZWQ2YTVmYjU2ZDI5OGJlYjYyMjcuLmMxMzRlMzdl
NDlkNDViMWQ1NzVlYzQ4ZDEzYWZmOWMzMWU1Y2U2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA1OSwxNCArMTA1OSwxNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgUkVM
RUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lQWNjZXNzID0gYnl0
ZWNvZGUubV9mbGFncyAmIFB1dEJ5VmFsUHJpdmF0ZU5hbWU7CiAgICAgaWYgKExJS0VMWShzdWJz
Y3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1
ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQz
Ml90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBB
U1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOworICAgICAgICBBU1NFUlQoIWlz
UHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChn
bG9iYWxPYmplY3QsIHN1YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0Lmlz
RG91YmxlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lQWNjZXNzKTsKICAgICAg
ICAgZG91YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CiAgICAg
ICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1
YnNjcmlwdEFzRG91YmxlKTsKICAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNj
cmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7CkBAIC0xMDgwLDkg
KzEwODMsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGly
ZWN0KQogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAg
TExJTlRfRU5EKCk7CiAKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlz
UHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwog
ICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQcml2YXRlTmFtZUFjY2VzcykgeworICAgICAgICAg
ICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAvLyBUaHJv
dyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5nIHRvIHN0b3JlIHRvIGEgbm9uLWV4aXN0ZW50IHBy
aXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxhciB0byBhIFREWi1saWtlIGJlaGF2aW91ci4KKyAg
ICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgc2xvdCk7CisgICAgICAgICAgICBpZiAoZm91bmQgPT0gYm9vbChieXRlY29kZS5tX2Zs
YWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3RzKSkKKyAgICAgICAgICAgICAgICBMTElOVF9USFJP
Vyhmb3VuZCA/IGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSA6
IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICB9
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxP
YmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA2MjY1MmE2NjIzNWViYzUyNzkwYWYxNzBmMGRmYjhhNGRiNDAwMTQyLi42
Yjc5ZTg4ODM3NWE1MGU1MzUzZmVmODc4YTI3MjQwZWRhMjllMWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTUwOSw2NCArMTUwOSw2OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9p
ZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQp
CiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5h
bWUsIG9zckV4aXRQb2ludCkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgJW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQy
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRh
ZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgYXJy
YXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0
NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93
KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MworICAgICAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAu
b3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBl
LCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3Vz
OgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
IGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5v
cEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAu
b3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0
QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRuZXF1
biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQg
YmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAgZmQyaWkgZnQwLCB0MSwgdDIKKyAgICAg
ICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKKworICAg
IC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0
MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFn
ZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5v
cEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFn
T2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisKKyAgICAub3BHZXRCeVZhbERvbmU6
CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFsTm90RW1wdHk6CisgICAgICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1
LCB0MiwgdDEpCisgICAgICAgIGRpc3BhdGNoKCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRC
eVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotICAgIGdldChtX3By
b3BlcnR5LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Mywg
SW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0
dGVyZmx5W3QwXSwgdDMKLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEg
dDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENv
bnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXND
b250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3QzLCB0MSwgOF0sIHQxCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5v
dENvbnRpZ3VvdXM6Ci0gICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERv
dWJsZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2Fk
ZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93
Ci0gICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgotICAgIGZk
MmlpIGZ0MCwgdDEsIHQyCi0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBqbXAgLm9wR2V0QnlWYWxO
b3RFbXB0eQotCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFnZVNo
YXBlLCB0MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdwotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BH
ZXRCeVZhbFNsb3cKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0
W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxv
YWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLQotLm9wR2V0QnlWYWxEb25lOgotICAgIGdldChtX2Rz
dCwgdDApCi0gICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93Ci0ub3BH
ZXRCeVZhbE5vdEVtcHR5OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0g
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goKQorICAgIC5vcEdldEJ5VmFs
U2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0
Y2goKQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCgpCisgICAgLm9zclJldHVyblBvaW50OgorICAg
ICAgICBvc3JFeGl0UG9pbnQoc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBlbmQpCitlbmQK
IAotLm9zclJldHVyblBvaW50OgorZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwsIG1hY3JvKHNpemUsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUp
CiAgICAgbWV0YWRhdGEodDIsIHQzKQogICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0Miwg
cjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlWYWxPcChnZXRfYnlf
dmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVj
dCwgbWFjcm8oYSwgYiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAzNDE2ODBhYmVlODE5YTI1MmM3N2VlNWY2ZjA5
NmVkNTdlMTFjOTQ0Li5jZTRhZTNmZjI2MjQwYWQ4NGQ3MjVlNjQyZjI1ZGQxMjRjN2EyMzA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTQ5MiwxODQgKzE0OTIsMTg3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IHNsb3dQYXRoTmFtZSkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwg
JW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQorICAgICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBzdG9yZXEgcmVzdWx0LCBb
Y2ZyLCBzY3JhdGNoLCA4XQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3Ql
LCB0NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKLSAgICAgICAg
c3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCByZXN1bHQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQKKyAgICAg
ICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAgICAg
b3JxIG51bWJlclRhZywgcmVzdWx0CisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQs
IHNjcmF0Y2gpCisgICAgICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVz
dWx0LCBzY3JhdGNoKQotICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKLSAgICAgICAgZmlu
aXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQotICAgIGVuZAorICAgICAgICBtYWNybyBmaW5p
c2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgICAg
IGZkMnEgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICAgICAgc3VicSBudW1iZXJUYWcsIHNjcmF0
Y2gxCisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAg
ICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
MSwgc2NyYXRjaDIpCi0gICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdWJx
IG51bWJlclRhZywgc2NyYXRjaDEKLSAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNj
cmF0Y2gyKQotICAgIGVuZAorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0
YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAotICAgIGdldCht
X2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwg
Lm9wR2V0QnlWYWxTbG93KQotCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BH
ZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0
KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0
MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKLQotICAgIGxvYWRDYWdl
ZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKLSAgICBt
b3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCi0KLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0
MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAg
YmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5v
cEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRC
eVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0Mgot
ICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQot
Lm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9w
R2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxT
bG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAg
YmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmQycSBmdDAsIHQyCi0gICAg
c3VicSBudW1iZXJUYWcsIHQyCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotICAgIAotLm9wR2V0
QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEg
dDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRC
eVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5
VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3Zl
Y3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotCi0ub3BH
ZXRCeVZhbERvbmU6Ci0gICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgdDUsIHQyKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgbW92ZSB0MCwg
dDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUsIHQyLCB0NSwgdDEpCiAKLS5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0g
ICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlz
IGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KLSAgICBsb2FkYiBKU0NlbGw6
Om1fdHlwZVt0MF0sIHQyCi0gICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgotICAgIGJp
YWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRC
eVZhbFNsb3cKLSAgICAKLSAgICAjIFN3ZWV0LCBub3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSB0
eXBlZCBhcnJheS4gRG8gc29tZSBiYXNpYyB0aGluZ3Mgbm93LgorICAgICAgICBnZXQobV9wcm9w
ZXJ0eSwgdDMpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0Mywg
dDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBpZiBBUk02
NEUKLSAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKLSAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3
Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIGxlbmd0aAot
ICAgICAgICBiaWFlcSB0MSwgbGVuZ3RoLCAub3BHZXRCeVZhbFNsb3cKLSAgICBlbHNlCi0gICAg
ICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0
aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4K
LSAgICAgICAgYmlhZXEgdDEsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIC5vcEdl
dEJ5VmFsU2xvdwotICAgIGVuZAorICAgICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0Ojpt
X2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCisgICAgICAgIG1vdmUgVGFnTnVtYmVyLCBu
dW1iZXJUYWcKIAotICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQz
Ci0gICAgY2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgdDAsIHNjcmF0Y2gpCi0KLSAgICAjIE5v
dyBiaXNlY3QgdGhyb3VnaCB0aGUgdmFyaW91cyB0eXBlczoKLSAgICAjICAgIEludDhBcnJheVR5
cGUsCi0gICAgIyAgICBVaW50OEFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQ4Q2xhbXBlZEFycmF5
VHlwZSwKLSAgICAjICAgIEludDE2QXJyYXlUeXBlLAotICAgICMgICAgVWludDE2QXJyYXlUeXBl
LAotICAgICMgICAgSW50MzJBcnJheVR5cGUsCi0gICAgIyAgICBVaW50MzJBcnJheVR5cGUsCi0g
ICAgIyAgICBGbG9hdDMyQXJyYXlUeXBlLAotICAgICMgICAgRmxvYXQ2NEFycmF5VHlwZSwKLQot
ICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0
QnlWYWxBYm92ZVVpbnQxNkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5
cGUgLi4gVWludDE2QXJyYXlUeXBlLgotICAgIGJpYSB0MiwgVWludDhDbGFtcGVkQXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJh
eQotCi0gICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRB
cnJheVR5cGUKLSAgICBiaWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBl
LCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5Ci0KLSAgICAjIFdlIGhh
dmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRB
cnJheToKLSAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQotCi0gICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKLQotLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDhD
bGFtcGVkQXJyYXlUeXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdl
dEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJheToKLSAg
ICAjIFdlIGhhdmUgZWl0aGVyIEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5
cGUuCi0gICAgYmlhIHQyLCBJbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5v
cEdldEJ5VmFsVWludDE2QXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4KLSAg
ICBsb2FkaHNpIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkK
LQotLm9wR2V0QnlWYWxVaW50MTZBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBl
LgotICAgIGxvYWRoIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKLQotLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2Yg
SW50MzJBcnJheVR5cGUgLi4gRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBiaWEgdDIsIFVpbnQzMkFy
cmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JG
bG9hdDY0QXJyYXkKLQotICAgICMgV2UgaGF2ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWlu
dDMyQXJyYXlUeXBlCi0gICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJh
eVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5
VHlwZS4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0
MCwgdDEpCi0KLS5vcEdldEJ5VmFsVWludDMyQXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQzMkFy
cmF5VHlwZS4KLSAgICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCBiZWNhdXNlIG9mIGxhcmdl
IHVuc2lnbmVkIHZhbHVlcy4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBiaWx0IHQw
LCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBpbXBs
ZW1lbnQgaW4gTExJbnQuCi0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRC
eVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2YgRmxv
YXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBTYWRseSwgd2UgY2Fubm90IGhhbmRs
ZSBGbG9hdDMyQXJyYXkKLSAgICAjIGlubGluZSB5ZXQuIFRoYXQgd291bGQgcmVxdWlyZSBzb21l
IG9mZmxpbmVhc20gY2hhbmdlcy4KLSAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmly
c3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxTbG93Ci0KLSAgICAjIFdlIGhhdmUgRmxvYXQ2
NEFycmF5VHlwZS4KLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAs
IGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwg
dDEpCi0KLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgYW5kaSBJbmRleGluZ1NoYXBl
TWFzaywgdDIKKyAgICAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRp
Z3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RD
b250aWd1b3VzCisKKyAgICAub3BHZXRCeVZhbElzQ29udGlndW91czoKKyAgICAgICAgYmlhZXEg
dDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQor
ICAgICAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlW
YWxTbG93CisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFsTm90
Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5v
dERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Cisg
ICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAg
ICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGZkMnEgZnQw
LCB0MgorICAgICAgICBzdWJxIG51bWJlclRhZywgdDIKKyAgICAgICAgam1wIC5vcEdldEJ5VmFs
RG9uZQorICAgICAgICAKKyAgICAub3BHZXRCeVZhbE5vdERvdWJsZToKKyAgICAgICAgc3ViaSBB
cnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZQor
ICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGdl
dChtX2RzdCwgdDApCisgICAgICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMsIHQx
LCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CisKKyAgICAub3BHZXRC
eVZhbERvbmU6CisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCisgICAgICAgIHZhbHVl
UHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgdDUsIHQyKQorICAgICAgICBkaXNwYXRjaCgpCiAKLS5v
c3JSZXR1cm5Qb2ludDoKLSAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0
X2J5X3ZhbCwgc2l6ZSkKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKKyAgICAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBh
IHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4K
KyAgICAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbdDBdLCB0MgorICAgICAgICBzdWJpIEZpcnN0
VHlwZWRBcnJheVR5cGUsIHQyCisgICAgICAgIGJpYWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlU
eXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgCisgICAgICAg
ICMgU3dlZXQsIG5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBzb21l
IGJhc2ljIHRoaW5ncyBub3cuCiAKLWVuZCkKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAg
ICBjb25zdCBsZW5ndGggPSB0NgorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3CisgICAg
ICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCBsZW5ndGgKKyAg
ICAgICAgICAgIGJpYWVxIHQxLCBsZW5ndGgsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBlbHNl
CisgICAgICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRl
ZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBw
bGF0Zm9ybXMuCisgICAgICAgICAgICBiaWFlcSB0MSwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVu
Z3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGVuZAorCisgICAgICAgIGxvYWRwIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzCisgICAgICAgIGNhZ2VkUHJpbWl0aXZl
KHQzLCBsZW5ndGgsIHQwLCBzY3JhdGNoKQorCisgICAgICAgICMgTm93IGJpc2VjdCB0aHJvdWdo
IHRoZSB2YXJpb3VzIHR5cGVzOgorICAgICAgICAjICAgIEludDhBcnJheVR5cGUsCisgICAgICAg
ICMgICAgVWludDhBcnJheVR5cGUsCisgICAgICAgICMgICAgVWludDhDbGFtcGVkQXJyYXlUeXBl
LAorICAgICAgICAjICAgIEludDE2QXJyYXlUeXBlLAorICAgICAgICAjICAgIFVpbnQxNkFycmF5
VHlwZSwKKyAgICAgICAgIyAgICBJbnQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50MzJB
cnJheVR5cGUsCisgICAgICAgICMgICAgRmxvYXQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBG
bG9hdDY0QXJyYXlUeXBlLAorCisgICAgICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmly
c3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5CisKKyAgICAgICAg
IyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uIFVpbnQxNkFycmF5VHlwZS4KKyAgICAg
ICAgYmlhIHQyLCBVaW50OENsYW1wZWRBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAu
b3BHZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIG9u
ZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRBcnJheVR5cGUKKyAgICAgICAgYmlh
IHQyLCBJbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50
OEFycmF5T3JVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBJbnQ4QXJyYXlU
eXBlLgorICAgICAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFy
cmF5OgorICAgICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlw
ZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBVaW50
OEFycmF5VHlwZS4KKyAgICAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCisgICAgICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXk6Cisg
ICAgICAgICMgV2UgaGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGxvYWRiIFt0
MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BH
ZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgZWl0aGVy
IEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGJpYSB0
MiwgSW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQx
NkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDE2QXJyYXlUeXBlLgorICAgICAgICBsb2Fk
aHNpIFt0MywgdDEsIDJdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisK
KyAgICAub3BHZXRCeVZhbFVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgVWludDE2QXJy
YXlUeXBlLgorICAgICAgICBsb2FkaCBbdDMsIHQxLCAyXSwgdDAKKyAgICAgICAgZmluaXNoSW50
R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgorICAg
ICAgICAjIFdlIGhhdmUgb25lIG9mIEludDMyQXJyYXlUeXBlIC4uIEZsb2F0NjRBcnJheVR5cGUu
CisgICAgICAgIGJpYSB0MiwgVWludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlPckZsb2F0NjRBcnJheQorCisgICAgICAgICMgV2UgaGF2
ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWludDMyQXJyYXlUeXBlCisgICAgICAgIGJpYSB0
MiwgSW50MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQz
MkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDMyQXJyYXlUeXBlLgorICAgICAgICBsb2Fk
aSBbdDMsIHQxLCA0XSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisg
ICAgLm9wR2V0QnlWYWxVaW50MzJBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQzMkFycmF5
VHlwZS4KKyAgICAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJn
ZSB1bnNpZ25lZCB2YWx1ZXMuCisgICAgICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAorICAgICAg
ICBiaWx0IHQwLCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2Fy
ZCB0byBpbXBsZW1lbnQgaW4gTExJbnQuCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKKworICAgIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXk6CisgICAgICAg
ICMgV2UgaGF2ZSBvbmUgb2YgRmxvYXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBT
YWRseSwgd2UgY2Fubm90IGhhbmRsZSBGbG9hdDMyQXJyYXkKKyAgICAgICAgIyBpbmxpbmUgeWV0
LiBUaGF0IHdvdWxkIHJlcXVpcmUgc29tZSBvZmZsaW5lYXNtIGNoYW5nZXMuCisgICAgICAgIGJp
ZXEgdDIsIEZsb2F0MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZh
bFNsb3cKKworICAgICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KKyAgICAgICAgbG9h
ZGQgW3QzLCB0MSwgOF0sIGZ0MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZh
bFNsb3cKKyAgICAgICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwgdDEpCisKKyAgICAu
b3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAg
ICAgIGRpc3BhdGNoKCkKKworICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgZ2V0dGVyU2V0
dGVyT1NSRXhpdFJldHVyblBvaW50KG9wXyVvcGNvZGVOYW1lJSwgc2l6ZSkKKyAgICAgICAgbWV0
YWRhdGEodDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1LCBy
MCkKKyAgICAgICAgcmV0dXJuKHIwKQorICAgIGVuZCkKK2VuZAorCitnZXRCeVZhbE9wKGdldF9i
eV92YWwsIE9wR2V0QnlWYWwsIF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIAorZ2V0QnlW
YWxPcChnZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRf
YnlfdmFsX2RpcmVjdCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNGM2
MTczMGVkZWM4YWRlYmU5NWQ2OWZhYTcwNWVjMWMyMGJmNWU5OC4uODM1Y2QwMzA4MjkxYTJjODc1
ZjI5ZGVkNmIxZGJmNjljYjY3MTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciogcHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBE
b3RUeXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAg
aWYgKGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAgICAgICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0eSgp
OwogICAgICAgICAKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAg
ICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNz
b3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHksIHR5cGUpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBu
b2RlOwogICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bm9kZS0+aXNBc3NpZ25tZW50TG9jYXRpb24oKTsKICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0
ZUxvY2F0aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
bm9kZS0+aXNQcml2YXRlTG9jYXRpb24oKTsKKyAgICB9CisKICAgICBib29sIGlzT2JqZWN0TGl0
ZXJhbChjb25zdCBFeHByZXNzaW9uJiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGUt
PmlzT2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQzOCwxNSArMTQ0MywxNSBAQCBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZSA9IG51bGxw
dHI7CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpIHx8
IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Y2FsbFByaXZhdGVOYW1lKCkpKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hp
bGREZXB0aCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRv
dC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5
Q2hpbGREZXB0aCk7CiAgICAgZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5
UHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRoZSBi
eXRlY29kZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAg
ICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQotICAg
ICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwog
ICAgIH0KICAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRp
dm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpAQCAt
MTU3MSw5ICsxNTc2LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAgICBBU1NFUlQobG9j
LT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRp
Y19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0g
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3Qo
KSwgc3RhcnQsIGVuZCk7CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0
LCBlbmQpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBkb3QtPnR5cGUoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0
YXJ0LCBlbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGIwODM1ZjMwNDUxN2Q3OWU5MjFjZWIwNjYy
Zjc5Mjg3ZDdiY2NmMWQuLjUzMjc1M2E5MmRmMmIyNjk5NDc0NDBkN2RlMTkxYmU4NTc5YjU1Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzksMTAgKzkzOSwx
MSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQg
PT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwog
ICAgICAgICB9CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVu
dCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworCisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAgICBib29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1
cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKICAgICBib29sIGlzV2Vs
bEtub3duU3ltYm9sID0gZmFsc2U7Ci0gICAgaWYgKGlzUHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAo
aXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnQCcpIHsKQEAg
LTk1Myw3ICs5NTQsMTAgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4g
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAKICAgICBjb25z
dCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7Ci0gICAg
CisKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxl
IChpc0lkZW50UGFydChtX2N1cnJlbnQpKQogICAgICAgICBzaGlmdCgpOwogICAgIApAQCAtOTY2
LDcgKzk3MCw4IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgCiAgICAgaWYgKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAg
IGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0
YXJ0OwotICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uICYmIGlzUHJpdmF0ZU5h
bWUpIHsKKyAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlk
ZW50aWZpZXJMZW5ndGgpOworICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uICYm
IGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgICAgIGlmIChpc1dlbGxLbm93blN5bWJvbCkKICAg
ICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllcihtX3ZtLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5bWJvbChpZGVu
dGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTk4
OCwyMCArOTkzLDIxIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1h
aW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFn
czo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgYXV0byBp
ZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250
YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUp
IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgICAg
ICBBU1NFUlQoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAgICAg
ICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRva2Vu
ID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAgICAg
ICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUg
PyB0b2tlbiA6IElERU5UOworICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9J
Rl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfQog
Ci0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBsYXRl
IDw+CkBAIC0xMDE2LDEwICsxMDIyLDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAg
ICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1v
ZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBp
c1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b247CisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOworICAgIGJv
b2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uOwogICAgIGJvb2wgaXNXZWxsS25vd25TeW1ib2wgPSBmYWxzZTsKLSAgICBpZiAoaXNQ
cml2YXRlTmFtZSkgeworICAgIGlmIChpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVCht
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICdAJykgewpAQCAtMTAzMywxNCArMTA0MCwxNyBAQCB0ZW1wbGF0ZSA8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFVDaGFyPjo6cAogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFy
dE9mZnNldCgpOwogCiAgICAgVUNoYXIgb3JBbGxDaGFycyA9IDA7Ci0gICAgCisKKyAgICBpZiAo
aXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxlIChpc0lkZW50UGFy
dChtX2N1cnJlbnQpKSB7CiAgICAgICAgIG9yQWxsQ2hhcnMgfD0gbV9jdXJyZW50OwogICAgICAg
ICBzaGlmdCgpOwogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdc
XCcpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CisgICAgICAgIEFTU0VSVCgh
aXNCdWlsdGluTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmll
clN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRp
ZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFn
cywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtMTA1NCw3ICsxMDY0LDcgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxVQ2hhcj46OnAKICAgICAKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3Bh
cnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBj
dXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7Ci0gICAgICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24gJiYgaXNQcml2YXRlTmFtZSkgeworICAgICAgICBpZiAobV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uICYmIGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgICAgIGlmIChp
c1dlbGxLbm93blN5bWJvbCkKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtl
SWRlbnRpZmllcihtX3ZtLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tV
cFdlbGxLbm93blN5bWJvbChpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpKTsKICAg
ICAgICAgICAgIGVsc2UKQEAgLTEwNzksNyArMTA4OSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+
OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogICAg
IAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhl
ckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQ
cml2YXRlTmFtZSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29y
ZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAg
ICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50
cnkoKmlkZW50KTsKQEAgLTEwOTksOCArMTEwOSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5U
eQogewogICAgIHRva2VuRGF0YS0+ZXNjYXBlZCA9IHRydWU7CiAgICAgYXV0byBpZGVudGlmaWVy
U3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gKmlk
ZW50aWZpZXJTdGFydCA9PSAnIyc7CisgICAgYXV0byBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1l
ID8gUFJJVkFURU5BTUUgOiBJREVOVDsKICAgICBib29sIGJ1ZmZlclJlcXVpcmVkID0gZmFsc2U7
CiAKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxl
ICh0cnVlKSB7CiAgICAgICAgIGlmIChMSUtFTFkoaXNJZGVudFBhcnQobV9jdXJyZW50KSkpIHsK
ICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC0xMTIwLDcgKzExMzUsOCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEpTVG9rZW5UeQogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHBhcnNlVW5pY29kZUVzY2FwZSgp
OwogICAgICAgICBpZiAoVU5MSUtFTFkoIWNoYXJhY3Rlci5pc1ZhbGlkKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGNoYXJhY3Rlci5pc0luY29tcGxldGUoKSA/IFVOVEVSTUlOQVRFRF9JREVOVElG
SUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LIDogSU5WQUxJRF9JREVOVElGSUVSX1VOSUNPREVf
RVNDQVBFX0VSUk9SVE9LOwotICAgICAgICBpZiAoVU5MSUtFTFkobV9idWZmZXIxNi5zaXplKCkg
PyAhaXNJZGVudFBhcnQoY2hhcmFjdGVyLnZhbHVlKCkpIDogIWlzSWRlbnRTdGFydChjaGFyYWN0
ZXIudmFsdWUoKSkpKQorICAgICAgICBib29sIGlzSWRlbnRpZmllclN0YXJ0ID0gaXNQcml2YXRl
TmFtZSA/IG1fYnVmZmVyMTYuc2l6ZSgpID09IDEgOiAhbV9idWZmZXIxNi5zaXplKCk7CisgICAg
ICAgIGlmIChVTkxJS0VMWShpc0lkZW50aWZpZXJTdGFydCA/ICFpc0lkZW50U3RhcnQoY2hhcmFj
dGVyLnZhbHVlKCkpIDogIWlzSWRlbnRQYXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSkpCiAgICAgICAg
ICAgICByZXR1cm4gSU5WQUxJRF9JREVOVElGSUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LOwog
ICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJlY29yZFVu
aWNvZGVDb2RlUG9pbnQoY2hhcmFjdGVyLnZhbHVlKCkpOwpAQCAtMTE0OSwxMyArMTE2NSwxMyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5UeQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFp
blRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICBy
ZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBKU1Rv
a2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1
ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmlj
dE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyUmVxdWlyZWQgPyBVTkVYUEVDVEVEX0VT
Q0FQRV9FUlJPUlRPSyA6IHRva2VuOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICBy
ZXR1cm4gaWRlbnRUeXBlOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNoYXJhY3Rl
clJlcXVpcmVzUGFyc2VTdHJpbmdTbG93Q2FzZShMQ2hhciBjaGFyYWN0ZXIpCkBAIC0yNDMzLDE0
ICsyNDQ5LDIxIEBAIHN0YXJ0OgogICAgICAgICBtX2hhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9r
ZW4gPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBz
dGFydDsKLSAgICBjYXNlIENoYXJhY3Rlckhhc2g6CisgICAgY2FzZSBDaGFyYWN0ZXJIYXNoOiB7
CiAgICAgICAgIC8vIEhhc2hiYW5nIGlzIG9ubHkgcGVybWl0dGVkIGF0IHRoZSBzdGFydCBvZiB0
aGUgc291cmNlIHRleHQuCi0gICAgICAgIGlmIChwZWVrKDEpID09ICchJyAmJiAhY3VycmVudE9m
ZnNldCgpKSB7CisgICAgICAgIGF1dG8gbmV4dCA9IHBlZWsoMSk7CisgICAgICAgIGlmIChuZXh0
ID09ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAg
ICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsK
ICAgICAgICAgfQorICAgICAgICAvLyBPdGhlcndpc2UsIGl0IGNvdWxkIGJlIGEgdmFsaWQgUHJp
dmF0ZU5hbWUuCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSAm
JiAoaXNJZGVudFN0YXJ0KG5leHQpIHx8IG5leHQgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgIGxl
eGVyRmxhZ3MucmVtb3ZlKExleGVyRmxhZ3M6OkRvbnRCdWlsZEtleXdvcmRzKTsKKyAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudDsKKyAgICAgICAgfQogICAgICAgICBnb3RvIGludmFsaWRDaGFy
YWN0ZXI7CisgICAgfQogICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoK
ICAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmgKaW5kZXggZmQ5N2EwY2E5MzVlN2U1Nzc4YTA5Mzg1MDIyZjk4Njc4MDE0YTMyNC4u
MDZlNjAyYTdiZGE3MmJiMjgyMTk4ZjI5N2Q4M2E0MWFhOGU1MTI0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTMyNywxMCArMzI3
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNj
ZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIGlu
bGluZSBCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RU
eXBlIHR5cGUpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICAgICAgLCBtX3R5cGUo
dHlwZSkKKyAgICB7CisgICAgfQorCisgICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNj
ZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlKQorICAgICAgICA6
IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICB7CiAgICAgfQog
ICAgIApAQCAtNDE4LDExICs0MjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9k
ZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFz
ZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3Mp
CiAgICAgewogICAgIH0KQEAgLTQzNywxNCArNDQxLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisg
ICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJn
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAg
ICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBE
b3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKKyAg
ICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwg
YXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgICAgICAsIG1fZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKICAg
ICB7CiAgICAgfQpAQCAtNzUwLDIxICs3NTQsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWdu
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwg
aWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX3JpZ2h0
SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFJlYWRNb2RpZnlE
b3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUg
dHlwZSwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAg
ICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQot
ICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAg
ICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwg
bV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDlkMWNmYTRmMTc2MTMwMmEzM2JiYWUzMWVmNjBm
ZGZjYWYyMDdkZjUuLjExYmY0YTY4NGExYmQ5YTA5M2ViOGViMTZlMWUxMzcyNjYyMGQzOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAg
Ym9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wTmFtZSkKIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRl
TGV4aWNhbFNjb3BlRm9yQ2xhc3MoUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKIHsKICAgICB3aGls
ZSAobGlzdCkgewotICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVs
ZCgpKQorICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIHx8
IGxpc3QtPm1fbm9kZS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgbGlzdCA9IGxpc3QtPm1fbmV4dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKaW5kZXggNDlhYWM0NzM1ODA3MGUzZjM4Yjc4YzIxMmYwMjMyOTEzNWE5NmZiYS4u
MjYzZjY1ZmQyZTYyZWQwYTk4YWJjOThkZDQ1NWZhMGM0NjM3MGU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgyLDYgKzE4Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0gICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0
ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNMb2NhdGlvbigpOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWduUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtNzEyLDcgKzcxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVu
dW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGlj
LCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNl
ckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhf
dCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBT
aG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhf
dCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBT
aG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OwogICAgICAgICBlbnVt
IFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQ
cm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0
VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzMxLDYgKzczMiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAg
IGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xh
c3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNP
dmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVw
bGljYXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ICYgUHJpdmF0ZTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkg
Y29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAg
ICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5C
eUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc0MSw3ICs3NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAg
ICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CiAg
ICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25l
ZCBtX3B1dFR5cGUgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFn
IHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CkBAIC04MTMsOSArODE1LDMwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7
CiAgICAgfTsKIAotICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBlbnVtIGNs
YXNzIERvdFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSB9OworICAgIGNsYXNzIEJhc2VEb3ROb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vz
c29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwor
CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50OyB9CisgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQorICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
RG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0KKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJv
cGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZh
bHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHZhbHVlKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fYmFzZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAgICAgICAg
RG90VHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5h
bCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwog
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50OyB9CkBAIC04MjQsMTAgKzg0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQogICAg
ICAgICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFNwcmVhZEV4cHJlc3Npb25O
b2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewpAQCAtOTQwLDkgKzk2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0
aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVT
dWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1Ymxp
YyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2Rl
KiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgRnVuY3Rp
b25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKQEAgLTk1MCw4ICs5NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdz
OwogICAgIH07CiAKQEAgLTk4OCw3ICsxMDA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxE
b3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIENhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1v
c3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpA
QCAtOTk3LDcgKzEwMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXpl
X3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKKyAgICAgICAgQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxs
T3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtMTQz
MiwyOCArMTQ1MSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMgOiAxOwogICAgIH07CiAKLSAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
eworICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3Np
Z25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAg
IEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVu
dDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIGJvb2wgbV9yaWdo
dEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBm
aW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhIHsKKyAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNl
RG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERv
dFR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIHVuc2lnbmVkIG1fb3BlcmF0b3IgOiAzMTsK
ICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjIzNiw3ICsyMjUx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNz
IFR5cGUgeyBOYW1lLCBDb21wdXRlZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsg
TmFtZSwgUHJpdmF0ZU5hbWUsIENvbXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25O
b2RlKiwgVHlwZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IDM2NTAyYWFmN2MzY2I0YjZlNDdhYjMxMmQyN2M4ZDFhNzFkMjk4ODgu
LjFhNzJjOGZjMGUzYjQzNGQ4MGU2NDc3Mzk1NTE1YTAxMmZiYTQ4ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgyMCw2ICs4MjAsOCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVZhcmlhYmxlRGVjbAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAg
ZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKwor
ICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2
YXRlIG5hbWUgdG8gZGVjbGFyZSBhIHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJ
ZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVj
bGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFy
YXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAg
ICAgICAgICAgICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBM
ZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTEyNzgsNiArMTI4MCw4IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZURlCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVz
dHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJp
YWJsZUtpbmROYW1lKGtpbmQpKTsKKyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0dXJp
bmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWlsSWZU
cnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAi
LCBkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAgICAg
ICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScg
aW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNo
KExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwg
a2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1
c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIp
OwpAQCAtMjkzOCw2ICsyOTQyLDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElm
RmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVy
dHkgbmFtZSIpOwogICAgICAgICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNL
RVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJUKE9w
dGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4gdG9r
ZW4gPSBtX3Rva2VuOworICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsK
KyAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAi
U3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAgIGZh
aWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9k
IHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVO
UEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5h
bWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJl
UHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRl
RGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAg
ICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJv
cGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9r
ZW5GbGFnKQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk1Myw4ICsy
OTcwLDEwIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHks
ICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25z
Ojp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBD
bGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVy
KTsKLSAgICAgICAgICAgIGlmIChpZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewogICAg
ICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5j
b25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3Rv
ciciKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3Bl
cnR5TmFtZXMuY29uc3RydWN0b3JQcml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2YXRl
IGNsYXNzIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAgIGlk
ZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlm
aWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOwpAQCAtMzAxOCw2ICszMDM3LDEwIEBAIHBh
cnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNl
dCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5n
ICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRl
Q2xhc3NGaWVsZHMoKSkgeworICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQg
cHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBu
YW1lcy4KKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVO
YW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUg
bmFtZXMiKTsKKyAgICB9CiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0
ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52
aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAg
ICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtMzA0MSw2ICszMDY0LDkgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9w
ZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkg
eworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAg
ICAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5
d29yZDoKQEAgLTMwODAsNiArMzEwNiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAg
ICAgIGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZp
bmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBk
ZWZpbmVGaWVsZCA9IGNvbnRleHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRl
bnQsIGluaXRpYWxpemVyLCB0eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQo
c291cmNlRWxlbWVudHMsIGRlZmluZUZpZWxkKTsKICAgICB9CkBAIC00NzcyLDYgKzQ4MDEsMjIg
QEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSos
IFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KK2Jvb2wgUGFyc2VyPExleGVyVHlwZT46OmVuc3VyZVByaXZhdGVOYW1lVXNlZChj
b25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdG
dW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKKyAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFByaXZhdGVOYW1lU2NvcGUoJmZvdW5k
KTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjdXJy
ZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICBjdXJyZW50LT51c2VQcml2YXRl
TmFtZSgqaWRlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNv
bnRleHQpCiB7CkBAIC00ODg3LDYgKzQ5MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwog
CiAgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRl
eHQpOwogICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBpZGVudGlmaWVycyBp
biBhbiBvcHRpb25hbCBjaGFpbiIpOwogICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFDS0VU
KSB8fCBtYXRjaChPUEVOUEFSRU4pIHx8IG1hdGNoKEJBQ0tRVU9URSkpCiAgICAgICAgICAgICAg
ICAgdHlwZSA9IG1fdG9rZW4ubV90eXBlOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00OTc0LDgg
KzUwMjAsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBtX3Bh
cnNlclN0YXRlLm5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgICAgICBK
U1RleHRQb3NpdGlvbiBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAg
ICAgICAgICAgICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1aWxk
S2V5d29yZHMgfCBMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAg
ICAgICAgICAgICAgIGF1dG8gdHlwZSA9IERvdFR5cGU6Ok5hbWU7CisgICAgICAgICAgICAgICAg
aWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90
IGFjY2VzcyBwcml2YXRlIG5hbWVzIGZyb20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKFVOTElLRUxZKGN1cnJlbnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFsQ29u
dGV4dFR5cGU6Okluc3RhbmNlRmllbGRFdmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFtZSgq
aWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIsIGlk
ZW50LT5pbXBsKCksICInIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFs
c2UoZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0
ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2Vy
U3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAg
ICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9r
ZW4ubV90eXBlID0gSURFTlQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1h
dGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlv
bmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBj
b250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0
YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9u
KCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFy
dExvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9u
RW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShi
YXNlSXNTdXBlciAmJiBjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rp
b25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxNzAs
NiArNTIyOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dChjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJv
cGVydHkgJyIsIG1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3Ry
aWN0IG1vZGUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJp
dmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFy
c2VyU3RhdGUubGFzdFByaXZhdGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNv
bnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0
YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNTI0MCw3ICs1MzAwLDExIEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3Rl
ZFRva2VuVGV4dChXCiAgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAg
ICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIici
KTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1F
OgorICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2Vu
KCkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6
CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigp
LCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzllYTA5NjZk
YjYyNDU5NGYyYWMyYzM4Y2Y4NGJjM2JjMzZlYzM1ZC4uNWJjNDYzMDdhMjUxMzEwMWQyZjFhODli
NWVkMmZkZTJhZTYyMGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0xODEsNiArMTgxLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNl
KQogICAgICAgICAsIG1faXNFdmFsQ29udGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hhc05vblNp
bXBsZVBhcmFtZXRlckxpc3QoZmFsc2UpCisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1lU2NvcGUo
ZmFsc2UpCiAgICAgICAgICwgbV9pc0NsYXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9ldmFs
Q29udGV4dFR5cGUoRXZhbENvbnRleHRUeXBlOjpOb25lKQogICAgICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpAQCAt
Mjg5LDYgKzI5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnkoKSBj
b25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5bmNG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBp
c0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9u
Qm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQcml2YXRlTmFtZVNjb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25z
dCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA1LDggKzMwNywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQogCisg
ICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pc1ByaXZh
dGVOYW1lU2NvcGUgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3BlKCkK
ICAgICB7CisgICAgICAgIHNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBtX2lzQ2xh
c3NTY29wZSA9IHRydWU7CiAgICAgfQogCkBAIC00NzEsNyArNDc5LDQ0IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuZ2V0
KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmhh
c1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xhcmVkUHJp
dmF0ZU5hbWVzKFNjb3BlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxl
cy5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMpOwor
ICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXpl
KCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJs
ZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNV
c2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25z
KTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAg
ICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNh
bERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBE
ZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhp
Y2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQ
YXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTgzNCw2ICs4NzksNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNBcmd1bWVudHM7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAgYm9v
bCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5hbWVT
Y29wZTsKICAgICBib29sIG1faXNDbGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlwZSBtX2V2
YWxDb250ZXh0VHlwZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAgLTkwNSw3
ICs5NTEsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNl
ckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRl
eHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
biA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRy
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBj
b25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9u
YWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpu
dWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3Rv
cjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3Jl
TGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsg
fQpAQCAtMTE3OCw2ICsxMjI0LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29wZVJl
ZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBTY29wZVJlZiBjdXJyZW50UHJpdmF0
ZU5hbWVTY29wZShib29sICpmb3VuZCA9IDApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0g
bV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNr
LnNpemUoKSk7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRl
TmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAg
ICAgICAgICpmb3VuZCA9IG1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAg
ICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJv
b2wgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFtX3Njb3BlU3RhY2suaXNFbXB0eSgpKTsKKyAgICAgICAgU2NvcGVSZWYgY3Vy
cmVudCA9IGN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBj
dXJyZW50LmluZGV4KCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ld
LmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlmICgh
aSkKKyAgICAgICAgICAgIHJldHVybiAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2
YXRlTmFtZXMoKTsKKworICAgICAgICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1l
cyhtX3Njb3BlU3RhY2tbaV0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBT
Y29wZVJlZiBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpCiAg
ICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CkBAIC0x
NDUyLDYgKzE1MjQsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2Vu
Lm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0
Y2hBbmRVcGRhdGUoSlNUb2tlblR5cGUgZXhwZWN0ZWQsIGNvbnN0IEpTVG9rZW4mIHRva2VuKQor
ICAgIHsKKyAgICAgICAgaWYgKG1hdGNoKGV4cGVjdGVkKSkgeworICAgICAgICAgICAgbV90b2tl
biA9IHRva2VuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRj
aENvbnRleHR1YWxLZXl3b3JkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewpA
QCAtMTcwMiw2ICsxNzg0LDggQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChUcmVl
QnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBlbnN1
cmVQcml2YXRlTmFtZVVzZWQoY29uc3QgSWRlbnRpZmllciopOworCiAgICAgQUxXQVlTX0lOTElO
RSBpbnQgaXNCaW5hcnlPcGVyYXRvcihKU1Rva2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1dG9t
YXRpY1NlbWljb2xvbigpOwogICAgIApAQCAtMTc5Niw2ICsxODgwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgRnVuY3Rpb25QYXJzZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9uUGFy
c2VQaGFzZTo6Qm9keSB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRpZmll
ciB7IG51bGxwdHIgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFt
ZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdFByaXZhdGVOYW1l
IHsgbnVsbHB0ciB9OwogICAgICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAgICAg
IGJvb2wgaXNQYXJzaW5nQ2xhc3NGaWVsZEluaXRpYWxpemVyIHsgZmFsc2UgfTsKICAgICB9OwpA
QCAtMTk0NSw3ICsyMDMwLDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0
IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNp
bmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGlu
c3RhbmNlRmllbGRMb2NhdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYg
Y2FsbGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFy
c2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNF
bmRQb3NpdGlvbiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFos
IGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7
CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTE5NjAsNiArMjA0NSwx
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
KFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRD
b2x1bW4oKSA+IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKKyAg
ICBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHZhcmlhYmxlc1VuZGVyVERaICYmIHZh
cmlhYmxlc1VuZGVyVERaLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICAgICAgY3VycmVudFNj
b3BlKCktPnNldElzUHJpdmF0ZU5hbWVTY29wZSgpOworICAgICAgICB2YXJpYWJsZXNVbmRlclRE
Wi0+Y29weVByaXZhdGVOYW1lcyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsK
KyAgICB9CisKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBw
YXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVtYmVy
ID0gbV9sZXhlci0+bGluZU51bWJlcigpOwpAQCAtMjA0NCw2ICsyMTM0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dl
clBhcnNlRGF0YSogZGVidWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBjb25zdCBW
ZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVsbHB0cikK
IHsKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CkBA
IC0yMDU1LDcgKzIxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hh
cj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BM
ZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4o
KSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSk7Ci0gICAgICAgIHJlc3VsdCA9
IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxO
b2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0
OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAg
ICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9k
ZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJz
aW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5z
dGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQ
YXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAtMjA2OCw3ICsyMTU5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24g
PT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzJ3Mgc3BlY2lhbCBj
b25zdHJ1Y3RvcnMgc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKICAgICAgICAg
UGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJp
Y3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0
cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhKTsK
LSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBw
YXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFs
IDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJv
ciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29u
dGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlh
Ymxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGJkNmQ2NTE0Y2Zi
Y2ZlMjMxMzY1M2M4NmUxYzRhZTAzM2I4ZjI0My4uZjU2OTA0Yzg5ODIxZTdhYThlYzVjMWI1MDI0
OTdkOWEzMDBlYjUwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRv
a2Vucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9VQkxF
LAogICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJTkcs
CiAgICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBmOWJiMDdiNGRkNDA4OWM3YjFlM2EwZjNmNTk1NDFi
MzE3YTUyZDdmLi5lOWI2ZDdlOTQ2NzQ0ZTFhMDhkYzFjYzI4YTQ2YjcxMzc3M2M5ODRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIElu
dGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBU
aGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhw
ciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhw
ciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQcmVF
eHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAorICAg
ICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBP
cHRpb25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHByLCBB
c3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRl
cmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFy
cmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1
bHQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYp
IHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFj
Y2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlw
ZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/
IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJl
Z0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJy
OjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJl
Z0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsg
fQpAQCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24oRXhw
cmVzc2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVF
eHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAgICBy
ZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBQ
cml2YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJvb2wg
aXNQcml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3NpZ25t
ZW50TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2
Y2IzMTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3
NDA2OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJh
dG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9IG90
aGVyLm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0
aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIubV9y
YXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVu
dmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAqdGhp
czsKK30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1cmVk
SWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7
CiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgwLDYg
KzkwLDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1l
bnQmIG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNFdmVy
eXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFy
ZURhdGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmlyb25t
ZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVk
KCkpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJpZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBwYWly
IDogZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgpLCBw
YWlyLnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJl
YTE5OTJjNTIuLjBjMWQwYWMzZWJhZGNhOGVjMzhhNmM4OGVhNjMxMzliNDkwYTMzNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
CkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9J
dGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0
ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZh
dGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9i
aXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgp
IHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsg
fQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElz
UGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9
IElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkg
eyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9IDEg
PDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5TW9k
ZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5n
Q2FuZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKICAg
ICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUgQEAg
c3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworcHVi
bGljOgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMg
PSB0cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KKwor
ICAgIHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVudW0g
VHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAgIElz
RGVjbGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2Jp
dHMgeyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNo
VHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhh
c2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRz
PiBQcml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0gZGVm
YXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhl
cikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0o
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmly
b25tZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7CisgICAg
VmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFi
bGVFbnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9t
YXApKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJlRGF0
YSkpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAgICAg
ICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkK
KyAgICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8
VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51bGxw
dHIpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBNYXA6
Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAtOTks
NyArMTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUg
TWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9
Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
c2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIp
OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7
IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZp
ZXIpOyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRo
aW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisgICAg
dXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVz
OjppdGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJl
UHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0
ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJl
UHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZp
ZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0byBl
bnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1By
aXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnku
c2V0SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVu
dHJ5KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdl
dE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNV
c2VkKCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZpbmQo
aWRlbnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAg
ICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZl
bnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKHBy
aXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2Uo
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0
ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmly
b25tZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAg
ICAgICAgb3RoZXIubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCEoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNs
YXJlZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVz
ZWQgYnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1l
cyBmcm9tIGFuCisgICAgICAgIC8vIGlubmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBh
biBvdXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGlu
IHRoZSBzb3VyY2UgY29kZSB0aGFuIGl0IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRl
TmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRl
TmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAh
ZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRP
ckFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0K
KyAgICAgICAgUmFyZURhdGEoUmFyZURhdGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2
YXRlTmFtZXMoV1RGTW92ZShvdGhlci5tX3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICBSYXJlRGF0YShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAg
ICAgUmFyZURhdGEmIG9wZXJhdG9yPShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAg
ICAgUHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7
CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZh
dGVOYW1lRW50cnkmIGdldE9yQWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwp
CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRh
ID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisg
ICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0
ZU5hbWVFbnRyeSgwKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNs
YXNzIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCAyMjZiNDgzNTQ2MmQ4YzQ1ZTYxOWY2Njgw
MGJlOTk3YTkxYWU4OGExLi5mZTZkY2JhMjdkOTdlZTA3MjQ3NmIzM2Y1MzZiYWM0ZDY1MzU3MjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBA
IC04NTcsNiArODU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5j
b2RlKGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBk
ZWNvZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0
ZSBidWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIpOworICAgIH0KIH07CiAKIGNsYXNzIENhY2hl
ZFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1w
VGFibGU+IHsKQEAgLTEwMDQsMjMgKzEwMTAsNDUgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKIH07CiAKK2NsYXNzIENhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCisg
ICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9w
cml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVO
YW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRy
PENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQ
dHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmll
clJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVO
YW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFZh
cmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1l
bnQ+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgewogICAgICAgICBtX2lzRXZlcnl0aGluZ0Nh
cHR1cmVkID0gZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmVuY29k
ZShlbmNvZGVyLCBlbnYubV9tYXApOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVy
LCBlbnYubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KSBjb25zdAogICAgIHsKICAgICAg
ICAgZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwog
ICAgICAgICBtX21hcC5kZWNvZGUoZGVjb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFt
X3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6
Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2RlciwgKmVudi5tX3JhcmVEYXRhKTsKKyAgICAgICAg
fQogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAg
ICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVu
aXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNo
VHJhaXRzPiBtX21hcDsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJh
cmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52
aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
PiB7CkBAIC0xMTQ3LDYgKzExNzUsMjIgQEAgcHJpdmF0ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7
CiB9OwogCitjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9i
amVjdDxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4geworcHVibGljOgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJs
ZVJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29k
ZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisgICAgdm9pZCBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEm
IHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRl
Y29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Q2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVu
dGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRTeW1ib2xU
YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKIHB1YmxpYzoKICAgICB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUpCkBAIC0xMTU3LDYgKzEyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmVzdGVkTGV4aWNh
bFNjb3BlID0gc3ltYm9sVGFibGUubV9uZXN0ZWRMZXhpY2FsU2NvcGU7CiAgICAgICAgIG1fc2Nv
cGVUeXBlID0gc3ltYm9sVGFibGUubV9zY29wZVR5cGU7CiAgICAgICAgIG1fYXJndW1lbnRzLmVu
Y29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX2FyZ3VtZW50cy5nZXQoKSk7CisgICAgICAgIG1f
cmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwog
ICAgIH0KIAogICAgIFN5bWJvbFRhYmxlKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QK
QEAgLTExNzAsNiArMTIxNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlKiBzY29wZWRBcmd1bWVudHNUYWJsZSA9IG1fYXJndW1lbnRzLmRlY29kZShkZWNvZGVyKTsK
ICAgICAgICAgaWYgKHNjb3BlZEFyZ3VtZW50c1RhYmxlKQogICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPm1fYXJndW1lbnRzLnNldChkZWNvZGVyLnZtKCksIHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1
bWVudHNUYWJsZSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIHN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRh
YmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVj
b2RlKGRlY29kZXIsICpzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSk7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm4gc3ltYm9sVGFibGU7CiAgICAgfQogCkBAIC0xMTgwLDYgKzEyMzAsNyBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNp
Z25lZCBtX3Njb3BlVHlwZSA6IDM7CiAgICAgQ2FjaGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50
c1RhYmxlPiBtX2FyZ3VtZW50czsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJl
RGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZEpTVmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAzMGI1OGI2YWNkZWNkNThi
MDMwN2JkNTI4NDZlYTQ2NTgyYjliMDlkLi4wNTFlYTdhYTY2ODJkMDhkZGNlMDg3ZjE5Mjk1NDE2
M2NiMjlkMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKIHsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUg
Um9vdE5vZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNl
PFJvb3ROb2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVz
PFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0
VHlwZSwgZXZhbENvbnRleHRUeXBlKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2Rl
LCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRl
cml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJpYWJsZXNVbmRl
clREWik7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cAppbmRleCA2MmMwZDU5NTczYTZhNjM5OTA5MzlmMWNlZjk0ZDkxOWQ3ZDczYzZlLi43ZWU3MTNj
OWM0YTI1OTJmZjMzMGY2OGY1YTY2NDZlZDNlODA5YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMiw2ICszMiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBu
YW1lIyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUg
SU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0
aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wo
bmFtZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQorI2Rl
ZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVG
aWVsZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiIyIgI25hbWUpKQogCiBDb21tb25JZGVu
dGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIo
KQpAQCAtNDUsNiArNDYsNyBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMo
Vk0mIHZtKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJ
WkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFN
RShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCisgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSU5JVElBTElaRV9QUklWQVRF
X0ZJRUxEX05BTUUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGRmMDFmMmExMTg3NDA0MTI2MzJiZjJhZGFiOGFl
MDRmMjZhYzk3ZDAuLjhkMmU5YTc4MTIyZjYyNjEwNjE2YjIyMWQ5YmU4ZjZhNGIyMzc5NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtMjA1LDYgKzIwNSw5IEBACiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNybyh5
ZWFyKQogCisjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxE
KG1hY3JvKSBcCisgICAgbWFjcm8oY29uc3RydWN0b3IpCisKICNkZWZpbmUgSlNDX0NPTU1PTl9J
REVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhhd2FpdCkgXAogICAg
IG1hY3JvKGJyZWFrKSBcCkBAIC0zMTksNiArMzIyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFM
KQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJP
TF9HTE9CQUwKIAorI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERf
R0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZUZpZWxkOworICAgICAg
ICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RF
Q0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwKKwogICAgICAgICAvLyBDYWxsZXJzIG9mIHRoaXMg
bWV0aG9kIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpZGVudGlmaWVycyBnaXZlbiB0byB0aGlzIG1l
dGhvZCAKICAgICAgICAgLy8gc3Vydml2ZSB0aGUgbGlmZXRpbWUgb2YgQ29tbW9uSWRlbnRpZmll
cnMgYW5kIHJlbGF0ZWQgVk0uCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5k
RXh0ZXJuYWxOYW1lKGNvbnN0IElkZW50aWZpZXImIHB1YmxpY05hbWUsIGNvbnN0IElkZW50aWZp
ZXImIHByaXZhdGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhmYjRiNDIyYTkyZDAzYjgxYWIwYWYxOGQ0ZjY1
YjFlOGM4MzUuLjRjYzUyZTZjODQ2OTJkYmM0NjQ3MWQ4ZjEzMGYyZmI1MTZhNTI1NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMTI5OCw2ICsxMjk4LDcyIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
X3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsX2RpcmVjdCkKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEdldEJ5VmFsRGlyZWN0PigpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0Mo
Ynl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBHRVRf
QyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisKKyAgICBpZiAoTElLRUxZKGJhc2VW
YWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgU3RydWN0
dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAg
ICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgewor
ICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlzdGluZ0F0b21TdHJpbmcgPSBh
c1N0cmluZyhzdWJzY3JpcHQpLT50b0V4aXN0aW5nQXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwor
ICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdB
dG9tU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3RpbmdB
dG9tU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3Vic2Ny
aXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQz
MigpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
ayk7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOworCisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKKyAgICAg
ICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAg
ICAgICAgICBSRVRVUk5fUFJPRklMRUQoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBpKSk7CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRz
KCk7CisgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgICAgICAgICAg
aWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQorICAgICAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChvYmplY3QtPmdldEluZGV4UXVpY2tseShpKSk7CisKKyAgICAgICAgICAgIGJv
b2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAob2Jq
ZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPCBvYmplY3Qt
PmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBleHBhbmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMyLCBhbmQgbWF5YmUgRG91YmxlOgor
ICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODI5NDAKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBvYmplY3QtPmds
b2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICAgICAgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9
IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJl
KHZtKSkgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyAmJiAh
Q29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudEluZGV4UXVpY2tseSgqb2JqZWN0LCBp
KSkKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CisgICAg
ICAgIH0KKworICAgICAgICBSRVRVUk5fUFJPRklMRUQoanNVbmRlZmluZWQoKSk7CisgICAgfQor
CisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldE93blByb3BlcnR5KTsKKworICAgIGJvb2wgZm91bmQgPSAoYmFzZVZhbHVlLmFzQ2Vs
bCgpLT5pc1Byb3h5KCkgJiYgcHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICA/IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYXNPYmplY3QoYmFzZVZhbHVlKSwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSwgc2xvdCkKKyAgICAgICAgOiBiYXNlVmFsdWUuZ2V0T3duUHJvcGVydHlT
bG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIENIRUNLX0VYQ0VQVElPTigp
OworICAgIGlmICghZm91bmQgJiYgcHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICBU
SFJPVyhjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBS
RVRVUk5fUFJPRklMRUQoZm91bmQgPyBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHkpIDoganNVbmRlZmluZWQoKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfaWRfd2l0aF90aGlzKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3MTM1ZTJiNzg0YWI2OGRiNWY1
NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjNmZDRhOWIxOTU1MWVmZmEzZDlkOTYxZTFlMDUwOTBhNjY2
OWVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCkBAIC0yNzIsNiArMjcyLDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
aWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3Zh
bF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
X2RpcmVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRo
X3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhf
dGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3Bl
cnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKaW5kZXggYWY5OGQ0ZDI3YjQxZDE0MzM2YTAyMThlODBiNzZjZTRkOGI0MGI3Mi4u
ZDgxZTU4NjY0MWJkNmZjMmJhY2QwZmI0MTc5OTFjYmYxNWY1OWIyMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMyOSw2
ICszMjksMTYgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9iamVjdCwg
IkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iKTsKIH0KIAorSlNPYmplY3Qq
IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VB
cHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJp
dmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgcmVkZWZp
bmUgZXhpc3RpbmcgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVO
b3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
Z2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmgKaW5kZXggMzc2ZjJhZjQwZDg0NjQ3MjYzNDRjNzM3MzIzMmUxY2Q1YTk2
OGRmNC4uYWM4MWQyYmJhOTI4OThmZGI2NDQxYzdiZDIyYzAxMzYzNGFmMWY4YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtNTMs
NiArNTMsOCBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJv
ckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsbwogSlNPYmplY3QqIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVjdCogY3Jl
YXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0
KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJik7CitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVy
cm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiog
dGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGM5NmMwMTNjZDNiM2JiMGFmMTU2ODE0OTNhZTk0MjIxYjRlZGM3NzAuLjU4MmE1MWExNzM3Mjgx
ZWI3Y2JjODk3ZWYxMjU1ZTgxY2IwYTU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwNSw2ICszMDUsMTIgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCkpKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNyZWF0ZVByaXZhdGVTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJv
bEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJM
RUQKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CkBAIC0xMTYx
LDYgKzExNjcsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCkpOwogICAg
ICAgICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworICAgIC8vIFByaXZhdGVTeW1ib2xz
IC8gUHJpdmF0ZU5hbWVzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbCkpOworICAgICAgICB9
KTsKKwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZX1NUUkVB
TUlOR19BUEkpCiAgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQogICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OndlYkFz
c2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3Yzgu
Ljk2YzhkYmQ0MzA2NzkxZTFhNWU2MTE4YTY1MjNlNTRkODNmM2E1NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zMzksNiArMzM5LDEwIEBAIHZvaWQg
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwg
VmFyaWFibGVFbnZpcm9ubWVuCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3lt
Ym9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+
ZW5kKGxvY2tlciksIGl0ZXIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikKICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKKyAgICAgICAg
aWYgKHN5bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgZm9yIChh
dXRvIG5hbWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICAgICAg
cmVzdWx0LnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgfQogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYjg1Yjgy
ODhlZGY2Mjg0ZWQ4M2NhZjZjNmQ5OGYzMjdmYTJkYzRjZi4uOTQ5YjQ1NDFlZTA2YjBjYTUzMzEz
MTcwZjA4Mzc4ZjAyODIyMzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCkBAIC01MDAsNiArNTAwLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIGZvcmNlT1NSRXhpdFRv
TExJbnQsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSBhbHdheXMgZXhpdCB0byB0aGUgTExJ
bnQuIElmIGZhbHNlLCB3ZSBleGl0IHRvIHdoYXRldmVyIGlzIG1vc3QgY29udmVuaWVudC4iKSBc
CiAgICAgdihVbnNpZ25lZCwgZ2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMsIDQsIE5v
cm1hbCwgIk51bWJlciBvZiBpZGVudGlmaWVycyB3ZSBzZWUgaW4gdGhlIExMSW50IHRoYXQgY291
bGQgY2F1c2UgdXMgdG8gYmFpbCBvbiBnZW5lcmF0aW5nIGFuIElDIGZvciBnZXRfYnlfdmFsLiIp
IFwKICAgICB2KEJvb2wsIHVzZVB1YmxpY0NsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0
cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMgZGF0YSBmaWVsZHMgaW5zaWRl
IGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRh
IGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2Ugewog
ICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKaW5kZXggYmM0OWRjOTgyYzczMjgyYmVkZWIyYjFkZWZjNzY3YTg1YWIzNWFmOS4u
Nzc5MGNmNTczZDI2Zjk1MmY0OTk5YTUzZjNjMjc1ZDY3NTFhM2NkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTgzLDYgKzE4MywxMSBA
QCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC0+bV9yYXJlRGF0YS0+bV91bmlxdWVUeXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZh
bHVlKTsKICAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1l
IDogbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5t
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCmluZGV4IDJkNzg2YTU4YzA5MzgwYjAyMzE1MGYwN2U4MjI3NjI2YzZkNmE1
OTcuLmIwZGQ3NGY3ZTRjMDE1MDAzNzNlOTM3OGUxYWY5NjQ2M2U1ZmQyNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTQ1MCw2ICs0NTAsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1
ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxT
eW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVT
ZXQ7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVT
ZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2Vy
LCBrZXksIHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBi
b29sIGhhc1ByaXZhdGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRl
TmFtZUl0ZXJhdG9yUmFuZ2UgcHJpdmF0ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBv
ZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFp
bHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVz
KCkpOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAg
IH0KKworICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8
U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoa2V5KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4K
ICAgICB2b2lkIHNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1w
bCoga2V5LCBFbnRyeSYmIGVudHJ5KQogICAgIHsKQEAgLTcyMSwxOCArNzQxLDIxIEBAIHByaXZh
dGU6CiAgICAgU2NvcGVPZmZzZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRh
YmxlIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3Vz
ZXNOb25TdHJpY3RFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6
IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5
cGUgOiAzOyAvLyBTY29wZVR5cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVE
YXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBV
bmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1f
b2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5
cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwor
ICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRl
OgorICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1f
bmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAg
ICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJp
ZXI8U2NvcGVkQXJndW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5OGRhMzE0OTNlOTViMzdkMjcw
NGFmNThkOTA4N2EyMzQzMmFjNWIxLi4yZjFiYWY4Nzc3OTQxZTQ2ZWE5ZGExZWQzMmRlYTZhNzEz
Y2QxYjE4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTA5ICBDYWl0bGluIFBvdHRlciAgPGNhaXRw
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xh
c3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBhbmRzIHVwb24gdGhlIGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEg
bnVtYmVyIG9mIHByaXZhdGUKKyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpz
OgorICAgICAgICAqIHN0cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9w
ZXJ0eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHBy
aXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRw
cml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIw
LTAzLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
YmFkIGFzc2VydGlvbiBpbiBGVExMb3dlckRGR1RvQjMncyBjb21waWxlRGVsQnkoKS4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODhhMTE2M2UxNjdlZDBkNmM1ZjY3NjU2ZDAxYjM0ZDg4Y2I3NGYyZgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0
aW9uLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5l
dyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDJhNGY0MzU0Zjg5N2YxMTM3NDA4NzEyNjA0NmM2ZjFkZmQzZTdlOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5q
cwpAQCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNmID0gMzsKKworICAgIG1ldGhvZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cith
c3NlcnQoYy5tZXRob2QoKSwgMyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxZjcxOGQ5NzQyNzBhYzhhMTllNWY3
YmYwNTIwMGRlYjkzNzZjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChh
LCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5s
ZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVb
aV0sICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBl
W2ldKTsKK30KKworbGV0IGFyciA9IFtdOworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAg
IGdldDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNoKHBy
b3ApOworICAgICAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworICAgIH0KK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7Cisg
ICAgI2YgPSAzOworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAg
fQorfQorCitsZXQgdCA9IG5ldyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQo
ciwgMywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50
KGFyciwgWydtZXRob2QnXSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb3V0LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkODYyMTYwMWQ1ZGUzNGE0Mjgz
NDZkNTFjY2Y4MjJmYmY1NjBhOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFz
c2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2xldCBrbGFzc1NvdXJj
ZSA9IGAKK3ZhciBDID0gY2xhc3MgeworICAgIGFzc2VydE91dE9mTGluZVZhbHVlKCkgeworICAg
ICAgICBhc3NlcnQodGhpcy4jZjIwMCwgImZvbyIpOworICAgIH0KK2A7CisKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAyMDA7IGkrKykgeworICAgIGtsYXNzU291cmNlICs9ICIgICAgI2YiICsgaSAr
ICI7XG4iOworfQorCitrbGFzc1NvdXJjZSArPSAiICAgICNmMjAwID0gXCJmb29cIjtcbn0iOwor
CitldmFsKGtsYXNzU291cmNlKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hc3NlcnRPdXRPZkxpbmVWYWx1ZSgpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY5Nzg4MDU3YjFiZjQ5NTUwYTBlOGYzZDk4YTk0MWE4MzdjZjExYzMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5q
cwpAQCAtMCwwICsxLDE1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPTEiLCAiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0
KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlKTsKK30KKworbGV0IGluc3QgPSBuZXcgY2xhc3MgeworICBhID0gZXZhbCgiKGkpID0+IGku
I2IiKTsKKworICAjYiA9IHt9OworfTsKKworaW5zdC5hKGluc3QpLnggPSAxOworYXNzZXJ0KGlu
c3QuYShpbnN0KS54ID09IDEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXN0cmVzcy1pbnN0YW5jZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJl
c3MtaW5zdGFuY2UuanMKaW5kZXggZTUxNjI5OWE3OTJjNjM4NGI4NDJjNjk3ZjQxZmNlZDdmNWNm
ZmZjZi4uNTA2OWE3ZGE1YTE1NWRjYzA2MDRlNDYzMmI5MGU4MzA5MzlmZTgzNiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCkBAIC0xLDExICsx
LDE1IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKIAogY2xhc3MgQSB7CiAgICAgYSA9IDA7CiAgICAg
YiA9IDE7CisgICAgI2MgPSAwOworICAgICNkID0gMTsKICAgICBlID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gMDsgfTsKKyAgICAjZiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfTsKICAgICBbImci
XSA9IDA7CiAgICAgaCA9IGV2YWwoInRydWUiKTsKKyAgICAjaSA9IGV2YWwoImZhbHNlIik7CiB9
CiAKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9n
ZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNjMzNjJmYWE2M2U0
MDU2MjVkMWZlY2VjZTk5YmNkMjY2YjllYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMjkgQEAKKy8v
IFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisv
L0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCisvLyBHZXRCeVZhbERpcmVjdCBzaG91bGQg
dGhyb3cgd2hlbiB0aGUgcmVjZWl2ZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWVzdGVkIHByaXZh
dGUgcHJvcGVydHkKK2xldCBpLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3ggPSBp
OworICAgIGNvbnN0cnVjdG9yKCkgeyBpZiAoaSA9PT0gMzApIHJldHVybiB7IFtTeW1ib2wudG9T
dHJpbmdUYWddOiAid2l0aG91dCAjeCJ9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBv
YmouI3g7IH0KKyAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAj
eCI7IH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAg
ICBsZXQgYyA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KGMpOworICAgICAgICBp
ZiAocmVzdWx0ICE9PSBpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBD
LngoJHtjfSkgdG8gYmUgJHtpfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0
Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUuY29uc3Ry
dWN0b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYg
KCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
NGNkMDE2YTU1MWFiYjU3ODc3ZTJhNzQ3NWY5YmUwMjc1NjY5MTAyCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0
eS5qcwpAQCAtMCwwICsxLDIwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVs
ZHM9MSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiAoZXhwZWN0ZWRFcnJvciwgZnVu
Y3RvcikgPT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVy
cm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93
OiAiICsgZXhwZWN0ZWRFcnJvci5uYW1lICsgIiBidXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICBjbGFzcyBCYXNlIHsKKyAgICAgICAgW3t9LiN4XSA9IDE7IAorICAgICAgICAjeCA9ICJmb28i
OworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRp
cmVjdC1hZGRwcml2YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRk
cHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDRkZTZmNTI1MjkyMDcyYTE2YTUwNDg1MDkwMTVlY2E1
Yjk5YWViCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJl
Y3QtYWRkcHJpdmF0ZS5qcwpAQCAtMCwwICsxLDM0IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bkRlZmF1bHQoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKwor
Ly8gR1BWRCB3aXRoICJQdXRCeVZhbFRocm93SWZFeGlzdHMiIHNob3VsZCB0aHJvdyBpZiBvdmVy
d3JpdGluZyBhbiBhbHJlYWR5IGV4aXN0aW5nIFByaXZhdGVOYW1lLgorbGV0IGMsIGkgPSAwLCB0
aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJl
dHVybiBpIDwgMjkgPyB0aGlzIDogYzsKKyAgICB9Cit9CisKK2NsYXNzIENDIGV4dGVuZHMgQyB7
CisgICAgI3ggPSBpKys7CisgICAgeCgpIHsgcmV0dXJuIHRoaXMuI3g7IH0KK30KKworYyA9IG5l
dyBDQzsKK3RyeSB7CisgICAgZm9yIChsZXQgaiA9IDE7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGxldCB4ID0gbmV3IENDOworICAgICAgICBpZiAoeC54KCkgIT09IGopCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHgueCgpIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3gu
eCgpfWApOworICAgIH0KK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYg
KGkgIT09IDMwIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJv
dyBlOworICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDIz
YzNlNGMyZDk3Njc1NDc0ZjdkZDcyYzRjMzNjYjg0MmFhOWE0Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpAQCAtMCwwICsx
LDMxIEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBy
dW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gR1BWRCB3aXRoICJQ
dXRCeVZhbFByaXZhdGVOYW1lIiBzaG91bGQgdGhyb3cgaWYgd3JpdGluZyB0byBhIG5vbi1leGlz
dGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMg
eworICAgICN4OworICAgIGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gaSA8IDMwID8gdGhpcyA6IHsg
W1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4IiB9OyB9CisgICAgc3RhdGljIHgob2Jq
KSB7IHJldHVybiBvYmouI3ggPSBpKys7IH0KKyAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10o
KSB7IHJldHVybiAid2l0aCAjeCIgfQorfQorCit0cnkgeworICAgIGZvciAobGV0IGogPSAwOyBq
IDwgNTA7ICsraikgeworICAgICAgICBsZXQgb2JqID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1
bHQgPSBDLngob2JqKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gaikKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54KCR7b2JqfSkgdG8gYmUgJHtqfSwgYnV0IGZvdW5k
ICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7Cisg
ICAgLy8gcnZhbCBvZiBBc3NpZ25tZW50RXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYmVmb3JlIFBy
aXZhdGVGaWVsZEZpbmQoI3gsIGxyZWYpIGlzIHBlcmZvcm1lZCwKKyAgICAvLyB0aHVzIGBpYCBo
YXMgYWxyZWFkeSBiZWVuIGluY3JlbWVudGVkLgorICAgIGlmIChpICE9PSAzMSB8fCBlLmNvbnN0
cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lm
ICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDRmYjM2MWE1OWUy
YjNkNjA5OWUyYTEyYzIyYTAwZmEyNTQ1OWI5MzEuLjk0ZmYxYzEyZTY4MTNkMmJiZmEyZjgzNjk5
NDdkMDVkZGJlNTczOTYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAor
KysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTQsNiArNCw3IEBAIGZsYWdzOgog
ICBCaWdJbnQ6IHVzZUJpZ0ludAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVs
ZHMtcHVibGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxkcworICBjbGFzcy1maWVsZHMtcHJpdmF0ZTog
dXNlUHJpdmF0ZUNsYXNzRmllbGRzCiBza2lwOgogICBmZWF0dXJlczoKICAgICAtIFNoYXJlZEFy
cmF5QnVmZmVyCkBAIC0xMSw3ICsxMiw2IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAog
Ci0gICAgLSBjbGFzcy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRl
CiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZp
ZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393054</attachid>
            <date>2020-03-09 10:55:30 -0700</date>
            <delta_ts>2020-03-20 12:12:56 -0700</delta_ts>
            <desc>Patch v13</desc>
            <filename>bug-206431-20200309135529.patch</filename>
            <type>text/plain</type>
            <size>180681</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
YjMxMzM4YTEwODY0NzQ3YTU3MjcyYmJhNTI1ZGExYmExOTNjZDYyLi5kNWM2OGU3NjIxN2E5YjJi
NGJjNzk0YTAzNWVhMzdkNGQyNzg3ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzMgQEAKKzIwMjAtMDMtMDkgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVy
ZW5jZXMgYXJlCisgICAgICAgIHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Ig
bm90IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAg
ICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRo
ZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0
aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUg
ZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVk
IGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVk
IGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5
IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAg
ICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBs
aWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAg
IDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAg
ICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxE
b05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAs
IDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHBy
b2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAg
ICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xv
YmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNj
b3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxO
b3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNl
aXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZh
dGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJs
eSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlW
YWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRk
ZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgSlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0S2luZC5oLgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6RG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoSlNDOjpCYXNl
RG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXREb3Qp
OgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6QXNz
aWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlM
ZXZlbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAq
IGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKSVQ6OnB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnB1dEJ5VmFs
RmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKiBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6aXNQcml2YXRlTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VB
c3NpZ25Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8Q2hhcmFjdGVyVHlwZT46
OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdp
dGhvdXRDbGVhcmluZ0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUpOgorICAg
ICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgor
ICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUpOgor
ICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6
OnNob3VsZENyZWF0ZUxleGljYWxTY29wZUZvckNsYXNzKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzUHJpdmF0ZUxvY2F0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmJhc2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VE
b3ROb2RlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmlzUHJpdmF0
ZU5hbWUgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3Vy
Y2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjplbnN1cmVQcml2
YXRlTmFtZVVzZWQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1i
ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5h
cnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5l
eHBlY3RlZFRva2VuVGV4dCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNQcml2YXRlTmFtZVNj
b3BlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzUHJpdmF0ZU5hbWVTY29wZSk6
CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0NsYXNzU2NvcGUpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29weVVuZGVjbGFy
ZWRQcml2YXRlTmFtZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzVXNlZEJ1dFVuZGVjbGFy
ZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlUHJpdmF0ZU5h
bWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjdXJyZW50UHJpdmF0ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUpOgorICAgICAgICAo
SlNDOjpQYXJzZXI6Om1hdGNoQW5kVXBkYXRlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnN3YXApOgorICAg
ICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52
aXJvbm1lbnQpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTmFtZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTmFt
ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OlByaXZhdGVOYW1lRW50cnkpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1VzZWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0RlY2xhcmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNVc2VkKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6c2V0SXNEZWNsYXJlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmJp
dHMgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6VmFyaWFibGVFbnZpcm9u
bWVudCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnNpemUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjptYXBTaXplIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXNTaXplIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpjb3B5UHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YTo6UmFy
ZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpnZXRPckFkZFByaXZh
dGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFzUHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hl
ZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hl
ZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6
ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6
OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpj
cmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZGVm
aW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1l
L1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDMtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbWVtYmVyIGNvbXBsZXRlZCBzdWJyYW5nZXMgZHVyaW5nIGlu
Y3JlbWVudGFsIFBERiBsb2FkaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IGY3YzY2NjJmN2ZlNTY3MDlmNDUwOTRjMDczZjU1YzUwODFjYTg4N2UuLmFmZGJiMGI3Mzdk
NDc3MDZlNWFhMTUzM2JhYzM5ZTBlZWFlNmZjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTUyOSw2ICs1MjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9G
UkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Q
cm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRl
Y29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAg
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYjc0NTY1MTdmOGY3NGM2OWYxYzlkNWJkYzIw
MmM0ZjZlNDQxODVkLi5hNmY4NDU4M2IzOTU5OWQzODZjZmQwYzM5YTNjZWRkMDI4NjkzYjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NSw2ICsxMjQ1LDcgQEAKIAkJODY3
MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
SklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxG
bGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJC
OUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5
QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZF
NUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8q
IEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC00MTAwLDYgKzQxMDEsOCBAQAogCQk4NjcwNEI4MTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJy
UGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9
IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njcw
NEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8q
IFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNC
MjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5
MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTgzNDMsNiArODM0Niw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1
dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJ
ZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlk
VmFyaWFudC5oICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZs
YWdzLmNwcCAqLywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFn
cy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJ
CQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAog
CQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBA
IC0xMDA4Myw2ICsxMDA4OCw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1
dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2
IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQw
MDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3NkM2RTgy
MzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NmYxYzY5NDg1
YzZmY2JlZTQ4N2U1YWM5ODZjYTQ2MzYzNTNhZWJlLi40MzE0YmUzMWMyZGRiYjk1YWNiYWRkODZm
MjQwMDE1MDFhMGQ3OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0yNjQsNiAr
MjY0LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9QdXRCeUlk
VmFyaWFudC5jcHAKK2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29kZS9SZWNvcmRl
ZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCmluZGV4IDA2M2M3M2Q1MmNmOGM4NzFiMDliMjg2MmRiNDQ5ZWIwMGYzZDc2YzAu
LjZiZDgwMGRmMGUyZTM5YTViYjMxNThjMzliMWVmYjJjNTIwNzA2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE2Nyw3ICsxNjcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBcCiAgICAgbWFjcm8od2ViQXNzZW1i
bHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3Rh
bnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlh
bGl6ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAorICAgIG1hY3Jv
KGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVzcGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5hbWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFU
RSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIG5hbWUjI1N5bWJvbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCmluZGV4IGQzNzIz
NmY0MGFhODk5MTI3Yzc0OWViZGI5ODY5NmM3Nzg1ZDhjYjMuLjAyYzAxYmQ3YzJlOGMyNmE2OTVm
OGEzNjZiNjU4YmFjNmM5Y2ViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlBvbHltb3JwaGljQWNjZXNzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKICNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9ja0dlbmVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMzQ4MzQ3YzZiNGNkNzU0NjgwYzEy
NmEwZjcyNzUzNmYxYmUzN2M0ZS4uOWE3NDQzYTVkNTc1NTVmYTdjMTA2ZGRiYmJjNmVmMzE0NTgz
M2U1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCkBAIC00Nyw2ICs0Nyw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZs
YWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5
VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVj
dHVyZUlELApAQCAtNTQzLDYgKzU0NCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2Vl
bklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3ZhbF9k
aXJlY3QsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lz
dGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9m
aWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9wIDpw
dXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApA
QCAtNTY2LDYgKzU3OCw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTog
VmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAg
ICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBmbGFnczogUHV0QnlWYWxGbGFn
cywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAKaW5kZXggNjdmMmNlYzBhODBmMGI4MmZmZDJjZjBmNjk3ZjcwZTBkNTYyNmMxMy4u
MTVjMTNiZjdhODlmNjdkMjg1OWNiY2Y2MTYxYzMzOTA3ODM0YTc0NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMTEsNiAr
MjExLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxSZWdp
c3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRvclN0
cnVjdHVyZVBuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wRW51bWVyYXRvckdl
bmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBiYXNl
LCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wR2V0QnlWYWxEaXJlY3QsIGJhc2UsIHByb3BlcnR5KQog
ICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJpZGVz
SGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMoT3BJ
bnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtNDE5LDYgKzQyMCw3IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJbnN0
cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRzdCkKICAgICBERUZTKE9w
SW5zdGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZhbCwgZHN0KQorICAgIERF
RlMoT3BHZXRCeVZhbERpcmVjdCwgZHN0KQogICAgIERFRlMoT3BUeXBlb2YsIGRzdCkKICAgICBE
RUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERFRlMoT3BJc0VtcHR5LCBk
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCA1Nzc4OWJjMmM2Njlm
N2NhZDg4ODNkZWNmMzUxMzI3ODQ0OWM4MjRmLi5kNjM4NWIzYmZhZjE4MTE3ZGVlNjIwYzFjMWE3
MzRlNTcxMzNmNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5
cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQ
dXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJv
bFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRl
eCAxYjZlNzI2MjQwOWM4NTc0MzJkNGIyZmNmYWNmMTdjNzYwZDE3YjY0Li4wMmE2Y2YwNDhkMTI0
YTJlOWVlMGI1MzQwMmJkZmJkODI0ZTBjNzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEwMCw2ICsxMDAsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICB2KEFycmF5LCBudWxscHRyKSBcCiAgICAgdihhcHBseUZ1
bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxsRnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2
KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpCiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktf
VElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNzc2YThjY2E4MTEx
MTg0NzI4ZWZhNjAyNTc1MTZhOWVkMDQ0YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
dXRCeVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFncyBmbGFncykKK3sKKyAgICBD
b21tYVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBpZiAoZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVO
YW1lKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlTmFtZSIpOworICAgIGlmIChm
bGFncyAmIFB1dEJ5VmFsVGhyb3dJZkV4aXN0cykKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
VGhyb3dJZkV4aXN0cyIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4OTVi
Njc4NjA3YzlhMzA5MDkzMzcyODE4YzBlOGZmMzdmYWFkOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
U3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBQdXRCeVZhbEZs
YWdzIDogaW50MzJfdCB7CisgICAgUHV0QnlWYWxOb25lID0gMCwKKworICAgIFB1dEJ5VmFsUHJp
dmF0ZU5hbWUgPSAxLAorCisgICAgUHV0QnlWYWxUaHJvd0lmRXhpc3RzID0gMiwKKworICAgIC8v
IFRoZSBQcml2YXRlRmllbGRBZGQgb3BlcmF0aW9uIG11c3QgdGhyb3cgaWYgYW4gZW50cnkgZm9y
IHRoZSBwcml2YXRlIHJlY29yZCBkb2VzIG5vdCBleGlzdAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZp
ZWxkQWRkID0gUHV0QnlWYWxQcml2YXRlTmFtZSB8IFB1dEJ5VmFsVGhyb3dJZkV4aXN0cywKKyAg
ICBQdXRCeVZhbFByaXZhdGVGaWVsZFB1dCA9IFB1dEJ5VmFsUHJpdmF0ZU5hbWUsCit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFByaW50U3RyZWFt
OworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5VmFsRmxhZ3Mp
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
S2luZC5oCmluZGV4IDYxMTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1YzhhZjY0ODA4MGM0YzYuLjBk
MzliMDM1ODk2ZTllZjYxOTYzNDIzYTYxZTY4MTNlYjgwN2E1ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QgfTsKK2VudW0gUHV0S2lu
ZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RBZGRQcml2YXRlLCBEaXJlY3RQdXRQcml2YXRl
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXgg
NGRjMGU5MTViYzM4MjMxOWE5MmE5NjcxYjYzYjI4YjQ3MGRlODEzZC4uZTNmYWRkY2JhOTY2MjVl
OWRlNzMyYWRhNDgxN2NiMDE1ZTk1NGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBA
IC01OSw3ICs1OSw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0
ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1v
ZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gZXhlY3V0YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0
aW9ucygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFy
c2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHZtLCBz
b3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlw
dE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmco
KSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NF
UlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYTAxZDQ3ZDdkYzBiYzFi
NDgwMTY1YmJjZDI2NmQxMWE2YzIzMmI0NS4uNjkwZjk4Njg4NWUzMDRhNmI2ZGFkNzVmMzc2YmI3
MzA4NmNjMjViZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4NTcsNiArMTg1NywxMSBAQCBib29s
IEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0Vu
dHJ5KHZhck9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3Qo
KSA/IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSA6IFByb3BlcnR5QXR0cmlidXRlOjpOb25l
KSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50
cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRv
IHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3Ro
ZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1
ZS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZh
dGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhh
c0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjY0NCw5ICsyNjQ5LDE1IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7CisgICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1p
dCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBP
cFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSk7CisgICAg
T3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5
VmFsTm9uZSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNjY4LDYgKzI2NzksMTggQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lz
dGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1
dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxQ
cml2YXRlRmllbGRBZGQpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxE
aXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbFByaXZhdGVG
aWVsZFB1dCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46OmVt
aXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMjk4OTM3NDBhODVhNTg0OWUzOTcyODg1NjUwMzJh
ZTc0YmFmZjU1Yi4uOTY0M2E4NGJjY2I4MDYwNjM1ZjdmNmM3ZDY2YWIxYzZjNDY5OTc3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtNzg2LDExICs3ODYsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1
dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50ZXJu
YWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCogdmFs
dWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkQWRkKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lkIGVtaXRT
dXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCAzYjNjZDRiZTQ4OWJjMDI4Y2IwYmJiNDk1ZWQ0YzBiYzdlNTI2MjAyLi5lNjVh
NWQzOThkYzZiZWY4YTIwM2VjYTE4ZGU4NWViZGJjZjQ1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NDksOSAr
NTQ5LDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5
TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxK
U1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7Ci0gICAgLy8gRmFzdCBj
YXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KKyAg
ICAvLyBQcml2YXRlTmFtZXMgYXJlIGhvaXN0ZWQgYW5kIHdlIG5lZWQgdG8gZGVjbGFyZSB0aGVt
IGJlZm9yZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBoYW5kbGVkLgogICAgIFByb3BlcnR5TGlz
dE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisgICAgZm9y
ICg7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUg
JiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBl
IDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHkoZ2Vu
ZXJhdG9yLCBkc3QsICpwLT5tX25vZGUpOworICAgIH0KKworICAgIC8vIEZhc3QgY2FzZTogdGhp
cyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCisgICAgcCA9IHRo
aXM7CiAgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpD
b25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0lu
c3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApA
QCAtNzEzLDYgKzcyMywxOCBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAg
IGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1Rp
bWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9s
KTsKKworICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIs
IDApOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN5bWJvbCA9IGdl
bmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVh
dGVQcml2YXRlU3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBhcmd1bWVudHMsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9u
KCksIERlYnVnZ2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJh
dG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9T
Y29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHN5bWJvbC5nZXQoKSwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFt
ZSA9IGdlbmVyYXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lOwpAQCAtODQzLDE2ICs4NjUsNjYgQEAg
UmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0
ZXJJRCogcmV0OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAg
UmVnaXN0ZXJJRCogcmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERl
c3QuZ2V0KCksIGJhc2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShm
aW5hbERlc3QuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJl
dDsKIH0KIAorUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0
ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9p
ZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0
ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgp
LCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgfQor
CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBpZiAoIXRoaXNWYWx1
ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAg
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCB0aGlzVmFsdWUuZ2V0
KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1Zh
bHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGRzdCwgYmFz
ZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYg
KGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgp
LCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJs
ZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNj
b3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UsIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1
ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICBp
ZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVU
aGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1ZSk7Cit9CisKK1JlZ2lzdGVySUQqIEJh
c2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwg
YmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNjQwLDExICsxNzEyLDkgQEAg
UmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0T3B0aW9u
YWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lv
blN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0g
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lk
ZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9u
LmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpOworICAgIGVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rpb24uZ2V0KCksIGJhc2UuZ2V0KCkpOwog
CiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRP
cHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAgLTE5NjUsNiArMjAzNSwyMiBAQCBSZWdp
c3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0
b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNj
ZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1l
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAgIFZhcmlhYmxlIHZh
ciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
RGlyZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2
YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVt
aXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCks
IHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwg
dmFsdWUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmUoZHN0LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJh
c2VJc1N1cGVyKSB7CkBAIC0yMTg4LDYgKzIyNzQsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgp
LCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1l
KCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZh
dGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RU
aHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RH
ZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7Cisg
ICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdl
dCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUo
KSkgewogICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwpAQCAtMjky
NCwxMSArMzAyNSw3IEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmb3J3YXJkUmVzdWx0ID0gKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRv
ci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0Lmdl
dCgpKTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50
LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOworICAg
IGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0KCksIGZvcndhcmRSZXN1bHQuZ2V0
KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdC5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0
LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKIH0KQEAgLTI5NDAsMjMgKzMwMzcsMTUgQEAgUmVnaXN0
ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3QKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywg
bV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4
cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
ewotICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZSk7CisKICAgICBSZWdpc3RlcklE
KiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1f
cmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1fb3BlcmF0b3IpLCBPcGVyYW5kVHlw
ZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigp
KSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgZWxz
ZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVu
dCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1pdFB1dFBy
b3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFsdWUpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5nZXQoKTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDM1Miw2ICs0NDQxLDE3IEBAIHZv
aWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdldCgpLCB2YWx1ZS5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5Q29uZmln
dXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUgfCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTogewor
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm1faWRlbnQpOworICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFt
ZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlv
bigpICsgbV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJp
dmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRBZGQoZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTogewog
ICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xhc3MgZmll
bGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTgzMzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggZDFmYTBiMzE3ODc3MmVmZjlkZjQ0YmM1OGRlZjgxYmM5ZDJmMWIxZC4uYTNmMzRm
OGM2MjEyN2M5ZTg2ZDJhMDk1MGMwNTZiZjU5MWQ5ZGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNp
bmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
ICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NTliNzc4MGE2Y2M3ZGVjYTcwMjQ4OGY4
ZTFjMmEwYjY3MGJmOTlmLi41NGRhMzFhZTAwZTAwMmZmNmRjMjQ0MTFkZmQ1NDk2ZWNiNGFkY2Zk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBA
IC0yOTQsNiArMjk0LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJ
RCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IEkKIAogICAgIGNhc2Ugb3Bf
eWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25tZW50Ogor
ICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6IC8vIEZJWE1FOiBvcF9nZXRfYnlfdmFsX2Rp
cmVjdCB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNoaXAgY2xhc3MgZmllbGRzLgogICAg
IGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X2V2YWxfcHJvbG9n
dWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9wcm9sb2d1ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggN2QwNGFkNjEw
YjZjZjM2YmFkYzFiM2U4MGUzNWYxYTAxNmQ4YmQ4Mi4uNWY2MGExOTg2N2E0ZWY5ODRiYjc5Y2Yx
ZmQ4YzYyZTdlYTBhMjA1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTEzODEwLDcgKzEzODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9qaXQuY29k
ZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAgc2Ny
YXRjaEdQUiwgbV9qaXQuZWNtYU1vZGVGb3IoY29kZU9yaWdpbiksIHB1dEtpbmQpOworICAgICAg
ICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZvcihjb2RlT3JpZ2luKSwgcHV0S2luZCwgUHV0
QnlWYWxOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDY2OWU1MDE1
NmI3Y2UxNmQ3ZTYxZGNlZTkwOTI2YTBiNTE0Yjk5ZTQuLjIxNzdiNTgyZGVmZDE3OThhMzM1MTg5
ZWI3ZTk0N2Q1MDAwMDNhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAKQEAgLTM5ODQsNyArMzk4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsU2l0
ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdp
c3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJ
ZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUt
Pm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHV0QnlWYWxOb25l
KTsKIAogICAgICAgICAgICAgICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwog
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgppbmRleCA0YThiMWU1ODE0NDFmZGE2
ODc2ZTY1MmM5ODQ2MDFhMmIzYjc5ZDM0Li41MzBmOTdhNzU3YmJhMWEyNmVlZWM5OTAzZjljNTdk
YjBlYTU3MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RT
TC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQw
LDYgKzE0MCw3IEBAIG1vZHVsZSBEU0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQ
dXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0
QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggOTA0MGRmMzgyMDc2NGVkZjhk
NTE2MTFmODYwZmM0ZDQyNjU2YzE0OS4uOTVlNjFiY2IzOWM4NmQ2NjI1MmEzNzk5MTJkN2U4NDI0
NmE0ZmI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1
aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExp
c3QpIFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0
KSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGlt
aXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplKSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQ
dXRCeUlkUmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGM2ZTYxYjg5YmY5YTFhMTk1YzNlODM4NjRj
MWNhMTc4NDA4YTViMGYuLjJmMDM1MDQwODEwMGQ5YjMxYTAyMjA5ODg3MGIwMTUzMDg1M2NhOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hf
d2l0aF9zY29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpCiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAg
ICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AocHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5
X3ZhbF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9y
X2hvaXN0aW5nX2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
NjcxNjY2MWRmNGZhY2VhNWVmZWQ1ZjUxMDgxZjA1OWI2ZDI1M2Q0OS4uNWY3NmY4MzUyODcyMDUw
OWIxOWZlMjIxYjRkMGNlNmFmZWM5NDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0z
OTcsNiArMzk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1l
IE9wPgogICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBh
dGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAorICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHV0QnlWYWxGbGFncyBwdXRCeVZhbEZsYWdzKE9wKTsK
KwogICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1
dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhCeVZhbEluZm8q
LCBSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgY29uc3QgSWRlbnRpZmllciYs
IEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IGY0MTEwMjE3NjRkOTg5NjYy
MjNmZTE4MjBhMmYzODM5YWMzZTdiOWYuLjBkMTZiYTk2MGQ4ZmJmZmNhMDYxNjFiNjg5ZTMxMjU0
YTI2OGE0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMiBAQCB2b2lkIEpJVEdldEJ5
SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0
KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxT
aXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICBKU1ZhbHVlUmVncyBi
YXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFNb2RlIGVj
bWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQg
cHV0S2luZCwgUHV0QnlWYWxGbGFncyBmbGFncykKICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCiAg
ICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwg
dXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCiAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQog
ICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgLCBtX2ZsYWdzKGZsYWdzKQogewogICAgIG1f
c3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTIsNiArMTUz
LDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpJIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChVTkxJS0VMWShtX2ZsYWdzICYgUHV0
QnlWYWxQcml2YXRlTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3Qp
OworICAgICAgICBBU1NFUlQobV9lY21hTW9kZSA9PSBTdHJpY3RNb2RlKTsKKyAgICAgICAgaWYg
KG1fZmxhZ3MgJiBQdXRCeVZhbFRocm93SWZFeGlzdHMpCisgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgfQorCiAgICAgaWYg
KG1fZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERp
cmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0
aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmgKaW5kZXggMjZlNzAwZmJiN2FkMTgzYmUxYWNiYTczZjM3ZjZmYjQyZmVmY2Qw
ZS4uZjdhNTQ0YzkyMmRmODVjNjk4ZTA5YThhNzUxYzQyMDQ1NTAxYzFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApA
QCAtMTMxLDcgKzEzMiw3IEBAIHB1YmxpYzoKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAg
ICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lz
dGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHV0
QnlWYWxGbGFncyk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1i
bGVyJik7CiAgICAgCkBAIC0xNDAsNiArMTQxLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBF
Q01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFB1dEJ5VmFs
RmxhZ3MgbV9mbGFnczsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGlj
IEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKaW5kZXggMjNmZjVjODFjMWMwMzIyMmY5MTJhNDk5MzFmMjgzNmRhZGNmYWNiNy4uNzM5
MTRmNDA5ZmI5MTYzMWY4NjM3MWFiNGRlYTZkZmMxMzc1YmE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY2Myw2ICs2NjMsMTggQEAgQUxXQVlTX0lOTElORSBC
aW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNv
ZGUpCiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+
CitBTFdBWVNfSU5MSU5FIFB1dEJ5VmFsRmxhZ3MgSklUOjpwdXRCeVZhbEZsYWdzKE9wKQorewor
ICAgIHJldHVybiBQdXRCeVZhbE5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUg
UHV0QnlWYWxGbGFncyBKSVQ6OnB1dEJ5VmFsRmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFnczsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMjJiOWExZDFlOWMzMmQ5Y2Q5OTY5MWIxOTcz
MjA5NWNlOTIzNDY1Yi4uNTI5MjFlMzk1YjEyMjVlYTZhNTFjOGQ0MmRmZDU4NzRiMGMxYTMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC02Nzgs
NiArNjc4LDExMyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5v
blN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0
QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVu
dCwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCit9IC8vIGV4dGVybiAiQyIKKwordXNp
bmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk0mLCBDb2Rl
QmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9wZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJik+
OworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmllbGQoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBi
YXNlVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEpTVmFsdWUgdmFsdWUsIFB1dEtpbmQg
cHV0S2luZCwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJp
dmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgdWlkKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBBU1NFUlQo
cHV0S2luZCA9PSBEaXJlY3RBZGRQcml2YXRlIHx8IHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0
ZSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Cisg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+
aXNQcm94eSgpID8gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9i
YWxPYmplY3QsIGlkZW50LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0
eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKworICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUg
JiYgZm91bmQpCisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgZWxzZSBp
ZiAocHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRlICYmICFmb3VuZCkKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJy
b3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IDA7CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNs
b3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBD
b21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNl
T2JqZWN0LCBpZGVudCwgdmFsdWUsIHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAg
IGNhbGxiYWNrKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQor
CitleHRlcm4gIkMiIHsKKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQ
cml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBwdXRQcml2
YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIHVpZCwgdmFs
dWUsIERpcmVjdEFkZFByaXZhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0
ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBTdXBlclNh
bXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFjY2Vz
c1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1
ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZEJhc2UpKTsKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLCBiYXNlT2JqZWN0LCB1aWQsIHZhbHVlLCBEaXJlY3RBZGRQcml2YXRlLCBbPV0oVk0m
IHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3Bl
cnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9H
X0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBi
YXNlT2JqZWN0KSk7CisKKyAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3RhdGljX2Nhc3Q8QWNj
ZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKHZtLCBjb2RlQmxvY2ssIHN0cnVj
dHVyZSkpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9j
aywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJl
Y3RBZGRQcml2YXRlKTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZh
dGVTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVG
aWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgdWlkLCB2YWx1ZSwg
RGlyZWN0UHV0UHJpdmF0ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUo
dm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQWNjZXNzVHlw
ZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5
cGUpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQmFzZSkpOworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIGJhc2VPYmplY3QsIHVpZCwgdmFsdWUsIERpcmVjdFB1dFByaXZhdGUsIFsmXShWTSYgdm0s
IENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHV0UHJvcGVydHlT
bG90JiBwdXRTbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMo
KElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwg
YmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VP
YmplY3QpKTsKKworICAgICAgICBpZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NU
eXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcodm0sIGNvZGVCbG9jaywgc3RydWN0dXJl
KSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBi
YXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFB1
dFByaXZhdGUpOworICAgIH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Cit9CisKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNTdHJpbmdPclN5bWJvbChKU1Zh
bHVlIHZhbHVlKQogewogICAgIHJldHVybiB2YWx1ZS5pc1N0cmluZygpIHx8IHZhbHVlLmlzU3lt
Ym9sKCk7CkBAIC03ODEsNiArODg4LDE2IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
aXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKSB7CisgICAg
ICAgIC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBub24t
ZXhpc3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2UgYmVo
YXZpb3VyLgorICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpOwor
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
c2xvdCk7CisgICAgICAgIGlmIChmb3VuZCA9PSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlW
YWxUaHJvd0lmRXhpc3RzKSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgZm91bmQgPyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2Jh
bE9iamVjdCkgOiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBDb21tb25TbG93UGF0
aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IDYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAu
LmQ2OGQ1M2QxYmU2ZTQ0MWFkZDQ1MzljMzc0ZGM0YjMyZTFjZjg1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJp
Y3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQ
cml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCAyYmEwZmE2ODQ4YmNlODI5YWNkNjQxOTA1ZjA1ZjRi
ZDU0ZGNiZTM1Li5kNTI4YTM4MGY5MzIwZDFkYzlhZjE0NzlkY2FkNTY1MDllM2VkMWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
Mjg2LDcgKzI4Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtpbmQp
OworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kLCBwdXRCeVZhbEZsYWdzKGJ5dGVjb2Rl
KSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGVtaXRXcml0ZUJhcnJp
ZXIoYmFzZSwgdmFsdWUsIFNob3VsZEZpbHRlckJhc2UpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQo
anVtcCgpKTsKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCi0gICAgICAgIGRp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5v
dERpcmVjdCwgUHV0QnlWYWxOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4
IGI2NjlkZDhiN2FkMjZkM2Y3N2Q5Njg2ZGU2MDgzNDM0ZjM2ZGJjNTMuLjQ4NjFlYzE2YTZhY2Y3
ZDA1MDE1MGVkYzIwM2QyZjFjODExMDQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzcyLDcgKzM3Miw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0
S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCwgcHV0QnlWYWxGbGFncyhieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYwNiw3ICs2MDYsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksCi0gICAgICAgIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgcmVnVDEsIG1fY29kZUJsb2NrLT5lY21hTW9k
ZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFB1dEJ5VmFsTm9uZSk7CiAgICAgCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMTY0
YmMxNTQ4OWM4MTJlN2ZhODZhMTIzZDIyNTBmM2RiOTg3YTkzLi41Y2Q3YWY1MmQ4NzYwNjQ3YTJk
MGRlYTEzMGI2MDlmYzE0ODJiY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKQEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGljIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBw
cm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnQKICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0QWRkUHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGly
ZWN0UHV0UHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZVN0cmljdDsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7CiAgICAg
fQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTUzMiw2ICs1MzYsMTAgQEAgc3RhdGlj
IFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKGNvbnN0IFB1dFByb3AKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RB
ZGRQcml2YXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRl
U3RyaWN0T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFB1dFByaXZhdGUp
CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3RPcHRp
bWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKICAg
ICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtNjI0LDYgKzYzMiw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAg
aWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChw
dXRLaW5kICE9IERpcmVjdFB1dFByaXZhdGUgJiYgcHV0S2luZCAhPSBEaXJlY3RBZGRQcml2YXRl
KTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZv
ckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKQEAgLTY0MSw2ICs2NTAsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0s
IGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKGlkZW50KSwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3Qu
aXNDYWNoZWFibGVTZXR0ZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA3MTI1YmQ0ZjUxYWY4MTViOWQ1
MDY2MWViN2EzYzI0MWE1YWQ2MDNiLi43NTY4ZDIzNmQzYWZiNWZjMTRhNjM4NzQ1MTg3NmY4OTky
Zjk0NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dD
aGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hh
aW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDJiZmZjMzgxNjNmZTMxYmU5NDFiZWQ2YTVmYjU2ZDI5OGJlYjYyMjcuLmMxMzRlMzdl
NDlkNDViMWQ1NzVlYzQ4ZDEzYWZmOWMzMWU1Y2U2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA1OSwxNCArMTA1OSwxNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgUkVM
RUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lQWNjZXNzID0gYnl0
ZWNvZGUubV9mbGFncyAmIFB1dEJ5VmFsUHJpdmF0ZU5hbWU7CiAgICAgaWYgKExJS0VMWShzdWJz
Y3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1
ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQz
Ml90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBB
U1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOworICAgICAgICBBU1NFUlQoIWlz
UHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChn
bG9iYWxPYmplY3QsIHN1YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0Lmlz
RG91YmxlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lQWNjZXNzKTsKICAgICAg
ICAgZG91YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CiAgICAg
ICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1
YnNjcmlwdEFzRG91YmxlKTsKICAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNj
cmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7CkBAIC0xMDgwLDkg
KzEwODMsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGly
ZWN0KQogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAg
TExJTlRfRU5EKCk7CiAKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlz
UHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwog
ICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQcml2YXRlTmFtZUFjY2VzcykgeworICAgICAgICAg
ICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAvLyBUaHJv
dyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5nIHRvIHN0b3JlIHRvIGEgbm9uLWV4aXN0ZW50IHBy
aXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxhciB0byBhIFREWi1saWtlIGJlaGF2aW91ci4KKyAg
ICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgc2xvdCk7CisgICAgICAgICAgICBpZiAoZm91bmQgPT0gYm9vbChieXRlY29kZS5tX2Zs
YWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3RzKSkKKyAgICAgICAgICAgICAgICBMTElOVF9USFJP
Vyhmb3VuZCA/IGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSA6
IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICB9
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxP
YmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA2MjY1MmE2NjIzNWViYzUyNzkwYWYxNzBmMGRmYjhhNGRiNDAwMTQyLi42
Yjc5ZTg4ODM3NWE1MGU1MzUzZmVmODc4YTI3MjQwZWRhMjllMWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTUwOSw2NCArMTUwOSw2OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9p
ZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQp
CiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5h
bWUsIG9zckV4aXRQb2ludCkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgJW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQy
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRh
ZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgYXJy
YXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0
NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93
KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MworICAgICAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAu
b3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBl
LCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3Vz
OgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
IGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5v
cEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAu
b3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0
QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRuZXF1
biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQg
YmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAgZmQyaWkgZnQwLCB0MSwgdDIKKyAgICAg
ICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKKworICAg
IC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0
MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFn
ZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5v
cEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFn
T2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisKKyAgICAub3BHZXRCeVZhbERvbmU6
CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFsTm90RW1wdHk6CisgICAgICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1
LCB0MiwgdDEpCisgICAgICAgIGRpc3BhdGNoKCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRC
eVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotICAgIGdldChtX3By
b3BlcnR5LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Mywg
SW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0
dGVyZmx5W3QwXSwgdDMKLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEg
dDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENv
bnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXND
b250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3QzLCB0MSwgOF0sIHQxCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5v
dENvbnRpZ3VvdXM6Ci0gICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERv
dWJsZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2Fk
ZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93
Ci0gICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgotICAgIGZk
MmlpIGZ0MCwgdDEsIHQyCi0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBqbXAgLm9wR2V0QnlWYWxO
b3RFbXB0eQotCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFnZVNo
YXBlLCB0MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdwotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BH
ZXRCeVZhbFNsb3cKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0
W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxv
YWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLQotLm9wR2V0QnlWYWxEb25lOgotICAgIGdldChtX2Rz
dCwgdDApCi0gICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93Ci0ub3BH
ZXRCeVZhbE5vdEVtcHR5OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0g
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goKQorICAgIC5vcEdldEJ5VmFs
U2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0
Y2goKQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCgpCisgICAgLm9zclJldHVyblBvaW50OgorICAg
ICAgICBvc3JFeGl0UG9pbnQoc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBlbmQpCitlbmQK
IAotLm9zclJldHVyblBvaW50OgorZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwsIG1hY3JvKHNpemUsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUp
CiAgICAgbWV0YWRhdGEodDIsIHQzKQogICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0Miwg
cjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlWYWxPcChnZXRfYnlf
dmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVj
dCwgbWFjcm8oYSwgYiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAzNDE2ODBhYmVlODE5YTI1MmM3N2VlNWY2ZjA5
NmVkNTdlMTFjOTQ0Li5jZTRhZTNmZjI2MjQwYWQ4NGQ3MjVlNjQyZjI1ZGQxMjRjN2EyMzA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTQ5MiwxODQgKzE0OTIsMTg3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IHNsb3dQYXRoTmFtZSkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwg
JW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQorICAgICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBzdG9yZXEgcmVzdWx0LCBb
Y2ZyLCBzY3JhdGNoLCA4XQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3Ql
LCB0NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKLSAgICAgICAg
c3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCByZXN1bHQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQKKyAgICAg
ICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAgICAg
b3JxIG51bWJlclRhZywgcmVzdWx0CisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQs
IHNjcmF0Y2gpCisgICAgICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVz
dWx0LCBzY3JhdGNoKQotICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKLSAgICAgICAgZmlu
aXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQotICAgIGVuZAorICAgICAgICBtYWNybyBmaW5p
c2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgICAg
IGZkMnEgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICAgICAgc3VicSBudW1iZXJUYWcsIHNjcmF0
Y2gxCisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAg
ICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
MSwgc2NyYXRjaDIpCi0gICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdWJx
IG51bWJlclRhZywgc2NyYXRjaDEKLSAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNj
cmF0Y2gyKQotICAgIGVuZAorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0
YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAotICAgIGdldCht
X2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwg
Lm9wR2V0QnlWYWxTbG93KQotCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BH
ZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0
KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0
MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKLQotICAgIGxvYWRDYWdl
ZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKLSAgICBt
b3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCi0KLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0
MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAg
YmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5v
cEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRC
eVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0Mgot
ICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQot
Lm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9w
R2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxT
bG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAg
YmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmQycSBmdDAsIHQyCi0gICAg
c3VicSBudW1iZXJUYWcsIHQyCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotICAgIAotLm9wR2V0
QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEg
dDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRC
eVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5
VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3Zl
Y3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotCi0ub3BH
ZXRCeVZhbERvbmU6Ci0gICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgdDUsIHQyKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgbW92ZSB0MCwg
dDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUsIHQyLCB0NSwgdDEpCiAKLS5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0g
ICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlz
IGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KLSAgICBsb2FkYiBKU0NlbGw6
Om1fdHlwZVt0MF0sIHQyCi0gICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgotICAgIGJp
YWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRC
eVZhbFNsb3cKLSAgICAKLSAgICAjIFN3ZWV0LCBub3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSB0
eXBlZCBhcnJheS4gRG8gc29tZSBiYXNpYyB0aGluZ3Mgbm93LgorICAgICAgICBnZXQobV9wcm9w
ZXJ0eSwgdDMpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0Mywg
dDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBpZiBBUk02
NEUKLSAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKLSAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3
Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIGxlbmd0aAot
ICAgICAgICBiaWFlcSB0MSwgbGVuZ3RoLCAub3BHZXRCeVZhbFNsb3cKLSAgICBlbHNlCi0gICAg
ICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0
aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4K
LSAgICAgICAgYmlhZXEgdDEsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIC5vcEdl
dEJ5VmFsU2xvdwotICAgIGVuZAorICAgICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0Ojpt
X2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCisgICAgICAgIG1vdmUgVGFnTnVtYmVyLCBu
dW1iZXJUYWcKIAotICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQz
Ci0gICAgY2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgdDAsIHNjcmF0Y2gpCi0KLSAgICAjIE5v
dyBiaXNlY3QgdGhyb3VnaCB0aGUgdmFyaW91cyB0eXBlczoKLSAgICAjICAgIEludDhBcnJheVR5
cGUsCi0gICAgIyAgICBVaW50OEFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQ4Q2xhbXBlZEFycmF5
VHlwZSwKLSAgICAjICAgIEludDE2QXJyYXlUeXBlLAotICAgICMgICAgVWludDE2QXJyYXlUeXBl
LAotICAgICMgICAgSW50MzJBcnJheVR5cGUsCi0gICAgIyAgICBVaW50MzJBcnJheVR5cGUsCi0g
ICAgIyAgICBGbG9hdDMyQXJyYXlUeXBlLAotICAgICMgICAgRmxvYXQ2NEFycmF5VHlwZSwKLQot
ICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0
QnlWYWxBYm92ZVVpbnQxNkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5
cGUgLi4gVWludDE2QXJyYXlUeXBlLgotICAgIGJpYSB0MiwgVWludDhDbGFtcGVkQXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJh
eQotCi0gICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRB
cnJheVR5cGUKLSAgICBiaWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBl
LCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5Ci0KLSAgICAjIFdlIGhh
dmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRB
cnJheToKLSAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQotCi0gICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKLQotLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDhD
bGFtcGVkQXJyYXlUeXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdl
dEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJheToKLSAg
ICAjIFdlIGhhdmUgZWl0aGVyIEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5
cGUuCi0gICAgYmlhIHQyLCBJbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5v
cEdldEJ5VmFsVWludDE2QXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4KLSAg
ICBsb2FkaHNpIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkK
LQotLm9wR2V0QnlWYWxVaW50MTZBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBl
LgotICAgIGxvYWRoIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKLQotLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2Yg
SW50MzJBcnJheVR5cGUgLi4gRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBiaWEgdDIsIFVpbnQzMkFy
cmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JG
bG9hdDY0QXJyYXkKLQotICAgICMgV2UgaGF2ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWlu
dDMyQXJyYXlUeXBlCi0gICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJh
eVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5
VHlwZS4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0
MCwgdDEpCi0KLS5vcEdldEJ5VmFsVWludDMyQXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQzMkFy
cmF5VHlwZS4KLSAgICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCBiZWNhdXNlIG9mIGxhcmdl
IHVuc2lnbmVkIHZhbHVlcy4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBiaWx0IHQw
LCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBpbXBs
ZW1lbnQgaW4gTExJbnQuCi0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRC
eVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2YgRmxv
YXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBTYWRseSwgd2UgY2Fubm90IGhhbmRs
ZSBGbG9hdDMyQXJyYXkKLSAgICAjIGlubGluZSB5ZXQuIFRoYXQgd291bGQgcmVxdWlyZSBzb21l
IG9mZmxpbmVhc20gY2hhbmdlcy4KLSAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmly
c3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxTbG93Ci0KLSAgICAjIFdlIGhhdmUgRmxvYXQ2
NEFycmF5VHlwZS4KLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAs
IGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwg
dDEpCi0KLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgYW5kaSBJbmRleGluZ1NoYXBl
TWFzaywgdDIKKyAgICAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRp
Z3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RD
b250aWd1b3VzCisKKyAgICAub3BHZXRCeVZhbElzQ29udGlndW91czoKKyAgICAgICAgYmlhZXEg
dDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQor
ICAgICAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlW
YWxTbG93CisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFsTm90
Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5v
dERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Cisg
ICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAg
ICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGZkMnEgZnQw
LCB0MgorICAgICAgICBzdWJxIG51bWJlclRhZywgdDIKKyAgICAgICAgam1wIC5vcEdldEJ5VmFs
RG9uZQorICAgICAgICAKKyAgICAub3BHZXRCeVZhbE5vdERvdWJsZToKKyAgICAgICAgc3ViaSBB
cnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZQor
ICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGdl
dChtX2RzdCwgdDApCisgICAgICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMsIHQx
LCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CisKKyAgICAub3BHZXRC
eVZhbERvbmU6CisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCisgICAgICAgIHZhbHVl
UHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgdDUsIHQyKQorICAgICAgICBkaXNwYXRjaCgpCiAKLS5v
c3JSZXR1cm5Qb2ludDoKLSAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0
X2J5X3ZhbCwgc2l6ZSkKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKKyAgICAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBh
IHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4K
KyAgICAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbdDBdLCB0MgorICAgICAgICBzdWJpIEZpcnN0
VHlwZWRBcnJheVR5cGUsIHQyCisgICAgICAgIGJpYWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlU
eXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgCisgICAgICAg
ICMgU3dlZXQsIG5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBzb21l
IGJhc2ljIHRoaW5ncyBub3cuCiAKLWVuZCkKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAg
ICBjb25zdCBsZW5ndGggPSB0NgorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3CisgICAg
ICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCBsZW5ndGgKKyAg
ICAgICAgICAgIGJpYWVxIHQxLCBsZW5ndGgsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBlbHNl
CisgICAgICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRl
ZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBw
bGF0Zm9ybXMuCisgICAgICAgICAgICBiaWFlcSB0MSwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVu
Z3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGVuZAorCisgICAgICAgIGxvYWRwIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzCisgICAgICAgIGNhZ2VkUHJpbWl0aXZl
KHQzLCBsZW5ndGgsIHQwLCBzY3JhdGNoKQorCisgICAgICAgICMgTm93IGJpc2VjdCB0aHJvdWdo
IHRoZSB2YXJpb3VzIHR5cGVzOgorICAgICAgICAjICAgIEludDhBcnJheVR5cGUsCisgICAgICAg
ICMgICAgVWludDhBcnJheVR5cGUsCisgICAgICAgICMgICAgVWludDhDbGFtcGVkQXJyYXlUeXBl
LAorICAgICAgICAjICAgIEludDE2QXJyYXlUeXBlLAorICAgICAgICAjICAgIFVpbnQxNkFycmF5
VHlwZSwKKyAgICAgICAgIyAgICBJbnQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50MzJB
cnJheVR5cGUsCisgICAgICAgICMgICAgRmxvYXQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBG
bG9hdDY0QXJyYXlUeXBlLAorCisgICAgICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmly
c3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5CisKKyAgICAgICAg
IyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uIFVpbnQxNkFycmF5VHlwZS4KKyAgICAg
ICAgYmlhIHQyLCBVaW50OENsYW1wZWRBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAu
b3BHZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIG9u
ZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRBcnJheVR5cGUKKyAgICAgICAgYmlh
IHQyLCBJbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50
OEFycmF5T3JVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBJbnQ4QXJyYXlU
eXBlLgorICAgICAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFy
cmF5OgorICAgICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlw
ZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBVaW50
OEFycmF5VHlwZS4KKyAgICAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCisgICAgICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXk6Cisg
ICAgICAgICMgV2UgaGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGxvYWRiIFt0
MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BH
ZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgZWl0aGVy
IEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGJpYSB0
MiwgSW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQx
NkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDE2QXJyYXlUeXBlLgorICAgICAgICBsb2Fk
aHNpIFt0MywgdDEsIDJdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisK
KyAgICAub3BHZXRCeVZhbFVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgVWludDE2QXJy
YXlUeXBlLgorICAgICAgICBsb2FkaCBbdDMsIHQxLCAyXSwgdDAKKyAgICAgICAgZmluaXNoSW50
R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgorICAg
ICAgICAjIFdlIGhhdmUgb25lIG9mIEludDMyQXJyYXlUeXBlIC4uIEZsb2F0NjRBcnJheVR5cGUu
CisgICAgICAgIGJpYSB0MiwgVWludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlPckZsb2F0NjRBcnJheQorCisgICAgICAgICMgV2UgaGF2
ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWludDMyQXJyYXlUeXBlCisgICAgICAgIGJpYSB0
MiwgSW50MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQz
MkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDMyQXJyYXlUeXBlLgorICAgICAgICBsb2Fk
aSBbdDMsIHQxLCA0XSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisg
ICAgLm9wR2V0QnlWYWxVaW50MzJBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQzMkFycmF5
VHlwZS4KKyAgICAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJn
ZSB1bnNpZ25lZCB2YWx1ZXMuCisgICAgICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAorICAgICAg
ICBiaWx0IHQwLCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2Fy
ZCB0byBpbXBsZW1lbnQgaW4gTExJbnQuCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKKworICAgIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXk6CisgICAgICAg
ICMgV2UgaGF2ZSBvbmUgb2YgRmxvYXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBT
YWRseSwgd2UgY2Fubm90IGhhbmRsZSBGbG9hdDMyQXJyYXkKKyAgICAgICAgIyBpbmxpbmUgeWV0
LiBUaGF0IHdvdWxkIHJlcXVpcmUgc29tZSBvZmZsaW5lYXNtIGNoYW5nZXMuCisgICAgICAgIGJp
ZXEgdDIsIEZsb2F0MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZh
bFNsb3cKKworICAgICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KKyAgICAgICAgbG9h
ZGQgW3QzLCB0MSwgOF0sIGZ0MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZh
bFNsb3cKKyAgICAgICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwgdDEpCisKKyAgICAu
b3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAg
ICAgIGRpc3BhdGNoKCkKKworICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgZ2V0dGVyU2V0
dGVyT1NSRXhpdFJldHVyblBvaW50KG9wXyVvcGNvZGVOYW1lJSwgc2l6ZSkKKyAgICAgICAgbWV0
YWRhdGEodDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1LCBy
MCkKKyAgICAgICAgcmV0dXJuKHIwKQorICAgIGVuZCkKK2VuZAorCitnZXRCeVZhbE9wKGdldF9i
eV92YWwsIE9wR2V0QnlWYWwsIF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIAorZ2V0QnlW
YWxPcChnZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRf
YnlfdmFsX2RpcmVjdCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNGM2
MTczMGVkZWM4YWRlYmU5NWQ2OWZhYTcwNWVjMWMyMGJmNWU5OC4uODM1Y2QwMzA4MjkxYTJjODc1
ZjI5ZGVkNmIxZGJmNjljYjY3MTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciogcHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBE
b3RUeXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAg
aWYgKGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAgICAgICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0eSgp
OwogICAgICAgICAKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAg
ICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNz
b3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHksIHR5cGUpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBu
b2RlOwogICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bm9kZS0+aXNBc3NpZ25tZW50TG9jYXRpb24oKTsKICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0
ZUxvY2F0aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
bm9kZS0+aXNQcml2YXRlTG9jYXRpb24oKTsKKyAgICB9CisKICAgICBib29sIGlzT2JqZWN0TGl0
ZXJhbChjb25zdCBFeHByZXNzaW9uJiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGUt
PmlzT2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQzOCwxNSArMTQ0MywxNSBAQCBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZSA9IG51bGxw
dHI7CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpIHx8
IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Y2FsbFByaXZhdGVOYW1lKCkpKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hp
bGREZXB0aCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRv
dC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5
Q2hpbGREZXB0aCk7CiAgICAgZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5
UHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRoZSBi
eXRlY29kZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAg
ICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQotICAg
ICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwog
ICAgIH0KICAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRp
dm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpAQCAt
MTU3MSw5ICsxNTc2LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAgICBBU1NFUlQobG9j
LT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRp
Y19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0g
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3Qo
KSwgc3RhcnQsIGVuZCk7CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0
LCBlbmQpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBkb3QtPnR5cGUoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0
YXJ0LCBlbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGIwODM1ZjMwNDUxN2Q3OWU5MjFjZWIwNjYy
Zjc5Mjg3ZDdiY2NmMWQuLjUzMjc1M2E5MmRmMmIyNjk5NDc0NDBkN2RlMTkxYmU4NTc5YjU1Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05MzksMTAgKzkzOSwx
MSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQg
PT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwog
ICAgICAgICB9CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVu
dCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworCisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAgICBib29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1
cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKICAgICBib29sIGlzV2Vs
bEtub3duU3ltYm9sID0gZmFsc2U7Ci0gICAgaWYgKGlzUHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAo
aXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
KTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnQCcpIHsKQEAg
LTk1Myw3ICs5NTQsMTAgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4g
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAKICAgICBjb25z
dCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJMaW5lU3RhcnQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7Ci0gICAg
CisKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxl
IChpc0lkZW50UGFydChtX2N1cnJlbnQpKQogICAgICAgICBzaGlmdCgpOwogICAgIApAQCAtOTY2
LDcgKzk3MCw4IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgCiAgICAgaWYgKHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAgICAg
IGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmllclN0
YXJ0OwotICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uICYmIGlzUHJpdmF0ZU5h
bWUpIHsKKyAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQsIGlk
ZW50aWZpZXJMZW5ndGgpOworICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uICYm
IGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgICAgIGlmIChpc1dlbGxLbm93blN5bWJvbCkKICAg
ICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllcihtX3ZtLCBtX3Zt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5bWJvbChpZGVu
dGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTk4
OCwyMCArOTkzLDIxIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1h
aW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFn
czo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgYXV0byBp
ZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250
YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUp
IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgICAg
ICBBU1NFUlQoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAgICAg
ICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRva2Vu
ID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAgICAg
ICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUg
PyB0b2tlbiA6IElERU5UOworICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9J
Rl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfQog
Ci0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBsYXRl
IDw+CkBAIC0xMDE2LDEwICsxMDIyLDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAg
ICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1v
ZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBp
c1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b247CisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOworICAgIGJv
b2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uOwogICAgIGJvb2wgaXNXZWxsS25vd25TeW1ib2wgPSBmYWxzZTsKLSAgICBpZiAoaXNQ
cml2YXRlTmFtZSkgeworICAgIGlmIChpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVCht
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICdAJykgewpAQCAtMTAzMywxNCArMTA0MCwxNyBAQCB0ZW1wbGF0ZSA8Ym9v
bCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFVDaGFyPjo6cAogICAgIGludCBpZGVudGlmaWVyTGluZVN0YXJ0ID0gY3VycmVudExpbmVTdGFy
dE9mZnNldCgpOwogCiAgICAgVUNoYXIgb3JBbGxDaGFycyA9IDA7Ci0gICAgCisKKyAgICBpZiAo
aXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxlIChpc0lkZW50UGFy
dChtX2N1cnJlbnQpKSB7CiAgICAgICAgIG9yQWxsQ2hhcnMgfD0gbV9jdXJyZW50OwogICAgICAg
ICBzaGlmdCgpOwogICAgIH0KICAgICAKICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdc
XCcpKSB7Ci0gICAgICAgIEFTU0VSVCghaXNQcml2YXRlTmFtZSk7CisgICAgICAgIEFTU0VSVCgh
aXNCdWlsdGluTmFtZSk7CiAgICAgICAgIHNldE9mZnNldEZyb21Tb3VyY2VQdHIoaWRlbnRpZmll
clN0YXJ0LCBpZGVudGlmaWVyTGluZVN0YXJ0KTsKICAgICAgICAgcmV0dXJuIHBhcnNlSWRlbnRp
ZmllclNsb3dDYXNlPHNob3VsZENyZWF0ZUlkZW50aWZpZXI+KHRva2VuRGF0YSwgbGV4ZXJGbGFn
cywgc3RyaWN0TW9kZSk7CiAgICAgfQpAQCAtMTA1NCw3ICsxMDY0LDcgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxVQ2hhcj46OnAKICAgICAKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3Bh
cnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBj
dXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7Ci0gICAgICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24gJiYgaXNQcml2YXRlTmFtZSkgeworICAgICAgICBpZiAobV9wYXJz
aW5nQnVpbHRpbkZ1bmN0aW9uICYmIGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgICAgIGlmIChp
c1dlbGxLbm93blN5bWJvbCkKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtl
SWRlbnRpZmllcihtX3ZtLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tV
cFdlbGxLbm93blN5bWJvbChpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpKTsKICAg
ICAgICAgICAgIGVsc2UKQEAgLTEwNzksNyArMTA4OSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+
OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogICAg
IAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhl
ckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQ
cml2YXRlTmFtZSkgeworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29y
ZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAg
ICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50
cnkoKmlkZW50KTsKQEAgLTEwOTksOCArMTEwOSwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5U
eQogewogICAgIHRva2VuRGF0YS0+ZXNjYXBlZCA9IHRydWU7CiAgICAgYXV0byBpZGVudGlmaWVy
U3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gKmlk
ZW50aWZpZXJTdGFydCA9PSAnIyc7CisgICAgYXV0byBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1l
ID8gUFJJVkFURU5BTUUgOiBJREVOVDsKICAgICBib29sIGJ1ZmZlclJlcXVpcmVkID0gZmFsc2U7
CiAKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIHdoaWxl
ICh0cnVlKSB7CiAgICAgICAgIGlmIChMSUtFTFkoaXNJZGVudFBhcnQobV9jdXJyZW50KSkpIHsK
ICAgICAgICAgICAgIHNoaWZ0KCk7CkBAIC0xMTIwLDcgKzExMzUsOCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEpTVG9rZW5UeQogICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHBhcnNlVW5pY29kZUVzY2FwZSgp
OwogICAgICAgICBpZiAoVU5MSUtFTFkoIWNoYXJhY3Rlci5pc1ZhbGlkKCkpKQogICAgICAgICAg
ICAgcmV0dXJuIGNoYXJhY3Rlci5pc0luY29tcGxldGUoKSA/IFVOVEVSTUlOQVRFRF9JREVOVElG
SUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LIDogSU5WQUxJRF9JREVOVElGSUVSX1VOSUNPREVf
RVNDQVBFX0VSUk9SVE9LOwotICAgICAgICBpZiAoVU5MSUtFTFkobV9idWZmZXIxNi5zaXplKCkg
PyAhaXNJZGVudFBhcnQoY2hhcmFjdGVyLnZhbHVlKCkpIDogIWlzSWRlbnRTdGFydChjaGFyYWN0
ZXIudmFsdWUoKSkpKQorICAgICAgICBib29sIGlzSWRlbnRpZmllclN0YXJ0ID0gaXNQcml2YXRl
TmFtZSA/IG1fYnVmZmVyMTYuc2l6ZSgpID09IDEgOiAhbV9idWZmZXIxNi5zaXplKCk7CisgICAg
ICAgIGlmIChVTkxJS0VMWShpc0lkZW50aWZpZXJTdGFydCA/ICFpc0lkZW50U3RhcnQoY2hhcmFj
dGVyLnZhbHVlKCkpIDogIWlzSWRlbnRQYXJ0KGNoYXJhY3Rlci52YWx1ZSgpKSkpCiAgICAgICAg
ICAgICByZXR1cm4gSU5WQUxJRF9JREVOVElGSUVSX1VOSUNPREVfRVNDQVBFX0VSUk9SVE9LOwog
ICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJlY29yZFVu
aWNvZGVDb2RlUG9pbnQoY2hhcmFjdGVyLnZhbHVlKCkpOwpAQCAtMTE0OSwxMyArMTE2NSwxMyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB0ZW1wbGF0ZTxib29sIHNob3VsZENy
ZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5UeQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFp
blRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICBy
ZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBKU1Rv
a2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1
ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmlj
dE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gYnVmZmVyUmVxdWlyZWQgPyBVTkVYUEVDVEVEX0VT
Q0FQRV9FUlJPUlRPSyA6IHRva2VuOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICBy
ZXR1cm4gaWRlbnRUeXBlOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNoYXJhY3Rl
clJlcXVpcmVzUGFyc2VTdHJpbmdTbG93Q2FzZShMQ2hhciBjaGFyYWN0ZXIpCkBAIC0yNDMzLDE0
ICsyNDQ5LDIxIEBAIHN0YXJ0OgogICAgICAgICBtX2hhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9r
ZW4gPSB0cnVlOwogICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBz
dGFydDsKLSAgICBjYXNlIENoYXJhY3Rlckhhc2g6CisgICAgY2FzZSBDaGFyYWN0ZXJIYXNoOiB7
CiAgICAgICAgIC8vIEhhc2hiYW5nIGlzIG9ubHkgcGVybWl0dGVkIGF0IHRoZSBzdGFydCBvZiB0
aGUgc291cmNlIHRleHQuCi0gICAgICAgIGlmIChwZWVrKDEpID09ICchJyAmJiAhY3VycmVudE9m
ZnNldCgpKSB7CisgICAgICAgIGF1dG8gbmV4dCA9IHBlZWsoMSk7CisgICAgICAgIGlmIChuZXh0
ID09ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAg
ICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsK
ICAgICAgICAgfQorICAgICAgICAvLyBPdGhlcndpc2UsIGl0IGNvdWxkIGJlIGEgdmFsaWQgUHJp
dmF0ZU5hbWUuCisgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSAm
JiAoaXNJZGVudFN0YXJ0KG5leHQpIHx8IG5leHQgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgIGxl
eGVyRmxhZ3MucmVtb3ZlKExleGVyRmxhZ3M6OkRvbnRCdWlsZEtleXdvcmRzKTsKKyAgICAgICAg
ICAgIGdvdG8gcGFyc2VJZGVudDsKKyAgICAgICAgfQogICAgICAgICBnb3RvIGludmFsaWRDaGFy
YWN0ZXI7CisgICAgfQogICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoK
ICAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgICAgIGdvdG8g
cGFyc2VJZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmgKaW5kZXggZmQ5N2EwY2E5MzVlN2U1Nzc4YTA5Mzg1MDIyZjk4Njc4MDE0YTMyNC4u
MDZlNjAyYTdiZGE3MmJiMjgyMTk4ZjI5N2Q4M2E0MWFhOGU1MTI0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTMyNywxMCArMzI3
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNj
ZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIGlu
bGluZSBCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RU
eXBlIHR5cGUpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICAgICAgLCBtX3R5cGUo
dHlwZSkKKyAgICB7CisgICAgfQorCisgICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNj
ZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlKQorICAgICAgICA6
IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICB7CiAgICAgfQog
ICAgIApAQCAtNDE4LDExICs0MjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9k
ZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFz
ZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3Mp
CiAgICAgewogICAgIH0KQEAgLTQzNywxNCArNDQxLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisg
ICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJn
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAg
ICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBE
b3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKKyAg
ICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwg
YXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgICAgICAsIG1fZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKICAg
ICB7CiAgICAgfQpAQCAtNzUwLDIxICs3NTQsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWdu
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwg
aWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX3JpZ2h0
SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFJlYWRNb2RpZnlE
b3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUg
dHlwZSwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAg
ICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQot
ICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAg
ICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwg
bV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDlkMWNmYTRmMTc2MTMwMmEzM2JiYWUzMWVmNjBm
ZGZjYWYyMDdkZjUuLjExYmY0YTY4NGExYmQ5YTA5M2ViOGViMTZlMWUxMzcyNjYyMGQzOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAg
Ym9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wTmFtZSkKIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRl
TGV4aWNhbFNjb3BlRm9yQ2xhc3MoUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKIHsKICAgICB3aGls
ZSAobGlzdCkgewotICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVs
ZCgpKQorICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIHx8
IGxpc3QtPm1fbm9kZS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgbGlzdCA9IGxpc3QtPm1fbmV4dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKaW5kZXggNDlhYWM0NzM1ODA3MGUzZjM4Yjc4YzIxMmYwMjMyOTEzNWE5NmZiYS4u
MjYzZjY1ZmQyZTYyZWQwYTk4YWJjOThkZDQ1NWZhMGM0NjM3MGU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTgyLDYgKzE4Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0gICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0
ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNMb2NhdGlvbigpOyB9CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWduUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtNzEyLDcgKzcxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVu
dW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGlj
LCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNl
ckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhf
dCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBT
aG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhf
dCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBT
aG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OwogICAgICAgICBlbnVt
IFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQ
cm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0
VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzMxLDYgKzczMiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0
dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAg
IGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xh
c3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNP
dmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVw
bGljYXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ICYgUHJpdmF0ZTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkg
Y29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAg
ICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5C
eUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc0MSw3ICs3NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAg
ICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CiAg
ICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25l
ZCBtX3B1dFR5cGUgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFn
IHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CkBAIC04MTMsOSArODE1LDMwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7
CiAgICAgfTsKIAotICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBlbnVtIGNs
YXNzIERvdFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSB9OworICAgIGNsYXNzIEJhc2VEb3ROb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vz
c29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwor
CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50OyB9CisgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQorICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
RG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0KKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJv
cGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQcm9w
ZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZh
bHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHZhbHVlKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fYmFzZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAgICAgICAg
RG90VHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5h
bCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwog
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50OyB9CkBAIC04MjQsMTAgKzg0Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQogICAg
ICAgICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFNwcmVhZEV4cHJlc3Npb25O
b2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewpAQCAtOTQwLDkgKzk2MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0
aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVT
dWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1Ymxp
YyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2Rl
KiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgRnVuY3Rp
b25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKQEAgLTk1MCw4ICs5NzEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdz
OwogICAgIH07CiAKQEAgLTk4OCw3ICsxMDA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxE
b3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIENhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1v
c3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpA
QCAtOTk3LDcgKzEwMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXpl
X3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKKyAgICAgICAgQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxs
T3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAtMTQz
MiwyOCArMTQ1MSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMgOiAxOwogICAgIH07CiAKLSAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
eworICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3Np
Z25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAg
IEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVu
dDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIGJvb2wgbV9yaWdo
dEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBm
aW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhIHsKKyAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNl
RG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERv
dFR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIHVuc2lnbmVkIG1fb3BlcmF0b3IgOiAzMTsK
ICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjIzNiw3ICsyMjUx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNz
IFR5cGUgeyBOYW1lLCBDb21wdXRlZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsg
TmFtZSwgUHJpdmF0ZU5hbWUsIENvbXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25O
b2RlKiwgVHlwZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IDM2NTAyYWFmN2MzY2I0YjZlNDdhYjMxMmQyN2M4ZDFhNzFkMjk4ODgu
LjFhNzJjOGZjMGUzYjQzNGQ4MGU2NDc3Mzk1NTE1YTAxMmZiYTQ4ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgyMCw2ICs4MjAsOCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVZhcmlhYmxlRGVjbAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAg
ZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKwor
ICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2
YXRlIG5hbWUgdG8gZGVjbGFyZSBhIHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJ
ZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVj
bGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFy
YXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAg
ICAgICAgICAgICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBM
ZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTEyNzgsNiArMTI4MCw4IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZURlCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVz
dHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJp
YWJsZUtpbmROYW1lKGtpbmQpKTsKKyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0dXJp
bmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWlsSWZU
cnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAi
LCBkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAgICAg
ICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScg
aW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNo
KExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwg
a2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1
c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIp
OwpAQCAtMjkzOCw2ICsyOTQyLDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElm
RmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVy
dHkgbmFtZSIpOwogICAgICAgICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNL
RVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJUKE9w
dGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4gdG9r
ZW4gPSBtX3Rva2VuOworICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsK
KyAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAi
U3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAgIGZh
aWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9k
IHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVO
UEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5h
bWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJl
UHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRl
RGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAg
ICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJv
cGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9r
ZW5GbGFnKQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk1Myw4ICsy
OTcwLDEwIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHks
ICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25z
Ojp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBD
bGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVy
KTsKLSAgICAgICAgICAgIGlmIChpZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewogICAg
ICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5j
b25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3Rv
ciciKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3Bl
cnR5TmFtZXMuY29uc3RydWN0b3JQcml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2YXRl
IGNsYXNzIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAgIGlk
ZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlm
aWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOwpAQCAtMzAxOCw2ICszMDM3LDEwIEBAIHBh
cnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNl
dCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5n
ICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRl
Q2xhc3NGaWVsZHMoKSkgeworICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQg
cHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBu
YW1lcy4KKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVO
YW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUg
bmFtZXMiKTsKKyAgICB9CiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0
ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52
aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAg
ICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtMzA0MSw2ICszMDY0LDkgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9w
ZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkg
eworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAg
ICAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5
d29yZDoKQEAgLTMwODAsNiArMzEwNiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAg
ICAgIGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZp
bmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBk
ZWZpbmVGaWVsZCA9IGNvbnRleHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRl
bnQsIGluaXRpYWxpemVyLCB0eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQo
c291cmNlRWxlbWVudHMsIGRlZmluZUZpZWxkKTsKICAgICB9CkBAIC00NzcyLDYgKzQ4MDEsMjIg
QEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSos
IFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KK2Jvb2wgUGFyc2VyPExleGVyVHlwZT46OmVuc3VyZVByaXZhdGVOYW1lVXNlZChj
b25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdG
dW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKKyAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFByaXZhdGVOYW1lU2NvcGUoJmZvdW5k
KTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFjdXJy
ZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICBjdXJyZW50LT51c2VQcml2YXRl
TmFtZSgqaWRlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNv
bnRleHQpCiB7CkBAIC00ODg3LDYgKzQ5MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwog
CiAgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNvbnRl
eHQpOwogICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBpZGVudGlmaWVycyBp
biBhbiBvcHRpb25hbCBjaGFpbiIpOwogICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFDS0VU
KSB8fCBtYXRjaChPUEVOUEFSRU4pIHx8IG1hdGNoKEJBQ0tRVU9URSkpCiAgICAgICAgICAgICAg
ICAgdHlwZSA9IG1fdG9rZW4ubV90eXBlOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00OTc0LDgg
KzUwMjAsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBtX3Bh
cnNlclN0YXRlLm5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgICAgICBK
U1RleHRQb3NpdGlvbiBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAg
ICAgICAgICAgICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1aWxk
S2V5d29yZHMgfCBMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAg
ICAgICAgICAgICAgIGF1dG8gdHlwZSA9IERvdFR5cGU6Ok5hbWU7CisgICAgICAgICAgICAgICAg
aWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90
IGFjY2VzcyBwcml2YXRlIG5hbWVzIGZyb20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKFVOTElLRUxZKGN1cnJlbnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFsQ29u
dGV4dFR5cGU6Okluc3RhbmNlRmllbGRFdmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFtZSgq
aWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIsIGlk
ZW50LT5pbXBsKCksICInIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFs
c2UoZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0
ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2Vy
U3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAg
ICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9r
ZW4ubV90eXBlID0gSURFTlQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1h
dGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlv
bmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBj
b250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0
YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9u
KCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFy
dExvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9u
RW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShi
YXNlSXNTdXBlciAmJiBjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rp
b25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxNzAs
NiArNTIyOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmlj
dChjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJv
cGVydHkgJyIsIG1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3Ry
aWN0IG1vZGUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJp
dmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFy
c2VyU3RhdGUubGFzdFByaXZhdGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNv
bnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0
YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNTI0MCw3ICs1MzAwLDExIEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3Rl
ZFRva2VuVGV4dChXCiAgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAg
ICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIici
KTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1F
OgorICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2Vu
KCkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6
CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigp
LCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzllYTA5NjZk
YjYyNDU5NGYyYWMyYzM4Y2Y4NGJjM2JjMzZlYzM1ZC4uNWJjNDYzMDdhMjUxMzEwMWQyZjFhODli
NWVkMmZkZTJhZTYyMGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0xODEsNiArMTgxLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNl
KQogICAgICAgICAsIG1faXNFdmFsQ29udGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hhc05vblNp
bXBsZVBhcmFtZXRlckxpc3QoZmFsc2UpCisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1lU2NvcGUo
ZmFsc2UpCiAgICAgICAgICwgbV9pc0NsYXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9ldmFs
Q29udGV4dFR5cGUoRXZhbENvbnRleHRUeXBlOjpOb25lKQogICAgICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpAQCAt
Mjg5LDYgKzI5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnkoKSBj
b25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5bmNG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBp
c0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9u
Qm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQcml2YXRlTmFtZVNjb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25z
dCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA1LDggKzMwNywxNCBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQogCisg
ICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pc1ByaXZh
dGVOYW1lU2NvcGUgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3BlKCkK
ICAgICB7CisgICAgICAgIHNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBtX2lzQ2xh
c3NTY29wZSA9IHRydWU7CiAgICAgfQogCkBAIC00NzEsNyArNDc5LDQ0IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuZ2V0
KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmhh
c1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xhcmVkUHJp
dmF0ZU5hbWVzKFNjb3BlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxl
cy5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMpOwor
ICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXpl
KCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJs
ZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNV
c2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25z
KTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAg
ICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNh
bERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBE
ZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhp
Y2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQ
YXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTgzNCw2ICs4NzksNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYXNBcmd1bWVudHM7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAgYm9v
bCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5hbWVT
Y29wZTsKICAgICBib29sIG1faXNDbGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlwZSBtX2V2
YWxDb250ZXh0VHlwZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAgLTkwNSw3
ICs5NTEsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNl
ckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRl
eHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlv
biA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRy
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBj
b25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9u
YWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpu
dWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3Rv
cjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3Jl
TGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsg
fQpAQCAtMTE3OCw2ICsxMjI0LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29wZVJl
ZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBTY29wZVJlZiBjdXJyZW50UHJpdmF0
ZU5hbWVTY29wZShib29sICpmb3VuZCA9IDApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpID0g
bV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNr
LnNpemUoKSk7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRl
TmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAg
ICAgICAgICpmb3VuZCA9IG1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAg
ICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJv
b2wgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFtX3Njb3BlU3RhY2suaXNFbXB0eSgpKTsKKyAgICAgICAgU2NvcGVSZWYgY3Vy
cmVudCA9IGN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBj
dXJyZW50LmluZGV4KCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ld
LmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlmICgh
aSkKKyAgICAgICAgICAgIHJldHVybiAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2
YXRlTmFtZXMoKTsKKworICAgICAgICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1l
cyhtX3Njb3BlU3RhY2tbaV0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBT
Y29wZVJlZiBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpCiAg
ICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CkBAIC0x
NDUyLDYgKzE1MjQsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2Vu
Lm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0
Y2hBbmRVcGRhdGUoSlNUb2tlblR5cGUgZXhwZWN0ZWQsIGNvbnN0IEpTVG9rZW4mIHRva2VuKQor
ICAgIHsKKyAgICAgICAgaWYgKG1hdGNoKGV4cGVjdGVkKSkgeworICAgICAgICAgICAgbV90b2tl
biA9IHRva2VuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRj
aENvbnRleHR1YWxLZXl3b3JkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewpA
QCAtMTcwMiw2ICsxNzg0LDggQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChUcmVl
QnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBlbnN1
cmVQcml2YXRlTmFtZVVzZWQoY29uc3QgSWRlbnRpZmllciopOworCiAgICAgQUxXQVlTX0lOTElO
RSBpbnQgaXNCaW5hcnlPcGVyYXRvcihKU1Rva2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1dG9t
YXRpY1NlbWljb2xvbigpOwogICAgIApAQCAtMTc5Niw2ICsxODgwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgRnVuY3Rpb25QYXJzZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9uUGFy
c2VQaGFzZTo6Qm9keSB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRpZmll
ciB7IG51bGxwdHIgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFt
ZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdFByaXZhdGVOYW1l
IHsgbnVsbHB0ciB9OwogICAgICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAgICAg
IGJvb2wgaXNQYXJzaW5nQ2xhc3NGaWVsZEluaXRpYWxpemVyIHsgZmFsc2UgfTsKICAgICB9OwpA
QCAtMTk0NSw3ICsyMDMwLDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0
IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNp
bmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0
b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGlu
c3RhbmNlRmllbGRMb2NhdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYg
Y2FsbGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFy
c2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNF
bmRQb3NpdGlvbiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFos
IGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7
CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTE5NjAsNiArMjA0NSwx
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
KFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRD
b2x1bW4oKSA+IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0
YXJ0Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKKyAg
ICBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHZhcmlhYmxlc1VuZGVyVERaICYmIHZh
cmlhYmxlc1VuZGVyVERaLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICAgICAgY3VycmVudFNj
b3BlKCktPnNldElzUHJpdmF0ZU5hbWVTY29wZSgpOworICAgICAgICB2YXJpYWJsZXNVbmRlclRE
Wi0+Y29weVByaXZhdGVOYW1lcyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsK
KyAgICB9CisKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBw
YXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0Vu
ZFBvc2l0aW9uLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVtYmVy
ID0gbV9sZXhlci0+bGluZU51bWJlcigpOwpAQCAtMjA0NCw2ICsyMTM0LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dl
clBhcnNlRGF0YSogZGVidWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBjb25zdCBW
ZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVsbHB0cikK
IHsKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CkBA
IC0yMDU1LDcgKzIxNDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnBy
b3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hh
cj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9k
ZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BM
ZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4o
KSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSk7Ci0gICAgICAgIHJlc3VsdCA9
IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxO
b2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0
OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAg
ICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9k
ZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJz
aW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5z
dGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQ
YXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAtMjA2OCw3ICsyMTU5LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24g
PT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzJ3Mgc3BlY2lhbCBj
b25zdHJ1Y3RvcnMgc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKICAgICAgICAg
UGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJp
Y3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0
cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhKTsK
LSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBw
YXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFs
IDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJv
ciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29u
dGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlh
Ymxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGJkNmQ2NTE0Y2Zi
Y2ZlMjMxMzY1M2M4NmUxYzRhZTAzM2I4ZjI0My4uZjU2OTA0Yzg5ODIxZTdhYThlYzVjMWI1MDI0
OTdkOWEzMDBlYjUwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRv
a2Vucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9VQkxF
LAogICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJTkcs
CiAgICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBmOWJiMDdiNGRkNDA4OWM3YjFlM2EwZjNmNTk1NDFi
MzE3YTUyZDdmLi5lOWI2ZDdlOTQ2NzQ0ZTFhMDhkYzFjYzI4YTQ2YjcxMzc3M2M5ODRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIElu
dGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBU
aGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhw
ciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhw
ciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQcmVF
eHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAorICAg
ICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBP
cHRpb25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHByLCBB
c3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRl
cmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFy
cmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1
bHQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYp
IHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFj
Y2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlw
ZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/
IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJl
Z0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJy
OjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJl
Z0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsg
fQpAQCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24oRXhw
cmVzc2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVF
eHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAgICBy
ZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBQ
cml2YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJvb2wg
aXNQcml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3NpZ25t
ZW50TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2
Y2IzMTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3
NDA2OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJh
dG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9IG90
aGVyLm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0
aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIubV9y
YXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVu
dmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAqdGhp
czsKK30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1cmVk
SWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7
CiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgwLDYg
KzkwLDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1l
bnQmIG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNFdmVy
eXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFy
ZURhdGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmlyb25t
ZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVk
KCkpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJpZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBwYWly
IDogZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgpLCBw
YWlyLnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJl
YTE5OTJjNTIuLjBjMWQwYWMzZWJhZGNhOGVjMzhhNmM4OGVhNjMxMzliNDkwYTMzNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
CkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9J
dGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1
YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0
ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZh
dGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9i
aXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgp
IHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsg
fQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElz
UGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9
IElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkg
eyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9IDEg
PDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5TW9k
ZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5n
Q2FuZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKICAg
ICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUgQEAg
c3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworcHVi
bGljOgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMg
PSB0cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KKwor
ICAgIHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVudW0g
VHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAgIElz
RGVjbGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2Jp
dHMgeyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNo
VHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rl
c3RydWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHBy
aXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhh
c2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFp
dHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRz
PiBQcml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0gZGVm
YXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhl
cikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0o
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmly
b25tZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7CisgICAg
VmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFi
bGVFbnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9t
YXApKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJlRGF0
YSkpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAgICAg
ICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkK
KyAgICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8
VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51bGxw
dHIpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBNYXA6
Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAtOTks
NyArMTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRv
ciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUg
TWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9
Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
c2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElO
RSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIp
OyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7
IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZp
ZXIpOyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRo
aW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisgICAg
dXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVz
OjppdGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJl
UHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0
ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJl
UHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZp
ZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0byBl
bnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1By
aXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnku
c2V0SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVu
dHJ5KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdl
dE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNV
c2VkKCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZpbmQo
aWRlbnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAg
ICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZl
bnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKHBy
aXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2Uo
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0
ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmly
b25tZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAg
ICAgICAgb3RoZXIubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCEoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNs
YXJlZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVz
ZWQgYnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1l
cyBmcm9tIGFuCisgICAgICAgIC8vIGlubmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBh
biBvdXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGlu
IHRoZSBzb3VyY2UgY29kZSB0aGFuIGl0IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRl
TmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRl
TmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAh
ZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRP
ckFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0K
KyAgICAgICAgUmFyZURhdGEoUmFyZURhdGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2
YXRlTmFtZXMoV1RGTW92ZShvdGhlci5tX3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAg
ICAgfQorICAgICAgICBSYXJlRGF0YShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAg
ICAgUmFyZURhdGEmIG9wZXJhdG9yPShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAg
ICAgUHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7
CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZh
dGVOYW1lRW50cnkmIGdldE9yQWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwp
CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRh
ID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisg
ICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0
ZU5hbWVFbnRyeSgwKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNs
YXNzIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCAyMjZiNDgzNTQ2MmQ4YzQ1ZTYxOWY2Njgw
MGJlOTk3YTkxYWU4OGExLi5mZTZkY2JhMjdkOTdlZTA3MjQ3NmIzM2Y1MzZiYWM0ZDY1MzU3MjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBA
IC04NTcsNiArODU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5j
b2RlKGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBk
ZWNvZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0
ZSBidWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIpOworICAgIH0KIH07CiAKIGNsYXNzIENhY2hl
ZFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1w
VGFibGU+IHsKQEAgLTEwMDQsMjMgKzEwMTAsNDUgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKIH07CiAKK2NsYXNzIENhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCisg
ICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9w
cml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVO
YW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRy
PENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQ
dHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmll
clJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVO
YW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFZh
cmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1l
bnQ+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgewogICAgICAgICBtX2lzRXZlcnl0aGluZ0Nh
cHR1cmVkID0gZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmVuY29k
ZShlbmNvZGVyLCBlbnYubV9tYXApOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVy
LCBlbnYubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KSBjb25zdAogICAgIHsKICAgICAg
ICAgZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwog
ICAgICAgICBtX21hcC5kZWNvZGUoZGVjb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFt
X3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6
Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2RlciwgKmVudi5tX3JhcmVEYXRhKTsKKyAgICAgICAg
fQogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAg
ICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVu
aXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNo
VHJhaXRzPiBtX21hcDsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJh
cmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52
aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
PiB7CkBAIC0xMTQ3LDYgKzExNzUsMjIgQEAgcHJpdmF0ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7
CiB9OwogCitjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9i
amVjdDxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4geworcHVibGljOgorICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJs
ZVJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29k
ZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisgICAgdm9pZCBk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEm
IHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRl
Y29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Q2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVu
dGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRTeW1ib2xU
YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKIHB1YmxpYzoKICAgICB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFi
bGUpCkBAIC0xMTU3LDYgKzEyMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmVzdGVkTGV4aWNh
bFNjb3BlID0gc3ltYm9sVGFibGUubV9uZXN0ZWRMZXhpY2FsU2NvcGU7CiAgICAgICAgIG1fc2Nv
cGVUeXBlID0gc3ltYm9sVGFibGUubV9zY29wZVR5cGU7CiAgICAgICAgIG1fYXJndW1lbnRzLmVu
Y29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX2FyZ3VtZW50cy5nZXQoKSk7CisgICAgICAgIG1f
cmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwog
ICAgIH0KIAogICAgIFN5bWJvbFRhYmxlKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QK
QEAgLTExNzAsNiArMTIxNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFNjb3BlZEFyZ3VtZW50c1Rh
YmxlKiBzY29wZWRBcmd1bWVudHNUYWJsZSA9IG1fYXJndW1lbnRzLmRlY29kZShkZWNvZGVyKTsK
ICAgICAgICAgaWYgKHNjb3BlZEFyZ3VtZW50c1RhYmxlKQogICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPm1fYXJndW1lbnRzLnNldChkZWNvZGVyLnZtKCksIHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1
bWVudHNUYWJsZSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIHN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRh
YmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVj
b2RlKGRlY29kZXIsICpzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSk7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm4gc3ltYm9sVGFibGU7CiAgICAgfQogCkBAIC0xMTgwLDYgKzEyMzAsNyBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNp
Z25lZCBtX3Njb3BlVHlwZSA6IDM7CiAgICAgQ2FjaGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50
c1RhYmxlPiBtX2FyZ3VtZW50czsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJl
RGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZEpTVmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCAzMGI1OGI2YWNkZWNkNThi
MDMwN2JkNTI4NDZlYTQ2NTgyYjliMDlkLi4wNTFlYTdhYTY2ODJkMDhkZGNlMDg3ZjE5Mjk1NDE2
M2NiMjlkMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlu
a2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKIHsKICAgICB0eXBl
ZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUg
Um9vdE5vZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9IHBhcnNl
PFJvb3ROb2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVz
PFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0
VHlwZSwgZXZhbENvbnRleHRUeXBlKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2Rl
LCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5k
aW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRl
cml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJpYWJsZXNVbmRl
clREWik7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cAppbmRleCA2MmMwZDU5NTczYTZhNjM5OTA5MzlmMWNlZjk0ZDkxOWQ3ZDczYzZlLi43ZWU3MTNj
OWM0YTI1OTJmZjMzMGY2OGY1YTY2NDZlZDNlODA5YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMiw2ICszMiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBu
YW1lIyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUg
SU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0
aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wo
bmFtZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQorI2Rl
ZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVG
aWVsZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiIyIgI25hbWUpKQogCiBDb21tb25JZGVu
dGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIo
KQpAQCAtNDUsNiArNDYsNyBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMo
Vk0mIHZtKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJ
WkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFN
RShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCisgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSU5JVElBTElaRV9QUklWQVRF
X0ZJRUxEX05BTUUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGRmMDFmMmExMTg3NDA0MTI2MzJiZjJhZGFiOGFl
MDRmMjZhYzk3ZDAuLjhkMmU5YTc4MTIyZjYyNjEwNjE2YjIyMWQ5YmU4ZjZhNGIyMzc5NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aApAQCAtMjA1LDYgKzIwNSw5IEBACiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNybyh5
ZWFyKQogCisjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxE
KG1hY3JvKSBcCisgICAgbWFjcm8oY29uc3RydWN0b3IpCisKICNkZWZpbmUgSlNDX0NPTU1PTl9J
REVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhhd2FpdCkgXAogICAg
IG1hY3JvKGJyZWFrKSBcCkBAIC0zMTksNiArMzIyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFM
KQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJP
TF9HTE9CQUwKIAorI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERf
R0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZUZpZWxkOworICAgICAg
ICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChKU0NfSURFTlRJRklF
Ul9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RF
Q0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwKKwogICAgICAgICAvLyBDYWxsZXJzIG9mIHRoaXMg
bWV0aG9kIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpZGVudGlmaWVycyBnaXZlbiB0byB0aGlzIG1l
dGhvZCAKICAgICAgICAgLy8gc3Vydml2ZSB0aGUgbGlmZXRpbWUgb2YgQ29tbW9uSWRlbnRpZmll
cnMgYW5kIHJlbGF0ZWQgVk0uCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5k
RXh0ZXJuYWxOYW1lKGNvbnN0IElkZW50aWZpZXImIHB1YmxpY05hbWUsIGNvbnN0IElkZW50aWZp
ZXImIHByaXZhdGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IDQ0ZDhmYjRiNDIyYTkyZDAzYjgxYWIwYWYxOGQ0ZjY1
YjFlOGM4MzUuLjRjYzUyZTZjODQ2OTJkYmM0NjQ3MWQ4ZjEzMGYyZmI1MTZhNTI1NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMTI5OCw2ICsxMjk4LDcyIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
X3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsX2RpcmVjdCkKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBj
LT5hczxPcEdldEJ5VmFsRGlyZWN0PigpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0Mo
Ynl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBHRVRf
QyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisKKyAgICBpZiAoTElLRUxZKGJhc2VW
YWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgU3RydWN0
dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAg
ICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgewor
ICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlzdGluZ0F0b21TdHJpbmcgPSBh
c1N0cmluZyhzdWJzY3JpcHQpLT50b0V4aXN0aW5nQXRvbVN0cmluZyhnbG9iYWxPYmplY3QpOwor
ICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdB
dG9tU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZh
bHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3RpbmdB
dG9tU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKHJl
c3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3Vic2Ny
aXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQz
MigpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9j
ayk7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1fYXJy
YXlQcm9maWxlOworCisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKKyAgICAg
ICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAg
ICAgICAgICBSRVRVUk5fUFJPRklMRUQoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZ2xv
YmFsT2JqZWN0LCBpKSk7CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRz
KCk7CisgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgICAgICAgICAg
aWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQorICAgICAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChvYmplY3QtPmdldEluZGV4UXVpY2tseShpKSk7CisKKyAgICAgICAgICAgIGJv
b2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAob2Jq
ZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPCBvYmplY3Qt
PmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBleHBhbmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMyLCBhbmQgbWF5YmUgRG91YmxlOgor
ICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODI5NDAKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBvYmplY3QtPmds
b2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICAgICAgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9
IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG9iamVjdC0+c3RydWN0dXJl
KHZtKSkgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyAmJiAh
Q29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudEluZGV4UXVpY2tseSgqb2JqZWN0LCBp
KSkKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7CisgICAg
ICAgIH0KKworICAgICAgICBSRVRVUk5fUFJPRklMRUQoanNVbmRlZmluZWQoKSk7CisgICAgfQor
CisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJv
cGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldE93blByb3BlcnR5KTsKKworICAgIGJvb2wgZm91bmQgPSAoYmFzZVZhbHVlLmFzQ2Vs
bCgpLT5pc1Byb3h5KCkgJiYgcHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICA/IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYXNPYmplY3QoYmFzZVZhbHVlKSwgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSwgc2xvdCkKKyAgICAgICAgOiBiYXNlVmFsdWUuZ2V0T3duUHJvcGVydHlT
bG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIENIRUNLX0VYQ0VQVElPTigp
OworICAgIGlmICghZm91bmQgJiYgcHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICBU
SFJPVyhjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBS
RVRVUk5fUFJPRklMRUQoZm91bmQgPyBzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHkpIDoganNVbmRlZmluZWQoKSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfaWRfd2l0aF90aGlzKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGI3MTM1ZTJiNzg0YWI2OGRiNWY1
NThmYTc4NTA0Y2FiMDk2NDNjNjEuLjNmZDRhOWIxOTU1MWVmZmEzZDlkOTYxZTFlMDUwOTBhNjY2
OWVjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCkBAIC0yNzIsNiArMjcyLDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jcmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
aWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3Zh
bF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
X2RpcmVjdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRo
X3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhf
dGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9kYXRhX3Byb3Bl
cnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKaW5kZXggYWY5OGQ0ZDI3YjQxZDE0MzM2YTAyMThlODBiNzZjZTRkOGI0MGI3Mi4u
ZDgxZTU4NjY0MWJkNmZjMmJhY2QwZmI0MTc5OTFjYmYxNWY1OWIyMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMyOSw2
ICszMjksMTYgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9iamVjdCwg
IkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iKTsKIH0KIAorSlNPYmplY3Qq
IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJp
bmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VB
cHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJp
dmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVy
biBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgcmVkZWZp
bmUgZXhpc3RpbmcgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVO
b3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3Io
Z2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmgKaW5kZXggMzc2ZjJhZjQwZDg0NjQ3MjYzNDRjNzM3MzIzMmUxY2Q1YTk2
OGRmNC4uYWM4MWQyYmJhOTI4OThmZGI2NDQxYzdiZDIyYzAxMzYzNGFmMWY4YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApAQCAtNTMs
NiArNTMsOCBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJv
ckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsbwogSlNPYmplY3QqIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVjdCogY3Jl
YXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0
KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJik7CitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVy
cm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiog
dGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IGM5NmMwMTNjZDNiM2JiMGFmMTU2ODE0OTNhZTk0MjIxYjRlZGM3NzAuLjU4MmE1MWExNzM3Mjgx
ZWI3Y2JjODk3ZWYxMjU1ZTgxY2IwYTU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwNSw2ICszMDUsMTIgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVuZ3RoUHJvcGVydHkoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxPYmplY3QsIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCkpKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNyZWF0ZVByaXZhdGVTeW1ib2woSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJpdmF0ZVN5bWJv
bEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOworfQorCiAjaWYgQVNTRVJUX0VOQUJM
RUQKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENhbGwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CkBAIC0xMTYx
LDYgKzExNjcsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQu
c2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCkpOwogICAg
ICAgICB9KTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKKworICAgIC8vIFByaXZhdGVTeW1ib2xz
IC8gUHJpdmF0ZU5hbWVzCisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCldLmluaXRMYXRlcihb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5z
ZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpLCAwLCBTdHJpbmcoKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbCkpOworICAgICAgICB9
KTsKKwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZX1NUUkVB
TUlOR19BUEkpCiAgICAgLy8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQogICAgIG1fbGlua1Rp
bWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OndlYkFz
c2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0
aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCmluZGV4IDZkNWFiNjgyYzY4MzkxNGY2OWYzZTVjMjI4Mzg0ZmVmZTQ2NTc3Yzgu
Ljk2YzhkYmQ0MzA2NzkxZTFhNWU2MTE4YTY1MjNlNTRkODNmM2E1NWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zMzksNiArMzM5LDEwIEBAIHZvaWQg
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwg
VmFyaWFibGVFbnZpcm9ubWVuCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3lt
Ym9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+
ZW5kKGxvY2tlciksIGl0ZXIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikKICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKKyAgICAgICAg
aWYgKHN5bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgZm9yIChh
dXRvIG5hbWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICAgICAg
cmVzdWx0LnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgfQogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYjg1Yjgy
ODhlZGY2Mjg0ZWQ4M2NhZjZjNmQ5OGYzMjdmYTJkYzRjZi4uOTQ5YjQ1NDFlZTA2YjBjYTUzMzEz
MTcwZjA4Mzc4ZjAyODIyMzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCkBAIC01MDAsNiArNTAwLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIGZvcmNlT1NSRXhpdFRv
TExJbnQsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSBhbHdheXMgZXhpdCB0byB0aGUgTExJ
bnQuIElmIGZhbHNlLCB3ZSBleGl0IHRvIHdoYXRldmVyIGlzIG1vc3QgY29udmVuaWVudC4iKSBc
CiAgICAgdihVbnNpZ25lZCwgZ2V0QnlWYWxJQ01heE51bWJlck9mSWRlbnRpZmllcnMsIDQsIE5v
cm1hbCwgIk51bWJlciBvZiBpZGVudGlmaWVycyB3ZSBzZWUgaW4gdGhlIExMSW50IHRoYXQgY291
bGQgY2F1c2UgdXMgdG8gYmFpbCBvbiBnZW5lcmF0aW5nIGFuIElDIGZvciBnZXRfYnlfdmFsLiIp
IFwKICAgICB2KEJvb2wsIHVzZVB1YmxpY0NsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0
cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMgZGF0YSBmaWVsZHMgaW5zaWRl
IGNsYXNzZXMuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRh
IGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2Ugewog
ICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKaW5kZXggYmM0OWRjOTgyYzczMjgyYmVkZWIyYjFkZWZjNzY3YTg1YWIzNWFmOS4u
Nzc5MGNmNTczZDI2Zjk1MmY0OTk5YTUzZjNjMjc1ZDY3NTFhM2NkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTgzLDYgKzE4MywxMSBA
QCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC0+bV9yYXJlRGF0YS0+bV91bmlxdWVUeXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZh
bHVlKTsKICAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1l
IDogbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5t
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCmluZGV4IDJkNzg2YTU4YzA5MzgwYjAyMzE1MGYwN2U4MjI3NjI2YzZkNmE1
OTcuLmIwZGQ3NGY3ZTRjMDE1MDAzNzNlOTM3OGUxYWY5NjQ2M2U1ZmQyNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTQ1MCw2ICs0NTAsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1
ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxT
eW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVT
ZXQ7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVT
ZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2Vy
LCBrZXksIHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBi
b29sIGhhc1ByaXZhdGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRl
TmFtZUl0ZXJhdG9yUmFuZ2UgcHJpdmF0ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBv
ZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFp
bHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVz
KCkpOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAg
IH0KKworICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8
U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoa2V5KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4K
ICAgICB2b2lkIHNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1w
bCoga2V5LCBFbnRyeSYmIGVudHJ5KQogICAgIHsKQEAgLTcyMSwxOCArNzQxLDIxIEBAIHByaXZh
dGU6CiAgICAgU2NvcGVPZmZzZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRh
YmxlIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3Vz
ZXNOb25TdHJpY3RFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6
IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5
cGUgOiAzOyAvLyBTY29wZVR5cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVE
YXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBV
bmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1f
b2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5
cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwor
ICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRl
OgorICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1f
bmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAg
ICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJp
ZXI8U2NvcGVkQXJndW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5OGRhMzE0OTNlOTViMzdkMjcw
NGFmNThkOTA4N2EyMzQzMmFjNWIxLi4yZjFiYWY4Nzc3OTQxZTQ2ZWE5ZGExZWQzMmRlYTZhNzEz
Y2QxYjE4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTA5ICBDYWl0bGluIFBvdHRlciAgPGNhaXRw
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xh
c3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBhbmRzIHVwb24gdGhlIGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEg
bnVtYmVyIG9mIHByaXZhdGUKKyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpz
OgorICAgICAgICAqIHN0cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9w
ZXJ0eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHBy
aXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRw
cml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIw
LTAzLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
YmFkIGFzc2VydGlvbiBpbiBGVExMb3dlckRGR1RvQjMncyBjb21waWxlRGVsQnkoKS4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODhhMTE2M2UxNjdlZDBkNmM1ZjY3NjU2ZDAxYjM0ZDg4Y2I3NGYyZgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0
aW9uLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRo
b2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5l
dyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDJhNGY0MzU0Zjg5N2YxMTM3NDA4NzEyNjA0NmM2ZjFkZmQzZTdlOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5q
cwpAQCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNmID0gMzsKKworICAgIG1ldGhvZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cith
c3NlcnQoYy5tZXRob2QoKSwgMyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxZjcxOGQ5NzQyNzBhYzhhMTllNWY3
YmYwNTIwMGRlYjkzNzZjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChh
LCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsK
K30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5s
ZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVb
aV0sICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBl
W2ldKTsKK30KKworbGV0IGFyciA9IFtdOworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0
cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAg
IGdldDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNoKHBy
b3ApOworICAgICAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pOworICAgIH0KK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7Cisg
ICAgI2YgPSAzOworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAg
fQorfQorCitsZXQgdCA9IG5ldyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQo
ciwgMywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50
KGFyciwgWydtZXRob2QnXSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb3V0LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkODYyMTYwMWQ1ZGUzNGE0Mjgz
NDZkNTFjY2Y4MjJmYmY1NjBhOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFz
c2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2xldCBrbGFzc1NvdXJj
ZSA9IGAKK3ZhciBDID0gY2xhc3MgeworICAgIGFzc2VydE91dE9mTGluZVZhbHVlKCkgeworICAg
ICAgICBhc3NlcnQodGhpcy4jZjIwMCwgImZvbyIpOworICAgIH0KK2A7CisKKworZm9yIChsZXQg
aSA9IDA7IGkgPCAyMDA7IGkrKykgeworICAgIGtsYXNzU291cmNlICs9ICIgICAgI2YiICsgaSAr
ICI7XG4iOworfQorCitrbGFzc1NvdXJjZSArPSAiICAgICNmMjAwID0gXCJmb29cIjtcbn0iOwor
CitldmFsKGtsYXNzU291cmNlKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hc3NlcnRPdXRPZkxpbmVWYWx1ZSgpOworfQorCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY5Nzg4MDU3YjFiZjQ5NTUwYTBlOGYzZDk4YTk0MWE4MzdjZjExYzMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5q
cwpAQCAtMCwwICsxLDE1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPTEiLCAiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0
KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNz
YWdlKTsKK30KKworbGV0IGluc3QgPSBuZXcgY2xhc3MgeworICBhID0gZXZhbCgiKGkpID0+IGku
I2IiKTsKKworICAjYiA9IHt9OworfTsKKworaW5zdC5hKGluc3QpLnggPSAxOworYXNzZXJ0KGlu
c3QuYShpbnN0KS54ID09IDEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXN0cmVzcy1pbnN0YW5jZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJl
c3MtaW5zdGFuY2UuanMKaW5kZXggZTUxNjI5OWE3OTJjNjM4NGI4NDJjNjk3ZjQxZmNlZDdmNWNm
ZmZjZi4uNTA2OWE3ZGE1YTE1NWRjYzA2MDRlNDYzMmI5MGU4MzA5MzlmZTgzNiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcworKysgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCkBAIC0xLDExICsx
LDE1IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKIAogY2xhc3MgQSB7CiAgICAgYSA9IDA7CiAgICAg
YiA9IDE7CisgICAgI2MgPSAwOworICAgICNkID0gMTsKICAgICBlID0gZnVuY3Rpb24gKCkgeyBy
ZXR1cm4gMDsgfTsKKyAgICAjZiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfTsKICAgICBbImci
XSA9IDA7CiAgICAgaCA9IGV2YWwoInRydWUiKTsKKyAgICAjaSA9IGV2YWwoImZhbHNlIik7CiB9
CiAKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9n
ZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNjMzNjJmYWE2M2U0
MDU2MjVkMWZlY2VjZTk5YmNkMjY2YjllYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMjkgQEAKKy8v
IFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisv
L0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCisvLyBHZXRCeVZhbERpcmVjdCBzaG91bGQg
dGhyb3cgd2hlbiB0aGUgcmVjZWl2ZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWVzdGVkIHByaXZh
dGUgcHJvcGVydHkKK2xldCBpLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3ggPSBp
OworICAgIGNvbnN0cnVjdG9yKCkgeyBpZiAoaSA9PT0gMzApIHJldHVybiB7IFtTeW1ib2wudG9T
dHJpbmdUYWddOiAid2l0aG91dCAjeCJ9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBv
YmouI3g7IH0KKyAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAj
eCI7IH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAg
ICBsZXQgYyA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KGMpOworICAgICAgICBp
ZiAocmVzdWx0ICE9PSBpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBD
LngoJHtjfSkgdG8gYmUgJHtpfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0
Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUuY29uc3Ry
dWN0b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYg
KCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
OWQ4ZTIxOTIzZjIwMjRkMDIyMDJmM2EyZTE2YmI0OWUxZjk1YjNkCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0
eS5qcwpAQCAtMCwwICsxLDIwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xh
c3NGaWVsZHM9MSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICB0aHJvd3M6IChleHBlY3RlZEVycm9yLCBmdW5jdG9yKSA9PiB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yLm5h
bWUgKyAiIGJ1dCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisgICAgfQorfQorCith
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAg
ICBbe30uI3hdID0gMTsgCisgICAgICAgICN4ID0gImZvbyI7CisgICAgfQorfSk7CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjUwNGRlNmY1MjUyOTIwNzJhMTZhNTA0ODUwOTAxNWVjYTViOTlhZWIKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0w
LDAgKzEsMzQgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9MSIpCisvL0AgcnVuRGVmYXVsdCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIp
CisvL0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJ
bnQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCisvLyBHUFZEIHdpdGggIlB1dEJ5VmFs
VGhyb3dJZkV4aXN0cyIgc2hvdWxkIHRocm93IGlmIG92ZXJ3cml0aW5nIGFuIGFscmVhZHkgZXhp
c3RpbmcgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBD
IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGkgPCAyOSA/IHRoaXMgOiBj
OworICAgIH0KK30KKworY2xhc3MgQ0MgZXh0ZW5kcyBDIHsKKyAgICAjeCA9IGkrKzsKKyAgICB4
KCkgeyByZXR1cm4gdGhpcy4jeDsgfQorfQorCitjID0gbmV3IENDOwordHJ5IHsKKyAgICBmb3Ig
KGxldCBqID0gMTsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IHggPSBuZXcgQ0M7CisgICAg
ICAgIGlmICh4LngoKSAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgeC54KCkgdG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7eC54KCl9YCk7CisgICAgfQorfSBjYXRj
aCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1
Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAo
IXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1i
eS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRp
cmVjdC1wdXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0MjNjM2U0YzJkOTc2NzU0NzRmN2RkNzJj
NGMzM2NiODQyYWE5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnkt
dmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vIFRPRE86IC8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKQorCisvLyBHUFZEIHdpdGggIlB1dEJ5VmFsUHJpdmF0ZU5hbWUiIHNo
b3VsZCB0aHJvdyBpZiB3cml0aW5nIHRvIGEgbm9uLWV4aXN0ZW50IFByaXZhdGVOYW1lLgorbGV0
IGMsIGkgPSAwLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3g7CisgICAgY29uc3Ry
dWN0b3IoKSB7IHJldHVybiBpIDwgMzAgPyB0aGlzIDogeyBbU3ltYm9sLnRvU3RyaW5nVGFnXTog
IndpdGhvdXQgI3giIH07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeCA9IGkr
KzsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRoICN4IiB9
Cit9CisKK3RyeSB7CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAg
IGxldCBvYmogPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChvYmopOworICAgICAg
ICBpZiAocmVzdWx0ICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCBDLngoJHtvYmp9KSB0byBiZSAke2p9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQor
fSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAvLyBydmFsIG9mIEFzc2lnbm1l
bnRFeHByZXNzaW9uIGlzIGV2YWx1YXRlZCBiZWZvcmUgUHJpdmF0ZUZpZWxkRmluZCgjeCwgbHJl
ZikgaXMgcGVyZm9ybWVkLAorICAgIC8vIHRodXMgYGlgIGhhcyBhbHJlYWR5IGJlZW4gaW5jcmVt
ZW50ZWQuCisgICAgaWYgKGkgIT09IDMxIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikg
eworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3du
Iik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKaW5kZXggNGZiMzYxYTU5ZTJiM2Q2MDk5ZTJhMTJjMjJhMDBmYTI1
NDU5YjkzMS4uOTRmZjFjMTJlNjgxM2QyYmJmYTJmODM2OTk0N2QwNWRkYmU1NzM5NiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbApAQCAtNCw2ICs0LDcgQEAgZmxhZ3M6CiAgIEJpZ0ludDogdXNlQmlnSW50CiAg
IFdlYWtSZWY6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0Ns
YXNzRmllbGRzCisgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMK
IHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gU2hhcmVkQXJyYXlCdWZmZXIKQEAgLTExLDcgKzEy
LDYgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzQ5MzEKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAKLSAgICAtIGNsYXNzLWZpZWxkcy1w
cml2YXRlCiAgICAgLSBjbGFzcy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1m
aWVsZHMtcHVibGljCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394108</attachid>
            <date>2020-03-20 12:12:59 -0700</date>
            <delta_ts>2020-04-20 15:06:14 -0700</delta_ts>
            <desc>Patch v14</desc>
            <filename>bug-206431-20200320151258.patch</filename>
            <type>text/plain</type>
            <size>179137</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MzUzOTNkMDhlMTBjNmU2Y2FhNjdlODExMjczODMxNzYyYzRhOWRjLi43MGIyY2U2NjUyOGE5MTcz
NzNiM2QxZjg4MWZiZDJjYWRiZTdjZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzMgQEAKKzIwMjAtMDMtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVy
ZW5jZXMgYXJlCisgICAgICAgIHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Ig
bm90IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAg
ICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRo
ZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0
aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUg
ZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVk
IGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVk
IGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5
IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAg
ICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBs
aWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAg
IDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAg
ICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxE
b05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAs
IDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHBy
b2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAg
ICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xv
YmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNj
b3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxO
b3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNl
aXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZh
dGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJs
eSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlW
YWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRk
ZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgSlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwOgorICAgICAgICAoSlNDOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0S2luZC5oLgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6RG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoSlNDOjpCYXNl
RG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXREb3Qp
OgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6QXNz
aWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURvdE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5
dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAq
IGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlM
ZXZlbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAq
IGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKSVQ6OnB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnB1dEJ5VmFs
RmxhZ3M8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBh
dGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlEKToKKyAgICAgICAgKiBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6aXNQcml2YXRlTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VB
c3NpZ25Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpM
ZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFy
Pjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8Q2hhcmFjdGVyVHlwZT46
OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdp
dGhvdXRDbGVhcmluZ0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUpOgorICAg
ICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgor
ICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUpOgor
ICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6
OnNob3VsZENyZWF0ZUxleGljYWxTY29wZUZvckNsYXNzKToKKyAgICAgICAgKiBwYXJzZXIvTm9k
ZXMuaDoKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzUHJpdmF0ZUxvY2F0aW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmJhc2UgY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6aWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VE
b3ROb2RlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmlzUHJpdmF0
ZU5hbWUgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3Vy
Y2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjplbnN1cmVQcml2
YXRlTmFtZVVzZWQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1i
ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5h
cnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5l
eHBlY3RlZFRva2VuVGV4dCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAo
SlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNQcml2YXRlTmFtZVNj
b3BlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzUHJpdmF0ZU5hbWVTY29wZSk6
CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0NsYXNzU2NvcGUpOgorICAgICAgICAoSlNDOjpT
Y29wZTo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29weVVuZGVjbGFy
ZWRQcml2YXRlTmFtZXMpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzVXNlZEJ1dFVuZGVjbGFy
ZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlUHJpdmF0ZU5h
bWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjdXJyZW50UHJpdmF0ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUpOgorICAgICAgICAo
SlNDOjpQYXJzZXI6Om1hdGNoQW5kVXBkYXRlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnN3YXApOgorICAg
ICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52
aXJvbm1lbnQpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTmFtZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTmFt
ZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OlByaXZhdGVOYW1lRW50cnkpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1VzZWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0RlY2xhcmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNVc2VkKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6c2V0SXNEZWNsYXJlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmJp
dHMgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6VmFyaWFibGVFbnZpcm9u
bWVudCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnNpemUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjptYXBTaXplIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXNTaXplIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpjb3B5UHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YTo6UmFy
ZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpnZXRPckFkZFByaXZh
dGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFzUHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hl
ZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hl
ZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6
ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAg
IChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6
OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpj
cmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZGVm
aW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omlu
aXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2Nv
cGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1l
L1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDMtMjAgIEphY29iIFVwaG9mZiAgPGphY29iX3VwaG9m
ZkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTg3NDguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2ZmMjI1ZTA3MWQ5ZWI0Y2M0NGVk
ZThlYTZlODVmNDFiNWJlMjdlOC4uOTExZjViMGJkYmY1Mjg5YWE0MjI4YTU0YzM2MjcyMzVhZjA3
NGY2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTI4LDYgKzUyOCw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0
ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBi
eXRlY29kZS9QdXRCeUlkRmxhZ3MuaAorICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAg
IGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAog
ICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDllMGVlMWRlOWUzNDc4YzBkYTMyODUzY2YxNmJkMjI1NzJhYzJjMmIuLjc1NDA0NzI5MzY5
MWJkNmU0ZWRiMjgxNTNiZTdkZDkyNGI3YjJhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMjQ1LDYgKzEyNDUsNyBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyog
WWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2NzZD
NkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyog
UHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1
NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFD
MTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmln
SW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMDEsNiArNDEw
Miw4IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFy
clBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVy
bi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2
NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0
aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQ
cml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFt
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM1MCw2ICs4MzUzLDggQEAKIAkJ
CQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBG
OTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5
M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCisJCQkJODY3NkM2
RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAorCQkJCTg2NzZDNkU2
MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUx
QjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJC
MTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMDkxLDYgKzEwMDk2LDcgQEAKIAkJ
CQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8q
IFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYw
NDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2
QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGM3YjYzOGJjNDAxMWM5Y2Q0NGUxNjI5OTdlMDkzYzhlMDRl
NDIwYTIuLmNjMTM0M2VjYjgxYWM3N2JiZDMxNzczOTQ1ZDI3NGE0NTNhOGFhNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2Niw2ICsyNjYsNyBAQCBieXRlY29kZS9Qcm94eWFi
bGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9S
ZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMDYzYzczZDUy
Y2Y4Yzg3MWIwOWIyODYyZGI0NDllYjAwZjNkNzZjMC4uNmJkODAwZGYwZTJlMzlhNWJiMzE1OGMz
OWIxZWZiMmM1MjA3MDZmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtMTY3LDcgKzE2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1h
Y3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5h
bCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkg
XAotICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgCisgICAgbWFjcm8oaW5zdGFu
Y2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAog
bmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZTUJP
TFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJv
bEltcGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUR1bXBlci5jcHAKaW5kZXggZDM3MjM2ZjQwYWE4OTkxMjdjNzQ5ZWJkYjk4Njk2
Yzc3ODVkOGNiMy4uMDJjMDFiZDdjMmU4YzI2YTY5NWY4YTM2NmI2NThiYWM2YzljZWI0YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3Bw
CkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNp
bmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrR2Vu
ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYgppbmRleCAzNDgzNDdjNmI0Y2Q3NTQ2ODBjMTI2YTBmNzI3NTM2ZjFiZTM3YzRlLi45YTc0
NDNhNWQ1NzU1NWZhN2MxMDZkZGJiYmM2ZWYzMTQ1ODMzZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ3LDYgKzQ3LDcgQEAgdHlw
ZXMgWwogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZzZXQs
CiAgICAgOlB1dEJ5SWRGbGFncywKKyAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2ZVR5
cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NDMsNiArNTQ0LDE3
IEBAIG9wIDpnZXRfYnlfdmFsLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdldEJ5VmFsSGlz
dG9yeSwKICAgICB9CiAKK29wIDpnZXRfYnlfdmFsX2RpcmVjdCwKKyAgICBhcmdzOiB7CisgICAg
ICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0
YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5UHJvZmls
ZTogQXJyYXlQcm9maWxlLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewog
ICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NjYsNiArNTc4LDcgQEAgb3AgOnB1
dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAg
IHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0
ZXIsCisgICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCA2N2YyY2VjMGE4
MGYwYjgyZmZkMmNmMGY2OTdmNzBlMGQ1NjI2YzEzLi4xNWMxM2JmN2E4OWY2N2QyODU5Y2JjZjYx
NjFjMzM5MDc4MzRhNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIxMSw2ICsyMTEsNyBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0
IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0b3Is
IGluZGV4KQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBp
bmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BH
ZXRCeVZhbERpcmVjdCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2Us
IHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3Is
IGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5
cGUpCkBAIC00MTksNiArNDIwLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZT
KE9wSW5zdGFuY2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAg
ICAgREVGUyhPcEdldEJ5VmFsLCBkc3QpCisgICAgREVGUyhPcEdldEJ5VmFsRGlyZWN0LCBkc3Qp
CiAgICAgREVGUyhPcFR5cGVvZiwgZHN0KQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxl
LCBzcmNEc3QpCiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCmluZGV4IDU3Nzg5YmMyYzY2OWY3Y2FkODg4M2RlY2YzNTEzMjc4NDQ5Yzgy
NGYuLmQ2Mzg1YjNiZmFmMTgxMTdkZWU2MjBjMWMxYTczNGU1NzEzM2Y1OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9w
Y29kZVNpemUuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRl
ICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IDFiNmU3MjYyNDA5Yzg1NzQzMmQ0YjJm
Y2ZhY2YxN2M3NjBkMTdiNjQuLjAyYTZjZjA0OGQxMjRhMmU5ZWUwYjUzNDAyYmRmYmQ4MjRlMGM3
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNv
bnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaApAQCAtMTAwLDYgKzEwMCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYo
QXJyYXksIG51bGxwdHIpIFwKICAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2
KGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwgbnVs
bHB0cikKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUp
IG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlW
YWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWU3NzZhOGNjYTgxMTExODQ3MjhlZmE2MDI1NzUxNmE5ZWQwNDRi
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2luY2x1
ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNp
bmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0
LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQoreworICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOwor
ICAgIGlmIChmbGFncyAmIFB1dEJ5VmFsUHJpdmF0ZU5hbWUpCisgICAgICAgIG91dC5wcmludChj
b21tYSwgIlByaXZhdGVOYW1lIik7CisgICAgaWYgKGZsYWdzICYgUHV0QnlWYWxUaHJvd0lmRXhp
c3RzKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJUaHJvd0lmRXhpc3RzIik7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Mjg5NWI2Nzg2MDdjOWEzMDkwOTMzNzI4MThjMGU4
ZmYzN2ZhYWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5VmFsRmxhZ3MuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitlbnVtIFB1dEJ5VmFsRmxhZ3MgOiBpbnQzMl90IHsKKyAgICBQdXRC
eVZhbE5vbmUgPSAwLAorCisgICAgUHV0QnlWYWxQcml2YXRlTmFtZSA9IDEsCisKKyAgICBQdXRC
eVZhbFRocm93SWZFeGlzdHMgPSAyLAorCisgICAgLy8gVGhlIFByaXZhdGVGaWVsZEFkZCBvcGVy
YXRpb24gbXVzdCB0aHJvdyBpZiBhbiBlbnRyeSBmb3IgdGhlIHByaXZhdGUgcmVjb3JkIGRvZXMg
bm90IGV4aXN0CisgICAgUHV0QnlWYWxQcml2YXRlRmllbGRBZGQgPSBQdXRCeVZhbFByaXZhdGVO
YW1lIHwgUHV0QnlWYWxUaHJvd0lmRXhpc3RzLAorICAgIFB1dEJ5VmFsUHJpdmF0ZUZpZWxkUHV0
ID0gUHV0QnlWYWxQcml2YXRlTmFtZSwKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1l
c3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQ
cmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKaW5kZXggNjExMjc5ZjYwOWEw
ODU4OWFkY2U5MWMyYTVjOGFmNjQ4MDgwYzRjNi4uMGQzOWIwMzU4OTZlOWVmNjE5NjM0MjNhNjFl
NjgxM2ViODA3YTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5o
CkBAIC0yNyw2ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEtpbmQgeyBE
aXJlY3QsIE5vdERpcmVjdCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERp
cmVjdEFkZFByaXZhdGUsIERpcmVjdFB1dFByaXZhdGUgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA0ZGMwZTkxNWJjMzgyMzE5YTkyYTk2NzFi
NjNiMjhiNDcwZGU4MTNkLi5lM2ZhZGRjYmE5NjYyNWU5ZGU3MzJhZGE0ODE3Y2IwMTVlOTU0YzE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUo
KSkpOwogICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMg
PSBleGVjdXRhYmxlLT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAg
ICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJC
aW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2ZWRD
b250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAg
ICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCBhMDFkNDdkN2RjMGJjMWI0ODAxNjViYmNkMjY2ZDExYTZjMjMyYjQ1
Li42OTBmOTg2ODg1ZTMwNGE2YjZkYWQ3NWYzNzZiYjczMDg2Y2MyNWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMTg1Nyw2ICsxODU3LDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3Rh
bnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAKICAg
ICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IDogUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5KTsK
KworICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBldmFs
KCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVkLgor
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjY2MworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAg
ICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0y
NjQ0LDkgKzI2NDksMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSkKK3sKKyAgICBPcEdldEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVy
dHkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRo
aXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxOb25lKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKQEAgLTI2NjgsNiArMjY3OSwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywg
YmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbFByaXZhdGVGaWVsZEFkZCk7CisgICAgcmV0
dXJuIHZhbHVlOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZh
dGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpCit7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBw
cm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsUHJpdmF0ZUZpZWxkUHV0KTsKKyAgICByZXR1cm4gdmFs
dWU7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigp
CiB7CiAgICAgT3BTdXBlclNhbXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCAyOTg5Mzc0MGE4NWE1ODQ5ZTM5NzI4ODU2NTAzMmFlNzRiYWZmNTViLi45NjQzYTg0YmNjYjgw
NjA2MzVmN2Y2YzdkNjZhYjFjNmM0Njk5NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03ODYsMTEgKzc4
NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZh
bChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEludGVybmFsRmll
bGQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2Us
IHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRQcml2YXRlRmllbGRBZGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVG
aWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOwogCiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7CiAgICAg
ICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDNiM2NkNGJlNDg5YmMw
MjhjYjBiYmI0OTVlZDRjMGJjN2U1MjYyMDIuLmU2NWE1ZDM5OGRjNmJlZjhhMjAzZWNhMThkZTg1
ZWJkYmNmNDVhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU0OSw5ICs1NDksMTkgQEAgc3RhdGljIGlubGluZSB2
b2lkIGVtaXRQdXRIb21lT2JqZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGYKIAogUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3Is
IFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VG
aWVsZExvY2F0aW9ucykKIHsKLSAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRs
ZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgorICAgIC8vIFByaXZhdGVOYW1lcyBhcmUgaG9p
c3RlZCBhbmQgd2UgbmVlZCB0byBkZWNsYXJlIHRoZW0gYmVmb3JlIGNvbXB1dGVkIHByb3BlcnRp
ZXMgYXJlIGhhbmRsZWQuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAgICAgUmVn
aXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKKyAgICBmb3IgKDsgcDsgcCA9IHAtPm1fbmV4dCkgewor
ICAgICAgICBpZiAoIShwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5z
dGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOworICAg
ICAgICBlbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShnZW5lcmF0b3IsIGRzdCwgKnAtPm1fbm9kZSk7
CisgICAgfQorCisgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3Vs
YXIgdmFsdWUgcHJvcGVydGllcy4KKyAgICBwID0gdGhpczsKICAgICBmb3IgKDsgcCAmJiAocC0+
bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkg
ewogICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBw
cm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCkBAIC03MTMsNiArNzIzLDE4IEBAIFJlZ2lz
dGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0
YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3
T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CisgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVy
dHlOb2RlOjpQcml2YXRlKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2
YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtU
aW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgICAgIENhbGxBcmd1bWVu
dHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCkpLCBj
cmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3VtZW50cywg
cG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVidWdnYWJsZUNhbGw6Ok5vKTsK
KworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFtZSgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lz
dGVyKCksIHZhciwgc3ltYm9sLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZ2VuZXJhdG9yLnNob3VsZFNldEZ1
bmN0aW9uTmFtZShub2RlLm1fYXNzaWduKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9w
ZXJ0eU5hbWU7CkBAIC04NDMsMTYgKzg2NSw2NiBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rlcgog
ICAgIH0KIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKGJhc2VJ
c1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0
b3IuZW5zdXJlVGhpcygpOwotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmlu
YWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOwotICAg
IH0gZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0Lmdl
dCgpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBlbWl0R2V0
UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSk7CisK
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdC5nZXQoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQogCitSZWdpc3RlcklEKiBCYXNl
RG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4m
IHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIFZhcmlh
YmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3Rv
cmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJh
c2UsIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVy
Tm9kZSgpKSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVl
ID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChkc3QsIGJhc2UsIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgfQorCisg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkc3QsIGJhc2UsIG1faWRlbnQpOworfQor
CitSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKQor
eworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRHZXRQ
cm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZHN0LCBiYXNlLCB0aGlzVmFsdWUpOworfQorCitSZWdp
c3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVn
aXN0ZXJJRD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11
c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVO
YW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJv
d0lmTm90Rm91bmQpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQ
dXQoYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAobV9i
YXNlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAg
ICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHZhbHVl
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIG1faWRl
bnQsIHZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0
eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJl
dHVybiBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLCB2YWx1ZSwgdGhpc1ZhbHVlKTsK
K30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKQEAgLTE2NDAsMTEgKzE3MTIsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxE
b3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQog
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCkpOwogICAgIH0KICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1
YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVu
ZCgpKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHN1cGVyQmFzZSA9IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBzdXBlckJhc2UuZ2V0KCksIGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG1faWRlbnQpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBi
YXNlSXNTdXBlciA/IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1
bWVudHMudGhpc1JlZ2lzdGVyKCk7CisgICAgZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9y
LCBmdW5jdGlvbi5nZXQoKSwgYmFzZS5nZXQoKSk7CiAKICAgICBpZiAoaXNPcHRpb25hbENoYWlu
QmFzZSgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE9wdGlvbmFsQ2hlY2soZnVuY3Rpb24uZ2V0
KCkpOwpAQCAtMTk2NSw2ICsyMDM1LDIyIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0
RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBk
b3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CisKKyAg
ICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJh
c2VJc1N1cGVyKTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlk
ZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRS
ZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29w
ZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3Is
IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3Ip
OworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0
KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZhbHVlLmdldCgp
KTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKQEAgLTIxODgsNiAr
MjI3NCwyMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0
KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAg
ICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJh
c2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9y
LnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1l
LmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAg
ICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJh
c2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgZW1pdEluY09yRGVjKGdlbmVy
YXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2
YWx1ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIHBy
b3BEc3QuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7
CiAgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CkBAIC0yOTI0LDExICszMDI1LDcgQEAgUmVnaXN0ZXJJ
RCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9y
LmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAgIGlmIChtX2Jhc2UtPmlz
U3VwZXJOb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdl
bmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwot
ICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9p
ZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CisgICAgZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRv
ciwgYmFzZS5nZXQoKSwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwog
fQpAQCAtMjk0MCwyMyArMzAzNywxNSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRl
KG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9y
KSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZv
dCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsK
LSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIHRoaXNWYWx1ZSA9IGdl
bmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVl
LmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBlbWl0R2V0UHJvcGVydHlW
YWx1ZShnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSwgdGhpc1ZhbHVlKTsKKwogICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFk
TW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgc3RhdGljX2Nhc3Q8SlNDOjpP
cGVyYXRvcj4obV9vcGVyYXRvciksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlw
ZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBS
ZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKLSAgICAgICAg
cmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwg
bV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAgICBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRv
ci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXQgPSBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLmdl
dCgpLCB1cGRhdGVkVmFsdWUsIHRoaXNWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJu
IHJldDsKKyAgICByZXR1cm4gcmV0LmdldCgpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gQXNzaWduRXJyb3JOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC00MzUyLDYgKzQ0NDEsMTcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3Rl
cigpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBC
eXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFi
bGUsIG1fcG9zaXRpb24pOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBEZWZpbmVG
aWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lOiB7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdl
bmVyYXRvci52YXJpYWJsZSgqbV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0
dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50LT5sZW5ndGgoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2
ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0
KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
aXZhdGVGaWVsZEFkZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByaXZhdGVOYW1lLmdldCgp
LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXByb3Zl
IHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMKICAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMzMApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBlNmQ1YjY1YTRkMDExNmM2
ODZhZTA2ZTExOGNkN2ZjYTkzNzY3MWNmLi5hZTY3MDQxNWFmMjZlZDk1YjEyNzI3MTIzZDYwMDEx
NjdjM2NlMjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcApAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMu
aCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1
Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDc1OWI3NzgwYTZjYzdkZWNhNzAyNDg4ZjhlMWMyYTBiNjcwYmY5OWYuLjU0ZGEzMWFl
MDBlMDAyZmY2ZGMyNDQxMWRmZDU0OTZlY2I0YWRjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5NCw2ICsyOTQsNyBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgSQogCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX2NyZWF0
ZV9nZW5lcmF0b3JfZnJhbWVfZW52aXJvbm1lbnQ6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX2Rp
cmVjdDogLy8gRklYTUU6IG9wX2dldF9ieV92YWxfZGlyZWN0IHdpbGwgbmVlZCBERkcvRlRMIHN1
cHBvcnQgdG8gc2hpcCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xv
Z3VlOgogICAgIGNhc2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVs
ZV9wcm9ncmFtX3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCA3ZDA0YWQ2MTBiNmNmMzZiYWRjMWIzZTgwZTM1ZjFhMDE2
ZDhiZDgyLi41ZjYwYTE5ODY3YTRlZjk4NGJiNzljZjFmZDhjNjJlN2VhMGEyMDUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTM4
MTAsNyArMTM4MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIHVzZWRSZWdpc3RlcnMsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBtX2ppdC5lY21hTW9kZUZv
cihjb2RlT3JpZ2luKSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIG1faml0LmVjbWFN
b2RlRm9yKGNvZGVPcmlnaW4pLCBwdXRLaW5kLCBQdXRCeVZhbE5vbmUpOwogCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggZTc0N2VkZmRiOWQ3OGE0ZmE5Yjg5NmY0NDg1MmFjNDk1
NTUxMjBhNC4uM2VjMTQ2YjRmN2U0Mjg1NDUzMGI1NDc0ZjI1OTc4MWFjM2NhYTAzMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMzk4Niw3
ICszOTg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygp
LCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0u
Z3ByKCkpLAogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkp
LCBHUFJJbmZvOjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGly
ZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0LCBQdXRCeVZhbE5vbmUpOwogCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
b3IvRFNMLnJiCmluZGV4IDRhOGIxZTU4MTQ0MWZkYTY4NzZlNjUyYzk4NDYwMWEyYjNiNzlkMzQu
LjUzMGY5N2E3NTdiYmExYTI2ZWVlYzk5MDNmOWM1N2RiMGVhNTcwMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDAsNiArMTQwLDcgQEAgbW9kdWxlIERTTAog
I2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRl
ICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAi
VG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lD
U3RhdHMuaAppbmRleCA5MDQwZGYzODIwNzY0ZWRmOGQ1MTYxMWY4NjBmYzRkNDI2NTZjMTQ5Li45
NWU2MWJjYjM5Yzg2ZDY2MjUyYTM3OTkxMmQ3ZTg0MjQ2YTRmYjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0lDU3RhdHMuaApAQCAtNjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3Bl
cmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKKyAgICBtYWNybyhPcGVyYXRpb25Q
dXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRp
b25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKICAgICBtYWNybyhQdXRC
eUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXApIFwK
ICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggYzZlNjFiODliZjlhMWExOTVjM2U4Mzg2NGMxY2ExNzg0MDhhNWIwZi4uMmYwMzUwNDA4
MTAwZDliMzFhMDIyMDk4ODcwYjAxNTMwODUzY2E4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMjk4LDYgKzI5OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJ
TkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NM
T1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgICAgIERFRklORV9TTE9XX09QKGdldF9i
eV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfaWRfd2l0aF90aGlz
KQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAg
REVGSU5FX1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2
YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBkYjcyYWE3NGE5NThjZWJkMDk2OGU1ZjRm
YTVkNzUzNmVlYjg3OGJmLi44ZGRkZjk1NjM1N2EwZGI5NDc2YzVlZDcyODE5NDg2MDAwYTE0ZGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTM5OCw2ICszOTgsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAgIEp1bXBMaXN0IGVt
aXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlw
ZWRBcnJheVR5cGUpOwogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAgICBQ
dXRCeVZhbEZsYWdzIHB1dEJ5VmFsRmxhZ3MoT3ApOworCiAgICAgICAgIC8vIElkZW50aWZpZXIg
Y2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1p
dEJ5VmFsSWRlbnRpZmllckNoZWNrKEJ5VmFsSW5mbyosIFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0
ZXJJRCBzY3JhdGNoLCBjb25zdCBJZGVudGlmaWVyJiwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKaW5kZXggZjQxMTAyMTc2NGQ5ODk2NjIyM2ZlMTgyMGEyZjM4MzlhYzNlN2I5Zi4u
MGQxNmJhOTYwZDhmYmZmY2EwNjE2MWI2ODllMzEyNTRhMjY4YTQyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAg
LTEzNiwxMSArMTM2LDEyIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpK
SVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1
c2VkUmVnaXN0ZXJzLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBH
UFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkK
KyAgICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kLCBQdXRCeVZhbEZsYWdzIGZs
YWdzKQogICAgIDogSklUQnlJZEdlbmVyYXRvcigKICAgICAgICAgY29kZUJsb2NrLCBjb2RlT3Jp
Z2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1
ZSkKICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCiAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkK
KyAgICAsIG1fZmxhZ3MoZmxhZ3MpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5j
bGVhcihzY3JhdGNoKTsKIH0KQEAgLTE1Miw2ICsxNTMsMTQgQEAgdm9pZCBKSVRQdXRCeUlkR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3Bl
cmF0aW9uX0dTc2lKSkkgSklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7
CisgICAgaWYgKFVOTElLRUxZKG1fZmxhZ3MgJiBQdXRCeVZhbFByaXZhdGVOYW1lKSkgeworICAg
ICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFN
b2RlID09IFN0cmljdE1vZGUpOworICAgICAgICBpZiAobV9mbGFncyAmIFB1dEJ5VmFsVGhyb3dJ
ZkV4aXN0cykKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0
cmljdE9wdGltaXplOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVT
dHJpY3RPcHRpbWl6ZTsKKyAgICB9CisKICAgICBpZiAobV9lY21hTW9kZSA9PSBTdHJpY3RNb2Rl
KSB7CiAgICAgICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCAyNmU3MDBm
YmI3YWQxODNiZTFhY2JhNzNmMzdmNmZiNDJmZWZjZDBlLi5mN2E1NDRjOTIyZGY4NWM2OThlMDlh
OGE3NTFjNDIwNDU1MDFjMWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
Q29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtpbmQu
aCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzEsNyArMTMyLDcgQEAgcHVibGlj
OgogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9y
aWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpT
VmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRj
aCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVn
IHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQdXRCeVZhbEZsYWdzKTsKICAgICAKICAgICB2
b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0MCw2ICsx
NDEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAg
UHV0S2luZCBtX3B1dEtpbmQ7CisgICAgUHV0QnlWYWxGbGFncyBtX2ZsYWdzOwogfTsKIAogY2xh
c3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Ig
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCAyM2ZmNWM4MWMxYzAz
MjIyZjkxMmE0OTkzMWYyODM2ZGFkY2ZhY2I3Li43MzkxNGY0MDlmYjkxNjMxZjg2MzcxYWI0ZGVh
NmRmYzEzNzViYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAt
NjYzLDYgKzY2MywxOCBAQCBBTFdBWVNfSU5MSU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNv
cGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKICAgICByZXR1cm4gYXJpdGhQcm9m
aWxlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK0FMV0FZU19JTkxJTkUgUHV0QnlWYWxG
bGFncyBKSVQ6OnB1dEJ5VmFsRmxhZ3MoT3ApCit7CisgICAgcmV0dXJuIFB1dEJ5VmFsTm9uZTsK
K30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBQdXRCeVZhbEZsYWdzIEpJVDo6cHV0QnlW
YWxGbGFnczxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQoreworICAgIHJl
dHVybiBvcC5tX2ZsYWdzOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCBjZmIxMzQwYWU3YWQ2MzliZTE4YTZiNzhjMzhiYjhkZWE3MjRkMDYwLi4zMWY5YmUxZWYy
MzgyZTU2ODhhMDc1MWZhZmEyNTIzY2RlMDcxMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTY3OCw2ICs2NzgsMTEzIEBAIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJs
b2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIERpcmVj
dCk7CiB9CiAKK30gLy8gZXh0ZXJuICJDIgorCit1c2luZyBQdXRQcml2YXRlRmllbGRDYWxsYmFj
ayA9IHN0ZDo6ZnVuY3Rpb248dm9pZChWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSosIFB1dFBy
b3BlcnR5U2xvdCYsIGNvbnN0IElkZW50aWZpZXImKT47CitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkIHB1dFByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgSlNWYWx1ZSB2YWx1ZSwgUHV0S2luZCBwdXRLaW5kLCBjb25zdCBQdXRQcml2YXRl
RmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQorewor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworICAgIEFTU0VSVChpZGVu
dC5pc1ByaXZhdGVOYW1lKCkpOworICAgIEFTU0VSVChwdXRLaW5kID09IERpcmVjdEFkZFByaXZh
dGUgfHwgcHV0S2luZCA9PSBEaXJlY3RQdXRQcml2YXRlKTsKKworICAgIEpTT2JqZWN0KiBiYXNl
T2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
T2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkp
OworICAgIGJvb2wgZm91bmQgPSBiYXNlT2JqZWN0LT5pc1Byb3h5KCkgPyBKU09iamVjdDo6Z2V0
T3duUHJvcGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpCisg
ICAgICAgIDogYmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50
LCBzbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0QWRkUHJpdmF0ZSAmJiBmb3VuZCkKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVF
cnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBlbHNlIGlmIChwdXRLaW5kID09IERpcmVjdFB1dFBy
aXZhdGUgJiYgIWZvdW5kKQorICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gMDsKKyAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2Rl
QmxvY2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0
V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3QsIGJhc2VPYmplY3QsIGlkZW50LCB2YWx1ZSwgcHV0
U2xvdCwgJnN0cnVjdHVyZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJhY2sodm0sIGNvZGVCbG9jaywg
c3RydWN0dXJlLCBwdXRTbG90LCBpZGVudCk7Cit9CisKK2V4dGVybiAiQyIgeworCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgdWlkLCB2YWx1ZSwgRGlyZWN0QWRkUHJpdmF0ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworICAgIHB1dFBy
aXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIHVpZCwg
dmFsdWUsIERpcmVjdEFkZFByaXZhdGUsIFs9XShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1
dEJ5SWRBZGRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZv
KHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAgICAgICBp
ZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25z
aWRlckNhY2hpbmdCeUlkKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpCisgICAgICAgICAgICBy
ZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0
dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RBZGRQcml2YXRlKTsKKyAgICB9
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCit2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgdWlkLCB2YWx1ZSwgRGlyZWN0UHV0UHJpdmF0ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGlj
X2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworICAgIHB1dFBy
aXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIHVpZCwg
dmFsdWUsIERpcmVjdFB1dFByaXZhdGUsIFsmXShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1
dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZv
KHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAgICAgICBp
ZiAoYWNjZXNzVHlwZSAhPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNz
VHlwZSkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25z
aWRlckNhY2hpbmdCeUlkKHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSkpCisgICAgICAgICAgICBy
ZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0
dXJlLCBpZGVudCwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQdXRQcml2YXRlKTsKKyAgICB9
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworfQorCiBzdGF0aWMg
dm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZh
bHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbykKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CkBAIC03NzYsNiArODgzLDE2IEBAIHN0YXRpYyB2b2lkIGRpcmVjdFB1dEJ5VmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jayogY29kZUJsb2NrLCBKCiAKICAg
ICBzY29wZS5yZWxlYXNlKCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
aXNTdHJpY3RNb2RlKTsKKyAgICBpZiAocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKSB7CisgICAg
ICAgIC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBub24t
ZXhpc3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2UgYmVo
YXZpb3VyLgorICAgICAgICBhdXRvIGJ5dGVjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5hdChieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLT5hczxPcFB1dEJ5VmFsRGlyZWN0PigpOwor
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IEpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
c2xvdCk7CisgICAgICAgIGlmIChmb3VuZCA9PSAhIShieXRlY29kZS5tX2ZsYWdzICYgUHV0QnlW
YWxUaHJvd0lmRXhpc3RzKSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgZm91bmQgPyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2Jh
bE9iamVjdCkgOiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KICAgICBDb21tb25TbG93UGF0
aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCmluZGV4IDYwMGZjYTI5ZGMyMDM4NWRjNTAyMjI4MDI1NDExMmNhYzMxZDY4NDAu
LmQ2OGQ1M2QxYmU2ZTQ0MWFkZDQ1MzljMzc0ZGM0YjMyZTFjZjg1ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0QnVpbGRMaXN0KEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5v
blN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJp
Y3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQ
cml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFs
T2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgQnlWYWxJbmZvKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxHZW5lcmljKEpTR2xvYmFsT2Jq
ZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlW
YWxJbmZvKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBiNTNhNDkwZjVkZmIwOWZmNzJiM2U3YWUwNzQ3YzQx
Mjk1NWU1ZmY0Li41NmM1NWEwOTQ4MzViZmU1NTcwYjQwY2VjODA0OTc2YTVjYzFkM2EwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAt
Mjg2LDcgKzI4Niw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRo
Q2FjaGVkSWQoQnlWYWxJbmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlk
R2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIHB1dEtpbmQp
OworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBwdXRLaW5kLCBwdXRCeVZhbEZsYWdzKGJ5dGVjb2Rl
KSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGVtaXRXcml0ZUJhcnJp
ZXIoYmFzZSwgdmFsdWUsIFNob3VsZEZpbHRlckJhc2UpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQo
anVtcCgpKTsKQEAgLTY0OSw3ICs2NDksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2Vu
ZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUlu
ZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVu
YXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1
ZVJlZ3MocmVnVDEpLCByZWdUMiwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCi0gICAgICAgIGRp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5v
dERpcmVjdCwgUHV0QnlWYWxOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgq
dGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4
IGI2NjlkZDhiN2FkMjZkM2Y3N2Q5Njg2ZGU2MDgzNDM0ZjM2ZGJjNTMuLjQ4NjFlYzE2YTZhY2Y3
ZDA1MDE1MGVkYzIwM2QyZjFjODExMDQxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzcyLDcgKzM3Miw3IEBA
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoQnlWYWxJ
bmZvKiBieVZhbEluZm8sIE9wIGJ5dGVjCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0
S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgcHV0S2lu
ZCwgcHV0QnlWYWxGbGFncyhieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYwNiw3ICs2MDYsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2Rl
QmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVj
b2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksCi0gICAgICAgIHJlZ1QxLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgcmVnVDEsIG1fY29kZUJsb2NrLT5lY21hTW9k
ZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFB1dEJ5VmFsTm9uZSk7CiAgICAgCiAg
ICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93
UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBlMTY0
YmMxNTQ4OWM4MTJlN2ZhODZhMTIzZDIyNTBmM2RiOTg3YTkzLi41Y2Q3YWY1MmQ4NzYwNjQ3YTJk
MGRlYTEzMGI2MDlmYzE0ODJiY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAKQEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGljIFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBw
cm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnQKICAgICBpZiAo
c2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAg
ICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0QWRkUHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGly
ZWN0UHV0UHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZVN0cmljdDsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7CiAgICAg
fQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTUzMiw2ICs1MzYsMTAgQEAgc3RhdGlj
IFZfSklUT3BlcmF0aW9uX0dTc2lKSkkgYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0
aW9uKGNvbnN0IFB1dFByb3AKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RB
ZGRQcml2YXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRl
U3RyaWN0T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFB1dFByaXZhdGUp
CisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3RPcHRp
bWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKICAg
ICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtNjI0LDYgKzYzMiw3IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQ
cm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAg
aWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChw
dXRLaW5kICE9IERpcmVjdFB1dFByaXZhdGUgJiYgcHV0S2luZCAhPSBEaXJlY3RBZGRQcml2YXRl
KTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZv
ckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
R2l2ZVVwT25DYWNoZTsKQEAgLTY0MSw2ICs2NTAsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxv
Y2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0s
IGNvZGVCbG9jaywgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKGlkZW50KSwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwg
Y29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3Qu
aXNDYWNoZWFibGVTZXR0ZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA3MTI1YmQ0ZjUxYWY4MTViOWQ1
MDY2MWViN2EzYzI0MWE1YWQ2MDNiLi43NTY4ZDIzNmQzYWZiNWZjMTRhNjM4NzQ1MTg3NmY4OTky
Zjk0NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUV4
ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dD
aGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hh
aW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IDJiZmZjMzgxNjNmZTMxYmU5NDFiZWQ2YTVmYjU2ZDI5OGJlYjYyMjcuLmMxMzRlMzdl
NDlkNDViMWQ1NzVlYzQ4ZDEzYWZmOWMzMWU1Y2U2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA1OSwxNCArMTA1OSwxNyBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgUkVM
RUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBib29sIGlzU3RyaWN0TW9kZSA9IGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCk7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lQWNjZXNzID0gYnl0
ZWNvZGUubV9mbGFncyAmIFB1dEJ5VmFsUHJpdmF0ZU5hbWU7CiAgICAgaWYgKExJS0VMWShzdWJz
Y3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1
ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQz
Ml90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBB
U1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOworICAgICAgICBBU1NFUlQoIWlz
UHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChn
bG9iYWxPYmplY3QsIHN1YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0Lmlz
RG91YmxlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lQWNjZXNzKTsKICAgICAg
ICAgZG91YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CiAgICAg
ICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1
YnNjcmlwdEFzRG91YmxlKTsKICAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNj
cmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7CkBAIC0xMDgwLDkg
KzEwODMsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGly
ZWN0KQogICAgIGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAg
TExJTlRfRU5EKCk7CiAKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlz
UHJpdmF0ZU5hbWVBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBw
YXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0
RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwog
ICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQcml2YXRlTmFtZUFjY2VzcykgeworICAgICAgICAg
ICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAvLyBUaHJv
dyBhIFR5cGVFcnJvciBpZiBhdHRlbXB0aW5nIHRvIHN0b3JlIHRvIGEgbm9uLWV4aXN0ZW50IHBy
aXZhdGUgZmllbGQuIFRoaXMgaXMgc2ltaWxhciB0byBhIFREWi1saWtlIGJlaGF2aW91ci4KKyAg
ICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IEpT
T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoYmFzZU9iamVjdCwgZ2xvYmFsT2JqZWN0LCBwcm9w
ZXJ0eSwgc2xvdCk7CisgICAgICAgICAgICBpZiAoZm91bmQgPT0gYm9vbChieXRlY29kZS5tX2Zs
YWdzICYgUHV0QnlWYWxUaHJvd0lmRXhpc3RzKSkKKyAgICAgICAgICAgICAgICBMTElOVF9USFJP
Vyhmb3VuZCA/IGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSA6
IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICB9
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxP
YmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA2MjY1MmE2NjIzNWViYzUyNzkwYWYxNzBmMGRmYjhhNGRiNDAwMTQyLi42
Yjc5ZTg4ODM3NWE1MGU1MzUzZmVmODc4YTI3MjQwZWRhMjllMWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTUwOSw2NCArMTUwOSw2OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9p
ZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQp
CiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5h
bWUsIG9zckV4aXRQb2ludCkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgJW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQy
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRh
ZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgYXJy
YXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0
NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93
KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MworICAgICAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAu
b3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBl
LCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3Vz
OgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
IGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5v
cEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAu
b3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0
QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRuZXF1
biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQg
YmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAgZmQyaWkgZnQwLCB0MSwgdDIKKyAgICAg
ICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKKworICAg
IC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0
MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFn
ZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5v
cEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFn
T2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisKKyAgICAub3BHZXRCeVZhbERvbmU6
CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFsTm90RW1wdHk6CisgICAgICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1
LCB0MiwgdDEpCisgICAgICAgIGRpc3BhdGNoKCkKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRC
eVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotICAgIGdldChtX3By
b3BlcnR5LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0Mywg
SW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0
dGVyZmx5W3QwXSwgdDMKLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEg
dDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENv
bnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXND
b250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAg
ICBsb2FkaSBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3QzLCB0MSwgOF0sIHQxCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5v
dENvbnRpZ3VvdXM6Ci0gICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERv
dWJsZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2Fk
ZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93
Ci0gICAgIyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgotICAgIGZk
MmlpIGZ0MCwgdDEsIHQyCi0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBqbXAgLm9wR2V0QnlWYWxO
b3RFbXB0eQotCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFnZVNo
YXBlLCB0MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9y
YWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdwotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5n
SGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BH
ZXRCeVZhbFNsb3cKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0
W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxv
YWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLQotLm9wR2V0QnlWYWxEb25lOgotICAgIGdldChtX2Rz
dCwgdDApCi0gICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93Ci0ub3BH
ZXRCeVZhbE5vdEVtcHR5OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCi0g
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxl
KE9wR2V0QnlWYWwsIHQ1LCB0MiwgdDEpCi0gICAgZGlzcGF0Y2goKQorICAgIC5vcEdldEJ5VmFs
U2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0
Y2goKQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCgpCisgICAgLm9zclJldHVyblBvaW50OgorICAg
ICAgICBvc3JFeGl0UG9pbnQoc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBlbmQpCitlbmQK
IAotLm9zclJldHVyblBvaW50OgorZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBf
bGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwsIG1hY3JvKHNpemUsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUp
CiAgICAgbWV0YWRhdGEodDIsIHQzKQogICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCB0Miwg
cjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlWYWxPcChnZXRfYnlf
dmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVj
dCwgbWFjcm8oYSwgYiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9w
Y29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9w
Y29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAzNDE2ODBhYmVlODE5YTI1MmM3N2VlNWY2ZjA5
NmVkNTdlMTFjOTQ0Li5jZTRhZTNmZjI2MjQwYWQ4NGQ3MjVlNjQyZjI1ZGQxMjRjN2EyMzA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQpAQCAtMTQ5MiwxODQgKzE0OTIsMTg3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IHNsb3dQYXRoTmFtZSkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwg
JW9wY29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQorICAgICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBzdG9yZXEgcmVzdWx0LCBb
Y2ZyLCBzY3JhdGNoLCA4XQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3Ql
LCB0NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKLSAgICAgICAg
c3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCByZXN1bHQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQKKyAgICAg
ICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAgICAg
b3JxIG51bWJlclRhZywgcmVzdWx0CisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQs
IHNjcmF0Y2gpCisgICAgICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVz
dWx0LCBzY3JhdGNoKQotICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKLSAgICAgICAgZmlu
aXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQotICAgIGVuZAorICAgICAgICBtYWNybyBmaW5p
c2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgICAg
IGZkMnEgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICAgICAgc3VicSBudW1iZXJUYWcsIHNjcmF0
Y2gxCisgICAgICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAg
ICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
MSwgc2NyYXRjaDIpCi0gICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdWJx
IG51bWJlclRhZywgc2NyYXRjaDEKLSAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNj
cmF0Y2gyKQotICAgIGVuZAorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0
YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAotICAgIGdldCht
X2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwg
Lm9wR2V0QnlWYWxTbG93KQotCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BH
ZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0
KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0
MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKLQotICAgIGxvYWRDYWdl
ZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKLSAgICBt
b3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCi0KLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0
MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAg
YmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5v
cEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRC
eVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0Mgot
ICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQot
Lm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9w
R2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxT
bG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAg
YmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmQycSBmdDAsIHQyCi0gICAg
c3VicSBudW1iZXJUYWcsIHQyCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotICAgIAotLm9wR2V0
QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEg
dDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRC
eVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5
VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3Zl
Y3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotCi0ub3BH
ZXRCeVZhbERvbmU6Ci0gICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2Zp
bGUoT3BHZXRCeVZhbCwgdDUsIHQyKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgbW92ZSB0MCwg
dDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJh
eVByb2ZpbGUsIHQyLCB0NSwgdDEpCiAKLS5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0g
ICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBhIHR5cGVkIGFycmF5LiBUaGlz
IGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4KLSAgICBsb2FkYiBKU0NlbGw6
Om1fdHlwZVt0MF0sIHQyCi0gICAgc3ViaSBGaXJzdFR5cGVkQXJyYXlUeXBlLCB0MgotICAgIGJp
YWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRC
eVZhbFNsb3cKLSAgICAKLSAgICAjIFN3ZWV0LCBub3cgd2Uga25vdyB0aGF0IHdlIGhhdmUgYSB0
eXBlZCBhcnJheS4gRG8gc29tZSBiYXNpYyB0aGluZ3Mgbm93LgorICAgICAgICBnZXQobV9wcm9w
ZXJ0eSwgdDMpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0Mywg
dDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBpZiBBUk02
NEUKLSAgICAgICAgY29uc3QgbGVuZ3RoID0gdDYKLSAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3
Ci0gICAgICAgIGxvYWRpIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIGxlbmd0aAot
ICAgICAgICBiaWFlcSB0MSwgbGVuZ3RoLCAub3BHZXRCeVZhbFNsb3cKLSAgICBlbHNlCi0gICAg
ICAgICMgbGVuZ3RoIGFuZCBzY3JhdGNoIGFyZSBpbnRlbnRpb25hbGx5IHVuZGVmaW5lZCBvbiB0
aGlzIGJyYW5jaCBiZWNhdXNlIHRoZXkgYXJlIG5vdCB1c2VkIG9uIG90aGVyIHBsYXRmb3Jtcy4K
LSAgICAgICAgYmlhZXEgdDEsIEpTQXJyYXlCdWZmZXJWaWV3OjptX2xlbmd0aFt0MF0sIC5vcEdl
dEJ5VmFsU2xvdwotICAgIGVuZAorICAgICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0Ojpt
X2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCisgICAgICAgIG1vdmUgVGFnTnVtYmVyLCBu
dW1iZXJUYWcKIAotICAgIGxvYWRwIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQz
Ci0gICAgY2FnZWRQcmltaXRpdmUodDMsIGxlbmd0aCwgdDAsIHNjcmF0Y2gpCi0KLSAgICAjIE5v
dyBiaXNlY3QgdGhyb3VnaCB0aGUgdmFyaW91cyB0eXBlczoKLSAgICAjICAgIEludDhBcnJheVR5
cGUsCi0gICAgIyAgICBVaW50OEFycmF5VHlwZSwKLSAgICAjICAgIFVpbnQ4Q2xhbXBlZEFycmF5
VHlwZSwKLSAgICAjICAgIEludDE2QXJyYXlUeXBlLAotICAgICMgICAgVWludDE2QXJyYXlUeXBl
LAotICAgICMgICAgSW50MzJBcnJheVR5cGUsCi0gICAgIyAgICBVaW50MzJBcnJheVR5cGUsCi0g
ICAgIyAgICBGbG9hdDMyQXJyYXlUeXBlLAotICAgICMgICAgRmxvYXQ2NEFycmF5VHlwZSwKLQot
ICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0
QnlWYWxBYm92ZVVpbnQxNkFycmF5Ci0KLSAgICAjIFdlIGhhdmUgb25lIG9mIEludDhBcnJheVR5
cGUgLi4gVWludDE2QXJyYXlUeXBlLgotICAgIGJpYSB0MiwgVWludDhDbGFtcGVkQXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJh
eQotCi0gICAgIyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRB
cnJheVR5cGUKLSAgICBiaWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBl
LCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5Ci0KLSAgICAjIFdlIGhh
dmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxVaW50OEFycmF5T3JVaW50OENsYW1wZWRB
cnJheToKLSAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQotCi0gICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKLQotLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDhD
bGFtcGVkQXJyYXlUeXBlLgotICAgIGxvYWRiIFt0MywgdDFdLCB0MAotICAgIGZpbmlzaEludEdl
dEJ5VmFsKHQwLCB0MSkKLQotLm9wR2V0QnlWYWxJbnQxNkFycmF5T3JVaW50MTZBcnJheToKLSAg
ICAjIFdlIGhhdmUgZWl0aGVyIEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5
cGUuCi0gICAgYmlhIHQyLCBJbnQxNkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5v
cEdldEJ5VmFsVWludDE2QXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQxNkFycmF5VHlwZS4KLSAg
ICBsb2FkaHNpIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkK
LQotLm9wR2V0QnlWYWxVaW50MTZBcnJheToKLSAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBl
LgotICAgIGxvYWRoIFt0MywgdDEsIDJdLCB0MAotICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKLQotLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2Yg
SW50MzJBcnJheVR5cGUgLi4gRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBiaWEgdDIsIFVpbnQzMkFy
cmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JG
bG9hdDY0QXJyYXkKLQotICAgICMgV2UgaGF2ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWlu
dDMyQXJyYXlUeXBlCi0gICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJh
eVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJyYXkKLQotICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5
VHlwZS4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBmaW5pc2hJbnRHZXRCeVZhbCh0
MCwgdDEpCi0KLS5vcEdldEJ5VmFsVWludDMyQXJyYXk6Ci0gICAgIyBXZSBoYXZlIFVpbnQzMkFy
cmF5VHlwZS4KLSAgICAjIFRoaXMgaXMgdGhlIGhhcmRlc3QgcGFydCBiZWNhdXNlIG9mIGxhcmdl
IHVuc2lnbmVkIHZhbHVlcy4KLSAgICBsb2FkaSBbdDMsIHQxLCA0XSwgdDAKLSAgICBiaWx0IHQw
LCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2FyZCB0byBpbXBs
ZW1lbnQgaW4gTExJbnQuCi0gICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQotCi0ub3BHZXRC
eVZhbEZsb2F0MzJBcnJheU9yRmxvYXQ2NEFycmF5OgotICAgICMgV2UgaGF2ZSBvbmUgb2YgRmxv
YXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBTYWRseSwgd2UgY2Fubm90IGhhbmRs
ZSBGbG9hdDMyQXJyYXkKLSAgICAjIGlubGluZSB5ZXQuIFRoYXQgd291bGQgcmVxdWlyZSBzb21l
IG9mZmxpbmVhc20gY2hhbmdlcy4KLSAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmly
c3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxTbG93Ci0KLSAgICAjIFdlIGhhdmUgRmxvYXQ2
NEFycmF5VHlwZS4KLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAs
IGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwg
dDEpCi0KLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgYW5kaSBJbmRleGluZ1NoYXBl
TWFzaywgdDIKKyAgICAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRp
Z3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RD
b250aWd1b3VzCisKKyAgICAub3BHZXRCeVZhbElzQ29udGlndW91czoKKyAgICAgICAgYmlhZXEg
dDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1
YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQor
ICAgICAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlW
YWxTbG93CisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFsTm90
Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5v
dERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Cisg
ICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAg
ICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGZkMnEgZnQw
LCB0MgorICAgICAgICBzdWJxIG51bWJlclRhZywgdDIKKyAgICAgICAgam1wIC5vcEdldEJ5VmFs
RG9uZQorICAgICAgICAKKyAgICAub3BHZXRCeVZhbE5vdERvdWJsZToKKyAgICAgICAgc3ViaSBB
cnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZQor
ICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGdl
dChtX2RzdCwgdDApCisgICAgICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMsIHQx
LCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CisKKyAgICAub3BHZXRC
eVZhbERvbmU6CisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCisgICAgICAgIHZhbHVl
UHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgdDUsIHQyKQorICAgICAgICBkaXNwYXRjaCgpCiAKLS5v
c3JSZXR1cm5Qb2ludDoKLSAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0
X2J5X3ZhbCwgc2l6ZSkKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIHQ1LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgLm9wR2V0QnlWYWxOb3RJbmRl
eGVkU3RvcmFnZToKKyAgICAgICAgIyBGaXJzdCBsZXRzIGNoZWNrIGlmIHdlIGV2ZW4gaGF2ZSBh
IHR5cGVkIGFycmF5LiBUaGlzIGxldHMgdXMgZG8gc29tZSBib2lsZXJwbGF0ZSB1cCBmcm9udC4K
KyAgICAgICAgbG9hZGIgSlNDZWxsOjptX3R5cGVbdDBdLCB0MgorICAgICAgICBzdWJpIEZpcnN0
VHlwZWRBcnJheVR5cGUsIHQyCisgICAgICAgIGJpYWVxIHQyLCBOdW1iZXJPZlR5cGVkQXJyYXlU
eXBlc0V4Y2x1ZGluZ0RhdGFWaWV3LCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgCisgICAgICAg
ICMgU3dlZXQsIG5vdyB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhIHR5cGVkIGFycmF5LiBEbyBzb21l
IGJhc2ljIHRoaW5ncyBub3cuCiAKLWVuZCkKKyAgICAgICAgaWYgQVJNNjRFCisgICAgICAgICAg
ICBjb25zdCBsZW5ndGggPSB0NgorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IHQ3CisgICAg
ICAgICAgICBsb2FkaSBKU0FycmF5QnVmZmVyVmlldzo6bV9sZW5ndGhbdDBdLCBsZW5ndGgKKyAg
ICAgICAgICAgIGJpYWVxIHQxLCBsZW5ndGgsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBlbHNl
CisgICAgICAgICAgICAjIGxlbmd0aCBhbmQgc2NyYXRjaCBhcmUgaW50ZW50aW9uYWxseSB1bmRl
ZmluZWQgb24gdGhpcyBicmFuY2ggYmVjYXVzZSB0aGV5IGFyZSBub3QgdXNlZCBvbiBvdGhlciBw
bGF0Zm9ybXMuCisgICAgICAgICAgICBiaWFlcSB0MSwgSlNBcnJheUJ1ZmZlclZpZXc6Om1fbGVu
Z3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGVuZAorCisgICAgICAgIGxvYWRwIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzCisgICAgICAgIGNhZ2VkUHJpbWl0aXZl
KHQzLCBsZW5ndGgsIHQwLCBzY3JhdGNoKQorCisgICAgICAgICMgTm93IGJpc2VjdCB0aHJvdWdo
IHRoZSB2YXJpb3VzIHR5cGVzOgorICAgICAgICAjICAgIEludDhBcnJheVR5cGUsCisgICAgICAg
ICMgICAgVWludDhBcnJheVR5cGUsCisgICAgICAgICMgICAgVWludDhDbGFtcGVkQXJyYXlUeXBl
LAorICAgICAgICAjICAgIEludDE2QXJyYXlUeXBlLAorICAgICAgICAjICAgIFVpbnQxNkFycmF5
VHlwZSwKKyAgICAgICAgIyAgICBJbnQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBVaW50MzJB
cnJheVR5cGUsCisgICAgICAgICMgICAgRmxvYXQzMkFycmF5VHlwZSwKKyAgICAgICAgIyAgICBG
bG9hdDY0QXJyYXlUeXBlLAorCisgICAgICAgIGJpYSB0MiwgVWludDE2QXJyYXlUeXBlIC0gRmly
c3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5CisKKyAgICAgICAg
IyBXZSBoYXZlIG9uZSBvZiBJbnQ4QXJyYXlUeXBlIC4uIFVpbnQxNkFycmF5VHlwZS4KKyAgICAg
ICAgYmlhIHQyLCBVaW50OENsYW1wZWRBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAu
b3BHZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIG9u
ZSBvZiBJbnQ4QXJyYXlUeXBlIC4uLiBVaW50OENsYW1wZWRBcnJheVR5cGUKKyAgICAgICAgYmlh
IHQyLCBJbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50
OEFycmF5T3JVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBJbnQ4QXJyYXlU
eXBlLgorICAgICAgICBsb2FkYnNpIFt0MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCisKKyAgICAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFy
cmF5OgorICAgICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlw
ZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQorCisgICAgICAgICMgV2UgaGF2ZSBVaW50
OEFycmF5VHlwZS4KKyAgICAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCisgICAgICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKKworICAgIC5vcEdldEJ5VmFsVWludDhDbGFtcGVkQXJyYXk6Cisg
ICAgICAgICMgV2UgaGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGxvYWRiIFt0
MywgdDFdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisKKyAgICAub3BH
ZXRCeVZhbEludDE2QXJyYXlPclVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgZWl0aGVy
IEludDE2QXJyYXlUeXBlIG9yIFVpbnQxNkNsYW1wZWRBcnJheVR5cGUuCisgICAgICAgIGJpYSB0
MiwgSW50MTZBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQx
NkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDE2QXJyYXlUeXBlLgorICAgICAgICBsb2Fk
aHNpIFt0MywgdDEsIDJdLCB0MAorICAgICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCisK
KyAgICAub3BHZXRCeVZhbFVpbnQxNkFycmF5OgorICAgICAgICAjIFdlIGhhdmUgVWludDE2QXJy
YXlUeXBlLgorICAgICAgICBsb2FkaCBbdDMsIHQxLCAyXSwgdDAKKyAgICAgICAgZmluaXNoSW50
R2V0QnlWYWwodDAsIHQxKQorCisgICAgLm9wR2V0QnlWYWxBYm92ZVVpbnQxNkFycmF5OgorICAg
ICAgICAjIFdlIGhhdmUgb25lIG9mIEludDMyQXJyYXlUeXBlIC4uIEZsb2F0NjRBcnJheVR5cGUu
CisgICAgICAgIGJpYSB0MiwgVWludDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxGbG9hdDMyQXJyYXlPckZsb2F0NjRBcnJheQorCisgICAgICAgICMgV2UgaGF2
ZSBlaXRoZXIgSW50MzJBcnJheVR5cGUgb3IgVWludDMyQXJyYXlUeXBlCisgICAgICAgIGJpYSB0
MiwgSW50MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQz
MkFycmF5CisKKyAgICAgICAgIyBXZSBoYXZlIEludDMyQXJyYXlUeXBlLgorICAgICAgICBsb2Fk
aSBbdDMsIHQxLCA0XSwgdDAKKyAgICAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQorCisg
ICAgLm9wR2V0QnlWYWxVaW50MzJBcnJheToKKyAgICAgICAgIyBXZSBoYXZlIFVpbnQzMkFycmF5
VHlwZS4KKyAgICAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJn
ZSB1bnNpZ25lZCB2YWx1ZXMuCisgICAgICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAorICAgICAg
ICBiaWx0IHQwLCAwLCAub3BHZXRCeVZhbFNsb3cgIyBUaGlzIGNhc2UgaXMgc3RpbGwgYXdrd2Fy
ZCB0byBpbXBsZW1lbnQgaW4gTExJbnQuCisgICAgICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0
MSkKKworICAgIC5vcEdldEJ5VmFsRmxvYXQzMkFycmF5T3JGbG9hdDY0QXJyYXk6CisgICAgICAg
ICMgV2UgaGF2ZSBvbmUgb2YgRmxvYXQzMkFycmF5VHlwZSBvciBGbG9hdDY0QXJyYXlUeXBlLiBT
YWRseSwgd2UgY2Fubm90IGhhbmRsZSBGbG9hdDMyQXJyYXkKKyAgICAgICAgIyBpbmxpbmUgeWV0
LiBUaGF0IHdvdWxkIHJlcXVpcmUgc29tZSBvZmZsaW5lYXNtIGNoYW5nZXMuCisgICAgICAgIGJp
ZXEgdDIsIEZsb2F0MzJBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZh
bFNsb3cKKworICAgICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KKyAgICAgICAgbG9h
ZGQgW3QzLCB0MSwgOF0sIGZ0MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZh
bFNsb3cKKyAgICAgICAgZmluaXNoRG91YmxlR2V0QnlWYWwoZnQwLCB0MCwgdDEpCisKKyAgICAu
b3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAg
ICAgIGRpc3BhdGNoKCkKKworICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgZ2V0dGVyU2V0
dGVyT1NSRXhpdFJldHVyblBvaW50KG9wXyVvcGNvZGVOYW1lJSwgc2l6ZSkKKyAgICAgICAgbWV0
YWRhdGEodDUsIHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIHQ1LCBy
MCkKKyAgICAgICAgcmV0dXJuKHIwKQorICAgIGVuZCkKK2VuZAorCitnZXRCeVZhbE9wKGdldF9i
eV92YWwsIE9wR2V0QnlWYWwsIF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIAorZ2V0QnlW
YWxPcChnZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRf
YnlfdmFsX2RpcmVjdCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1l
JSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNGM2
MTczMGVkZWM4YWRlYmU5NWQ2OWZhYTcwNWVjMWMyMGJmNWU5OC4uODM1Y2QwMzA4MjkxYTJjODc1
ZjI5ZGVkNmIxZGJmNjljYjY3MTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciogcHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBE
b3RUeXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAg
aWYgKGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAgICAgICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0eSgp
OwogICAgICAgICAKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAg
ICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNz
b3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHksIHR5cGUpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBu
b2RlOwogICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bm9kZS0+aXNBc3NpZ25tZW50TG9jYXRpb24oKTsKICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0
ZUxvY2F0aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
bm9kZS0+aXNQcml2YXRlTG9jYXRpb24oKTsKKyAgICB9CisKICAgICBib29sIGlzT2JqZWN0TGl0
ZXJhbChjb25zdCBFeHByZXNzaW9uJiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGUt
PmlzT2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQzOCwxNSArMTQ0MywxNSBAQCBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZSA9IG51bGxw
dHI7CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpIHx8
IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Y2FsbFByaXZhdGVOYW1lKCkpKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hp
bGREZXB0aCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRv
dC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5
Q2hpbGREZXB0aCk7CiAgICAgZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5
UHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAvLyBGSVhNRTog
VGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRoZSBi
eXRlY29kZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0
LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAg
ICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQotICAg
ICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwog
ICAgIH0KICAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRp
dm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpAQCAt
MTU3MSw5ICsxNTc2LDkgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAgICBBU1NFUlQobG9j
LT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRp
Y19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0g
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3Qo
KSwgc3RhcnQsIGVuZCk7CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0
LCBlbmQpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBkb3QtPnR5cGUoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0
YXJ0LCBlbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDNhOGM0ZWMyMWZjNDRmZTMxMDY2ODIyZDZh
NjhjMmFhNDY1MDY0YmMuLmJlNzAxOWJiNDJmN2VkMDhlOGM5YmJjNDE2MzQ3ZmViZmY4Mjc0ODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05NTAsMTAgKzk1MCwx
MyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQg
PT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwog
ICAgICAgICB9CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVu
dCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworCisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAgICBib29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1
cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKICAgICBib29sIGlzV2Vs
bEtub3duU3ltYm9sID0gZmFsc2U7Ci0gICAgaWYgKGlzUHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAo
aXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICBlbHNlIGlmIChpc0J1aWx0aW5O
YW1lKSB7CiAgICAgICAgIEFTU0VSVChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pOwogICAgICAg
ICBzaGlmdCgpOwogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdAJykgewpAQCAtOTYxLDcgKzk2
NCw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICBzaGlmdCgpOwogICAg
ICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9
IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkg
fHwgbV9jdXJyZW50ID09ICdcXCcpOwogICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQp
KQpAQCAtOTc0LDcgKzk3Nyw4IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgCiAgICAg
aWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7
CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRl
bnRpZmllclN0YXJ0OwotICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uICYmIGlz
UHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOworICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uICYmIGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgICAgIGlmIChpc1dlbGxLbm93blN5
bWJvbCkKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllciht
X3ZtLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5
bWJvbChpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpKTsKICAgICAgICAgICAgIGVs
c2UKQEAgLTk5NiwyMCArMTAwMCwyMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVu
dGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgIH0g
ZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKIAotICAgIGlmIChVTkxJ
S0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5z
KExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgewor
ICAgIGF1dG8gaWRlbnRUeXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7
CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVy
RmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc0J1
aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25z
dCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwog
ICAgICAgICAgICAgQVNTRVJUKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgfHwgIWVudHJ5
KTsKICAgICAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIElERU5U
OworICAgICAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgICAgICBKU1Rva2Vu
VHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgp
KTsKLSAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBz
dHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0g
UkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBpZGVudFR5cGU7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICByZXR1cm4gaWRlbnRUeXBl
OwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQog
CiB0ZW1wbGF0ZSA8PgpAQCAtMTAyNiw2ICsxMDMxLDEwIEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+
OjpwCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJyMnOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAg
ICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAg
ICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQoaXNTaW5nbGVDaGFyYWN0ZXJJZGVu
dFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpIHx8IG1fY3Vy
cmVudCA9PSAnXFwnKTsKQEAgLTEwNTAsNiArMTA1OSw5IEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+
OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogICAg
IAorICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICByZXR1cm4gUFJJVkFURU5BTUU7CisK
ICAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJG
bGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKICAgICAg
ICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5n
IDwgbWF4VG9rZW5MZW5ndGgpIHsKQEAgLTEwNzQsNiArMTA4NiwxMCBAQCBKU1Rva2VuVHlwZSBM
ZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEq
IHRva2VuRGF0YQogICAgIEFTU0VSVChtX2J1ZmZlcjE2LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KCF0b2tlbkRhdGEtPmVzY2FwZWQpOwogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gKmlkZW50
aWZpZXJTdGFydCA9PSAnIyc7CisgICAgSlNUb2tlblR5cGUgaWRlbnRUeXBlID0gaXNQcml2YXRl
TmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CisgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lIHx8
IGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50U291cmNlUHRyKCkpOworCiAgICAgYXV0byBmaWxs
QnVmZmVyID0gWyZdIChib29sIGlzU3RhcnQgPSBmYWxzZSkgewogICAgICAgICAvLyBcdVhYWFgg
dW5pY29kZSBjaGFyYWN0ZXJzIG9yIFN1cnJvZ2F0ZSBwYWlycy4KICAgICAgICAgaWYgKGlkZW50
aWZpZXJTdGFydCAhPSBjdXJyZW50U291cmNlUHRyKCkpCkBAIC0xMDkzLDcgKzExMDksNyBAQCBK
U1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2Uo
SlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAgICAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50
aWZpZXIpCiAgICAgICAgICAgICAgICAgcmVjb3JkVW5pY29kZUNvZGVQb2ludChjaGFyYWN0ZXIu
dmFsdWUoKSk7CiAgICAgICAgICAgICBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRy
KCk7Ci0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRU
eXBlOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKFUxNl9JU19TVVJST0dBVEUobV9jdXJy
ZW50KSk7CkBAIC0xMTA5LDcgKzExMjUsNyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJU
eXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAg
ICAgICBzaGlmdCgpOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZGVudGlmaWVyU3RhcnQg
PSBjdXJyZW50U291cmNlUHRyKCk7Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgcmV0
dXJuIGlkZW50VHlwZTsKICAgICB9OwogCiAgICAgSlNUb2tlblR5cGUgdHlwZSA9IGZpbGxCdWZm
ZXIoaWRlbnRpZmllclN0YXJ0ID09IGN1cnJlbnRTb3VyY2VQdHIoKSk7CkBAIC0xMTQ1LDEzICsx
MTYxLDEzIEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZp
ZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgIEFTU0VSVChzaG91bGRD
cmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0g
SlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAg
ICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAg
ICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5s
ZXhlclZhbHVlKCkpOwogICAgICAgICBpZiAoKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkg
fHwgc3RyaWN0TW9kZSkKICAgICAgICAgICAgIHJldHVybiBVTkVYUEVDVEVEX0VTQ0FQRV9FUlJP
UlRPSzsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsK
IH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjaGFyYWN0ZXJSZXF1aXJlc1BhcnNlU3Ry
aW5nU2xvd0Nhc2UoTENoYXIgY2hhcmFjdGVyKQpAQCAtMjQ2OSwxNCArMjQ4NSwyMSBAQCBzdGFy
dDoKICAgICAgICAgbV9oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuID0gdHJ1ZTsKICAgICAg
ICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgY2FzZSBD
aGFyYWN0ZXJIYXNoOgorICAgIGNhc2UgQ2hhcmFjdGVySGFzaDogewogICAgICAgICAvLyBIYXNo
YmFuZyBpcyBvbmx5IHBlcm1pdHRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHNvdXJjZSB0ZXh0Lgot
ICAgICAgICBpZiAocGVlaygxKSA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkgeworICAgICAg
ICBhdXRvIG5leHQgPSBwZWVrKDEpOworICAgICAgICBpZiAobmV4dCA9PSAnIScgJiYgIWN1cnJl
bnRPZmZzZXQoKSkgewogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIHNoaWZ0KCk7
CiAgICAgICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7CiAgICAgICAgIH0KKyAgICAg
ICAgLy8gT3RoZXJ3aXNlLCBpdCBjb3VsZCBiZSBhIHZhbGlkIFByaXZhdGVOYW1lLgorICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkgJiYgKGlzU2luZ2xlQ2hhcmFj
dGVySWRlbnRTdGFydChuZXh0KSB8fCBuZXh0ID09ICdcXCcpKSB7CisgICAgICAgICAgICBsZXhl
ckZsYWdzLnJlbW92ZShMZXhlckZsYWdzOjpEb250QnVpbGRLZXl3b3Jkcyk7CisgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnQ7CisgICAgICAgIH0KICAgICAgICAgZ290byBpbnZhbGlkQ2hhcmFj
dGVyOworICAgIH0KICAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CiAg
ICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICAgICBnb3RvIHBh
cnNlSWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCmluZGV4IGZkOTdhMGNhOTM1ZTdlNTc3OGEwOTM4NTAyMmY5ODY3ODAxNGEzMjQuLjA2
ZTYwMmE3YmRhNzJiYjI4MjE5OGYyOTdkODNhNDFhYThlNTEyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC0zMjcsMTAgKzMyNywx
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERvdEFjY2Vz
c29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBpbmxp
bmUgQmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlw
ZSB0eXBlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1f
YmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCisgICAgICAgICwgbV90eXBlKHR5
cGUpCisgICAgeworICAgIH0KKworICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vz
c29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKKyAgICAgICAgOiBC
YXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTQxOCwxMSArNDI0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQor
ICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUo
bG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQog
ICAgIHsKICAgICB9CkBAIC00MzcsMTQgKzQ0MSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9J
bm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0
aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAg
IGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9J
bm5lcm1vc3RDYWxsT3JBcHBseSkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0
aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KQogICAgICAgICAsIG1fZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KGRpc3RhbmNlVG9J
bm5lcm1vc3RDYWxsT3JBcHBseSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQotICAgICAg
ICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90
VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAg
ICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFy
Z3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9J
bm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAg
ewogICAgIH0KQEAgLTc1MCwyMSArNzU0LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlk
ZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhh
c0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90
Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5
cGUsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAg
IDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRo
cm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAs
IG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgICAgICAsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA5ZDFjZmE0ZjE3NjEzMDJhMzNiYmFlMzFlZjYwZmRm
Y2FmMjA3ZGY1Li4xMWJmNGE2ODRhMWJkOWEwOTNlYjhlYjE2ZTFlMTM3MjY2MjBkMzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIGJv
b2wgUHJvcGVydHlMaXN0Tm9kZTo6aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkoY29uc3QgSWRl
bnRpZmllciYgcHJvcE5hbWUpCiBib29sIFByb3BlcnR5TGlzdE5vZGU6OnNob3VsZENyZWF0ZUxl
eGljYWxTY29wZUZvckNsYXNzKFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCiB7CiAgICAgd2hpbGUg
KGxpc3QpIHsKLSAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQo
KSkKKyAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQoKSB8fCBs
aXN0LT5tX25vZGUtPmlzUHJpdmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGxpc3QgPSBsaXN0LT5tX25leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCmluZGV4IDQ5YWFjNDczNTgwNzBlM2YzOGI3OGMyMTJmMDIzMjkxMzVhOTZmYmEuLjI2
M2Y2NWZkMmU2MmVkMGE5OGFiYzk4ZGQ0NTVmYTBjNDYzNzBlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4Miw2ICsxODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9ICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Fzc2lnbm1lbnRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzTG9jYXRpb24oKTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fzc2lnblJlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTcxMiw3ICs3MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVt
IGNsYXNzIENsYXNzRWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywg
TGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJB
cmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3Qg
eyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hv
cnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyIH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3Qg
eyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hv
cnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKICAgICAgICAgZW51bSBQ
dXRUeXBlIDogdWludDhfdCB7IFVua25vd24sIEtub3duRGlyZWN0IH07CiAKICAgICAgICAgUHJv
cGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5
cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczMSw2ICs3MzIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVy
biBpc0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBi
b29sIGlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNz
UHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3Zl
cnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxp
Y2F0ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAm
IFByaXZhdGU7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9CiAgICAg
ICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlE
dXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NDEsNyArNzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWduOwotICAgICAg
ICB1bnNpZ25lZCBtX3R5cGUgOiA2OworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OwogICAg
ICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQg
bV9wdXRUeXBlIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBz
aG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwpAQCAtODEzLDkgKzgxNSwzMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwog
ICAgIH07CiAKLSAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgZW51bSBjbGFz
cyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUgfTsKKyAgICBjbGFzcyBCYXNlRG90Tm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEb3RBY2Nlc3Nv
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsKKwor
ICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQor
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudDsgfQorICAgICAgICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
KyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERv
dFR5cGU6OlByaXZhdGVOYW1lOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3Bl
cnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0UHJvcGVy
dHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1
ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdp
c3RlcklEKiB2YWx1ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2Jhc2U7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CisgICAgICAgIERv
dFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwg
OiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7Cisg
ICAgcHVibGljOgorICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsKIAog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudDsgfQpAQCAtODI0LDEwICs4NDcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0KICAgICAg
ICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLQotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2lkZW50OwogICAgIH07CiAKICAgICBjbGFzcyBTcHJlYWRFeHByZXNzaW9uTm9k
ZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKQEAgLTk0MCw5ICs5NjEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlv
bkNhbGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMg
QmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSos
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEZ1bmN0aW9u
Q2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CkBAIC05NTAsOCArOTcxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNv
bnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsK
ICAgICB9OwogCkBAIC05ODgsNyArMTAwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKQEAg
LTk5Nyw3ICsxMDE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90
IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25D
YWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9y
QXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKQEAgLTE0MzIs
MjggKzE0NTEsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzIDogMTsKICAgICB9OwogCi0gICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
KyAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWdu
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBB
c3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBib29sIG1fcmlnaHRI
YXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgZmlu
YWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YSB7CisgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURv
dE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RU
eXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICB1bnNpZ25lZCBtX29wZXJhdG9yIDogMzE7CiAg
ICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzIDogMTsKQEAgLTIyMzYsNyArMjI1MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVmaW5lRmllbGROb2RlIGZpbmFsIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBjbGFzcyBU
eXBlIHsgTmFtZSwgQ29tcHV0ZWROYW1lIH07CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5h
bWUsIFByaXZhdGVOYW1lLCBDb21wdXRlZE5hbWUgfTsKICAgICAgICAgRGVmaW5lRmllbGROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBFeHByZXNzaW9uTm9k
ZSosIFR5cGUpOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCBjM2FjOGRkMTJiYWE5ZGNiNGYzYjRkZWFlYjI5YmU5ZDQ2YWNjODVmLi42
YmY4MDFhZDQ4MWY1YzQ0MjJiNTQxMDhiNTM1YjU1OTcxZGE2OTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC04MjAsNiArODIwLDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VW
YXJpYWJsZURlY2wKICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IDA7CiAgICAgICAgIGRl
Y2xhcmF0aW9ucysrOwogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gZmFsc2U7CisKKyAg
ICAgICAgZmFpbElmVHJ1ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgdXNlIGEgcHJpdmF0
ZSBuYW1lIHRvIGRlY2xhcmUgYSB2YXJpYWJsZSIpOwogICAgICAgICBpZiAobWF0Y2hTcGVjSWRl
bnRpZmllcigpKSB7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGRlY2xh
cmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xhcmF0aW9uIHx8IGRlY2xhcmF0
aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24pLCAKICAgICAgICAg
ICAgICAgICAiQ2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4
aWNhbERlY2xhcmF0aW9uIik7CkBAIC0xMjc4LDYgKzEyODAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VEZQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3Ry
dWN0dXJlVG9FeHByZXNzaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
ICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFi
bGVLaW5kTmFtZShraW5kKSk7CisgICAgICAgICAgICBpZiAoa2luZCAhPSBEZXN0cnVjdHVyaW5n
S2luZDo6RGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZmFpbElmVHJ1
ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgdXNlIGEgcHJpdmF0ZSBuYW1lIGFzIGEgIiwg
ZGVzdHJ1Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2luZE5hbWUoa2luZCkpOwogICAgICAgICAgICAg
ZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhIHBhcmFtZXRlciBwYXR0ZXJuIG9yIGEgJyknIGlu
IHBhcmFtZXRlciBsaXN0Iik7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChM
RVQpICYmIChraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvTGV0IHx8IGtp
bmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9Db25zdCksICJDYW5ub3QgdXNl
ICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRpb24iKTsK
QEAgLTI5NDAsNiArMjk0NCwxOSBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5
IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VU
LCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKKyAgICAgICAgICAgIEFTU0VSVChPcHRp
b25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7CisgICAgICAgICAgICBKU1Rva2VuIHRva2Vu
ID0gbV90b2tlbjsKKyAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Cisg
ICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0
YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CisgICAgICAgICAgICBmYWls
SWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3
aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAg
ICAgIG5leHQoKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBB
UkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1l
Iik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVBy
aXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAg
ICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3Bl
cnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2Vu
RmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKQEAgLTI5NTUsOCArMjk3
MiwxMCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAi
Q2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6
dXNlUHVibGljQ2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xh
c3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpN
ZXRob2RNb2RlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzR2V0dGVyICYmICFpc1NldHRlcik7
Ci0gICAgICAgICAgICBpZiAoaWRlbnQpCisgICAgICAgICAgICBpZiAoaWRlbnQpIHsKICAgICAg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29u
c3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBjbGFzcyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3In
Iik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0
eU5hbWVzLmNvbnN0cnVjdG9yUHJpdmF0ZUZpZWxkLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBj
bGFzcyBmaWVsZCBuYW1lZCAnI2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAgICBpZGVu
dCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmll
cihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKQEAgLTMwMjAsNiArMzAzOSwxMCBAQCBwYXJz
ZU1ldGhvZDoKICAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQg
LSAxOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAn
fScgYWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNs
YXNzRmllbGRzKCkpIHsKKyAgICAgICAgLy8gRmFpbCBpZiB0aGVyZSBhcmUgbm8gcGFyZW50IHBy
aXZhdGUgbmFtZSBzY29wZXMgYW5kIGFueSB1c2VkLWJ1dC11bmRlY2xhcmVkIHByaXZhdGUgbmFt
ZXMuCisgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY29weVVuZGVjbGFyZWRQcml2YXRlTmFt
ZXNUb091dGVyU2NvcGUoKSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIG5h
bWVzIik7CisgICAgfQogICAgIGF1dG8gY2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVD
bGFzc0V4cHIobG9jYXRpb24sIGluZm8sIGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmly
b25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAg
cG9wU2NvcGUoY2xhc3NTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVzc2lvbjsKQEAgLTMwNDMsNiArMzA2Niw5IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVy
dHlOYW1lID0gMDsKICAgICAgICAgRGVmaW5lRmllbGROb2RlOjpUeXBlIHR5cGUgPSBEZWZpbmVG
aWVsZE5vZGU6OlR5cGU6Ok5hbWU7CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsK
KyAgICAgICAgY2FzZSBQUklWQVRFTkFNRToKKyAgICAgICAgICAgIHR5cGUgPSBEZWZpbmVGaWVs
ZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAg
ICAgIGNhc2UgU1RSSU5HOgogICAgICAgICBjYXNlIElERU5UOgogICAgICAgICBuYW1lZEtleXdv
cmQ6CkBAIC0zMDgyLDYgKzMxMDgsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAg
ICBpZiAoY29uc3VtZShFUVVBTCkpCiAgICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNz
aWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAKKyAgICAgICAgaWYgKHR5cGUgPT0gRGVmaW5l
RmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIGN1cnJlbnRTY29wZSgp
LT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgZGVm
aW5lRmllbGQgPSBjb250ZXh0LmNyZWF0ZURlZmluZUZpZWxkKGZpZWxkTG9jYXRpb24sIGlkZW50
LCBpbml0aWFsaXplciwgdHlwZSk7CiAgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNv
dXJjZUVsZW1lbnRzLCBkZWZpbmVGaWVsZCk7CiAgICAgfQpAQCAtNDc3NCw2ICs0ODAzLDIyIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRDYWxsT3JBcHBseURlcHRoKFBhcnNlclR5cGUqLCBW
TSYsIE9wdGlvbmFsPHR5cGVuYW1lIFBhCiB7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Citib29sIFBhcnNlcjxMZXhlclR5cGU+OjplbnN1cmVQcml2YXRlTmFtZVVzZWQoY29u
c3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVu
Y3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBib29sIGZvdW5kID0gZmFsc2U7
CisgICAgU2NvcGVSZWYgY3VycmVudCA9IGN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKCZmb3VuZCk7
CisgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghY3VycmVu
dC0+aGFzUHJpdmF0ZU5hbWUoKmlkZW50KSkKKyAgICAgICAgY3VycmVudC0+dXNlUHJpdmF0ZU5h
bWUoKmlkZW50KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQogewpAQCAtNDg4OSw2ICs0OTM0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKIAog
ICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0
KTsKICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSht
YXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgaWRlbnRpZmllcnMgaW4g
YW4gb3B0aW9uYWwgY2hhaW4iKTsKICAgICAgICAgICAgIGlmIChtYXRjaChPUEVOQlJBQ0tFVCkg
fHwgbWF0Y2goT1BFTlBBUkVOKSB8fCBtYXRjaChCQUNLUVVPVEUpKQogICAgICAgICAgICAgICAg
IHR5cGUgPSBtX3Rva2VuLm1fdHlwZTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtNDk3Niw4ICs1
MDIyLDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgbV9wYXJz
ZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgSlNU
ZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAg
ICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtl
eXdvcmRzIHwgTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CisgICAgICAgICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAg
ICAgICAgICAgICBhdXRvIHR5cGUgPSBEb3RUeXBlOjpOYW1lOworICAgICAgICAgICAgICAgIGlm
IChtYXRjaChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShiYXNlSXNTdXBlciwgIkNhbm5vdCBh
Y2Nlc3MgcHJpdmF0ZSBuYW1lcyBmcm9tIHN1cGVyIik7CisgICAgICAgICAgICAgICAgICAgIGlm
IChVTkxJS0VMWShjdXJyZW50U2NvcGUoKS0+ZXZhbENvbnRleHRUeXBlKCkgPT0gRXZhbENvbnRl
eHRUeXBlOjpJbnN0YW5jZUZpZWxkRXZhbENvbnRleHQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aGFzUHJpdmF0ZU5hbWUoKmlk
ZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIGZpZWxkICciLCBpZGVu
dC0+aW1wbCgpLCAiJyIpOworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNl
KGVuc3VyZVByaXZhdGVOYW1lVXNlZChpZGVudCksICJDYW5ub3QgcmVmZXJlbmNlIHByaXZhdGUg
bmFtZXMgb3V0c2lkZSBvZiBjbGFzcyIpOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlclN0
YXRlLmxhc3RQcml2YXRlTmFtZSA9IGlkZW50OworICAgICAgICAgICAgICAgICAgICBjdXJyZW50
U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IERvdFR5cGU6OlByaXZhdGVOYW1lOworICAgICAgICAgICAgICAgICAgICBtX3Rva2Vu
Lm1fdHlwZSA9IElERU5UOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtYXRj
aE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSBhZnRlciAiLCBvcHRpb25h
bENoYWluQmFzZSA/ICInPy4nIiA6ICInLiciKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3RhcnRMb2NhdGlvbiwgYmFzZSwgbV90b2tlbi5tX2RhdGEu
aWRlbnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmRQb3NpdGlvbigp
KTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3RhcnRM
b2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVu
ZCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYmFz
ZUlzU3VwZXIgJiYgY3VycmVudFNjb3BlKCktPmlzQXJyb3dGdW5jdGlvbigpKSkKICAgICAgICAg
ICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+c2V0SW5uZXJBcnJvd0Z1bmN0aW9u
VXNlc1N1cGVyUHJvcGVydHkoKTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CkBAIC01MTcyLDYg
KzUyMzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3Qo
Y29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVucXVhbGlmaWVkIHByb3Bl
cnR5ICciLCBtX3BhcnNlclN0YXRlLmxhc3RJZGVudGlmaWVyLT5pbXBsKCksICInIGluIHN0cmlj
dCBtb2RlIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY29udGV4dC5pc1ByaXZh
dGVMb2NhdGlvbihleHByKSwgIkNhbm5vdCBkZWxldGUgcHJpdmF0ZSBmaWVsZCAiLCBtX3BhcnNl
clN0YXRlLmxhc3RQcml2YXRlTmFtZS0+aW1wbCgpKTsKICAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VEZWxldGVOb2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFj
a0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKQEAgLTUyNDgsNyArNTMwOCwxMSBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRU
b2tlblRleHQoVwogICAgIGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6CiAgICAg
ICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAorCisgICAgY2FzZSBQUklWQVRFTkFNRToK
KyAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHByaXZhdGUgbmFtZSAiLCBnZXRUb2tlbigp
KTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBBV0FJVDoKICAgICBjYXNlIElERU5UOgog
ICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwg
IiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDc5ZWEwOTY2ZGI2
MjQ1OTRmMmFjMmMzOGNmODRiYzNiYzM2ZWMzNWQuLjViYzQ2MzA3YTI1MTMxMDFkMmYxYTg5YjVl
ZDJmZGUyYWU2MjBjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAt
MTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2hhc0FyZ3VtZW50cyhmYWxzZSkK
ICAgICAgICAgLCBtX2lzRXZhbENvbnRleHQoZmFsc2UpCiAgICAgICAgICwgbV9oYXNOb25TaW1w
bGVQYXJhbWV0ZXJMaXN0KGZhbHNlKQorICAgICAgICAsIG1faXNQcml2YXRlTmFtZVNjb3BlKGZh
bHNlKQogICAgICAgICAsIG1faXNDbGFzc1Njb3BlKGZhbHNlKQogICAgICAgICAsIG1fZXZhbENv
bnRleHRUeXBlKEV2YWxDb250ZXh0VHlwZTo6Tm9uZSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ29uc3RydWN0b3JLaW5kOjpOb25lKSkKQEAgLTI4
OSw2ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0dlbmVyYXRvckJvdW5kYXJ5KCkgY29u
c3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvckJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0FzeW5jRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXN5bmNGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNB
c3luY0Z1bmN0aW9uQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzQXN5bmNGdW5jdGlvbkJv
dW5kYXJ5OyB9CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lU2NvcGUoKSBjb25zdCB7IHJldHVybiBt
X2lzUHJpdmF0ZU5hbWVTY29wZTsgfQogICAgIGJvb2wgaXNDbGFzc1Njb3BlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NsYXNzU2NvcGU7IH0KIAogICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KQEAgLTMwNSw4ICszMDcsMTQgQEAgcHVibGljOgog
ICAgICAgICBtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMgPSB0cnVlOwogICAgIH0KIAorICAg
IHZvaWQgc2V0SXNQcml2YXRlTmFtZVNjb3BlKCkKKyAgICB7CisgICAgICAgIG1faXNQcml2YXRl
TmFtZVNjb3BlID0gdHJ1ZTsKKyAgICB9CisKICAgICB2b2lkIHNldElzQ2xhc3NTY29wZSgpCiAg
ICAgeworICAgICAgICBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKICAgICAgICAgbV9pc0NsYXNz
U2NvcGUgPSB0cnVlOwogICAgIH0KIApAQCAtNDcxLDcgKzQ3OSw0NCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmdldCgp
KTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQ
cml2YXRlTmFtZShpZGVudCk7CisgICAgfQorCisgICAgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZh
dGVOYW1lcyhTY29wZSYgb3RoZXIpCisgICAgeworICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMu
Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMob3RoZXIubV9sZXhpY2FsVmFyaWFibGVzKTsKKyAg
ICB9CisKKyAgICBib29sIGhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzU2l6ZSgp
ID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogbV9sZXhpY2FsVmFyaWFibGVz
LnByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNl
ZCgpICYmICFlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7
CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7CisgICAg
fQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxE
ZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVj
bGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNh
bFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgICAgICBpZiAoIWFkZFJl
c3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc0RlY2xhcmVkUGFyYW1ldGVyKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGhhc0RlY2xhcmVkUGFy
YW1ldGVyKGlkZW50LmltcGwoKSk7CkBAIC04MzQsNiArODc5LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1faGFzQXJndW1lbnRzOwogICAgIGJvb2wgbV9pc0V2YWxDb250ZXh0OwogICAgIGJvb2wg
bV9oYXNOb25TaW1wbGVQYXJhbWV0ZXJMaXN0OworICAgIGJvb2wgbV9pc1ByaXZhdGVOYW1lU2Nv
cGU7CiAgICAgYm9vbCBtX2lzQ2xhc3NTY29wZTsKICAgICBFdmFsQ29udGV4dFR5cGUgbV9ldmFs
Q29udGV4dFR5cGU7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQ7CkBAIC05MDUsNyAr
OTUxLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQ
YXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJF
cnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0
LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24g
PSBXVEY6Om51bGxvcHQsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29u
c3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVs
bG9wdCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxh
c3RUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0K
QEAgLTExNzgsNiArMTIyNCwzMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gU2NvcGVSZWYo
Jm1fc2NvcGVTdGFjaywgaSk7CiAgICAgfQogCisgICAgU2NvcGVSZWYgY3VycmVudFByaXZhdGVO
YW1lU2NvcGUoYm9vbCAqZm91bmQgPSAwKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaSA9IG1f
c2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5z
aXplKCkpOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5h
bWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworICAgICAgICBpZiAoZm91bmQpCisgICAgICAg
ICAgICAqZm91bmQgPSBtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCk7CisgICAg
ICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKKyAgICB9CisKKyAgICBib29s
IGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbV9zY29wZVN0YWNrLmlzRW1wdHkoKSk7CisgICAgICAgIFNjb3BlUmVmIGN1cnJl
bnQgPSBjdXJyZW50UHJpdmF0ZU5hbWVTY29wZSgpOworICAgICAgICB1bnNpZ25lZCBpID0gY3Vy
cmVudC5pbmRleCgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5p
c1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAoIWkp
CisgICAgICAgICAgICByZXR1cm4gIWN1cnJlbnQtPmhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzKCk7CisKKyAgICAgICAgY3VycmVudC0+Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMo
bV9zY29wZVN0YWNrW2ldKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgU2Nv
cGVSZWYgY2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKQogICAg
IHsKICAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwpAQCAtMTQ1
Miw2ICsxNTI0LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5t
X3R5cGUgPT0gZXhwZWN0ZWQ7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNo
QW5kVXBkYXRlKEpTVG9rZW5UeXBlIGV4cGVjdGVkLCBjb25zdCBKU1Rva2VuJiB0b2tlbikKKyAg
ICB7CisgICAgICAgIGlmIChtYXRjaChleHBlY3RlZCkpIHsKKyAgICAgICAgICAgIG1fdG9rZW4g
PSB0b2tlbjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hD
b250ZXh0dWFsS2V5d29yZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIHsKQEAg
LTE3MDIsNiArMTc4NCw4IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoVHJlZUJ1
aWxkZXImLCBUcmVlRXhwcmVzc2lvbik7CiAKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgZW5zdXJl
UHJpdmF0ZU5hbWVVc2VkKGNvbnN0IElkZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19JTkxJTkUg
aW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0
aWNTZW1pY29sb24oKTsKICAgICAKQEAgLTE3OTYsNiArMTg4MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIEZ1bmN0aW9uUGFyc2VQaGFzZSBmdW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlvblBhcnNl
UGhhc2U6OkJvZHkgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdElkZW50aWZpZXIg
eyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUg
eyBudWxscHRyIH07CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7
IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAgICAgICBi
b29sIGlzUGFyc2luZ0NsYXNzRmllbGRJbml0aWFsaXplciB7IGZhbHNlIH07CiAgICAgfTsKQEAg
LTE5NDUsNyArMjAzMCw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJ
ZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5n
Q29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9y
UGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNh
bGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNp
bmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBj
b25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewog
ICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xOTYwLDYgKzIwNDUsMTEg
QEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQ
YXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29s
dW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFy
dENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCisgICAg
aWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAmJiB2YXJp
YWJsZXNVbmRlclREWi0+cHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJlbnRTY29w
ZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5kZXJURFot
PmNvcHlQcml2YXRlTmFtZXMoY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKSk7Cisg
ICAgfQorCiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFy
c2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAgICBpbnQgbGluZU51bWJlciA9
IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKQEAgLTIwNDQsNiArMjEzNCw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlw
ZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQ
YXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKKyAgICBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIpCiB7
CiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXNOdWxsKCkpOwpAQCAt
MjA1NSw3ICsyMTQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZS5wcm92
aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUs
IHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2
ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCks
IGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEpOwotICAgICAgICByZXN1bHQgPSBw
YXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6
UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAg
cmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUs
IGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2lu
Z0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFy
c2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTIwNjgsNyArMjE1OSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29u
c3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBh
cnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSk7Ci0g
ICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFy
c2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6
IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3Is
IG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRl
eHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJs
ZXNVbmRlclREWiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IDk4MDc4ZDZkNzJhYmMy
ZGFlZjE0NTNjZmMzNDFlMzBiYWEzNzNiODkuLjIzYTljMDNkYjEyMTZkZGM4Y2IyMDAzMTQyNWFi
YTg4ZTk5NGIyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIERPVUJMRSwK
ICAgICBCSUdJTlQsCiAgICAgSURFTlQsCisgICAgUFJJVkFURU5BTUUsCiAgICAgU1RSSU5HLAog
ICAgIFRFTVBMQVRFLAogICAgIFJFR0VYUCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKaW5kZXggZjliYjA3YjRkZDQwODljN2IxZTNhMGYzZjU5NTQxYjMx
N2E1MmQ3Zi4uZTliNmQ3ZTk0Njc0NGUxYTA4ZGMxY2MyOGE0NmI3MTM3NzNjOTg0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogICAgICAgICBSZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRl
Z2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5nRXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhp
c0V4cHIsIE51bGxFeHByLCBCb29sRXhwciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIs
CiAgICAgICAgIEZ1bmN0aW9uRXhwciwgQ2xhc3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIs
IEJyYWNrZXRFeHByLCBEb3RFeHByLCBDYWxsRXhwciwKLSAgICAgICAgTmV3RXhwciwgUHJlRXhw
ciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwKKyAgICAg
ICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwgT3B0
aW9uYWxDaGFpbiwgUHJpdmF0ZURvdEV4cHIsCiAgICAgICAgIENvbmRpdGlvbmFsRXhwciwgQXNz
aWdubWVudEV4cHIsIFR5cGVvZkV4cHIsCiAgICAgICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJh
bEV4cHIsIEJpbmRpbmdEZXN0cnVjdHVyaW5nLCBSZXN0UGFyYW1ldGVyLAogICAgICAgICBBcnJh
eURlc3RydWN0dXJpbmcsIE9iamVjdERlc3RydWN0dXJpbmcsIFNvdXJjZUVsZW1lbnRzUmVzdWx0
LApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVC
b29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7
IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nl
c3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
LCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWUgPyBQ
cml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdF
eHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29u
c3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCkgeyByZXR1cm4gWWFycjo6aGFzRXJyb3IoWWFycjo6
Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmcoKSwgZmxhZ3Muc3RyaW5nKCkpKSA/IDAgOiBSZWdF
eHBFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBO
ZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0K
QEAgLTQwMyw3ICs0MDMsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xvY2F0aW9uKEV4cHJl
c3Npb25UeXBlIHR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhw
ciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBCcmFja2V0RXhwcjsKKyAgICAgICAgcmV0
dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlwZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0gUHJp
dmF0ZURvdEV4cHIgfHwgdHlwZSA9PSBCcmFja2V0RXhwcjsKKyAgICB9CisKKyAgICBib29sIGlz
UHJpdmF0ZUxvY2F0aW9uKEV4cHJlc3Npb25UeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gdHlwZSA9PSBQcml2YXRlRG90RXhwcjsKICAgICB9CiAKICAgICBib29sIGlzQXNzaWdubWVu
dExvY2F0aW9uKEV4cHJlc3Npb25UeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRleCA4ZTY5MTUxYzdiNmNi
MzExMWIwZmU3N2NlODk3MzA3NDA2MmY1ZjVhLi4xZjU3MDg4YTM0YzY2M2NhNzAyZjc3ZDQ3NzQw
Njk2ZTI2NzY4OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTI5LDYgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitWYXJpYWJsZUVudmlyb25tZW50JiBWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRv
cj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCit7CisgICAgbV9tYXAgPSBvdGhl
ci5tX21hcDsKKyAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZDsKKyAgICBtX3JhcmVEYXRhLnJlc2V0KCk7CisgICAgaWYgKG90aGVyLm1fcmFy
ZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKTsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNDYXB0dXJlZElm
RGVmaW5lZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogewog
ICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7CkBAIC04MCw2ICs5
MCw3IEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6c3dhcChWYXJpYWJsZUVudmlyb25tZW50
JiBvdGhlcikKIHsKICAgICBtX21hcC5zd2FwKG90aGVyLm1fbWFwKTsKICAgICBtX2lzRXZlcnl0
aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKKyAgICBtX3JhcmVE
YXRhLnN3YXAob3RoZXIubV9yYXJlRGF0YSk7CiB9CiAKIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVu
dDo6bWFya1ZhcmlhYmxlQXNJbXBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBpZGVudGlmaWVyKQpAQCAtMTAwLDcgKzExMSw3IEBAIENvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
CiAgICAgOiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKGVudi5pc0V2ZXJ5dGhpbmdDYXB0dXJlZCgp
KQogewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8VW5pcXVlZFN0cmluZ0ltcGwqLCBWYXJpYWJsZUVu
dmlyb25tZW50RW50cnk+LCAzMj4gc29ydGVkRW50cmllczsKLSAgICBzb3J0ZWRFbnRyaWVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZW52LnNpemUoKSk7CisgICAgc29ydGVkRW50cmllcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudi5tYXBTaXplKCkpOwogICAgIGZvciAoYXV0byYgcGFpciA6
IGVudikKICAgICAgICAgc29ydGVkRW50cmllcy5hcHBlbmQoeyBwYWlyLmtleS5nZXQoKSwgcGFp
ci52YWx1ZSB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaAppbmRleCA1MzJkMTQ2ZWZkMWZjYWU1MzI2OWU3NWRmNmY1ZmRiZWEx
OTkyYzUyLi4wYzFkMGFjM2ViYWRjYThlYzM4YTZjODhlYTYzMTM5YjQ5MGEzMzQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApA
QCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSXRl
cmF0b3JSYW5nZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDIsNiArNDQsNyBAQCBwdWJs
aWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUGFyYW1ldGVy
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRl
TmFtZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0
cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7
IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC01Myw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0SXNGdW5jdGlvbigpIHsgbV9iaXRzIHw9IElzRnVuY3Rpb247IH0K
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQYXJhbWV0ZXIoKSB7IG1fYml0cyB8PSBJc1Bh
cmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGlu
Z0NhbmRpZGF0ZSgpIHsgbV9iaXRzIHw9IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU5hbWUoKSB7IG1fYml0cyB8PSBJ
c1ByaXZhdGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsg
bV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC03NCw3ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IElzSW1wb3J0ZWROYW1lc3BhY2UgPSAxIDw8IDYsCiAgICAgICAgIElzRnVuY3Rpb24gPSAxIDw8
IDcsCiAgICAgICAgIElzUGFyYW1ldGVyID0gMSA8PCA4LAotICAgICAgICBJc1Nsb3BweU1vZGVI
b2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwgOQorICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0Nh
bmRpZGF0ZSA9IDEgPDwgOSwKKyAgICAgICAgSXNQcml2YXRlTmFtZSA9IDEgPDwgMTAsCiAgICAg
fTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtODMsMTUgKzg4LDU1IEBAIHN0
cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJp
YWJsZUVudmlyb25tZW50RW50cnk+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24gPSBmYWxzZTsKIH07CiAKK3N0cnVjdCBQcml2YXRlTmFtZUVudHJ5IHsKK3B1Ymxp
YzoKKyAgICBQcml2YXRlTmFtZUVudHJ5KHVpbnQxNl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0g
dHJhaXRzOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNVc2VkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2JpdHMgfD0gSXNVc2VkOyB9CisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CisKKyAg
ICB1aW50MTZfdCBiaXRzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzOyB9CisKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUHJpdmF0ZU5hbWVFbnRyeSYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9iaXRzID09IG90aGVyLm1fYml0czsKKyAgICB9CisKKyAgICBlbnVtIFRy
YWl0cyA6IHVpbnQxNl90IHsKKyAgICAgICAgSXNVc2VkID0gMSA8PCAwLAorICAgICAgICBJc0Rl
Y2xhcmVkID0gMSA8PCAxLAorICAgIH07CisKK3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iaXRz
IHsgMCB9OworfTsKKworc3RydWN0IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRy
YWl0czxQcml2YXRlTmFtZUVudHJ5PiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IGZhbHNlOworfTsKKwogY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiBwcml2
YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNo
VHJhaXRzPiBNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRz
PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4g
UHJpdmF0ZU5hbWVzOwogcHVibGljOgotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSA9IGRlZmF1
bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIp
ID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9u
bWVudCYgb3BlcmF0b3I9KFZhcmlhYmxlRW52aXJvbm1lbnQmJikgPSBkZWZhdWx0OworICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQoKSB7IH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxl
RW52aXJvbm1lbnQmJiBvdGhlcikKKyAgICAgICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFw
KSkKKyAgICAgICAgLCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKG90aGVyLm1faXNFdmVyeXRoaW5n
Q2FwdHVyZWQpCisgICAgICAgICwgbV9yYXJlRGF0YShXVEZNb3ZlKG90aGVyLm1fcmFyZURhdGEp
KQorICAgIHsKKyAgICB9CisgICAgVmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBvdGhlcikKKyAgICAgICAgOiBtX21hcChvdGhlci5tX21hcCkKKyAgICAgICAg
LCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCisg
ICAgICAgICwgbV9yYXJlRGF0YShvdGhlci5tX3JhcmVEYXRhID8gV1RGOjptYWtlVW5pcXVlPFZh
cmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigqb3RoZXIubV9yYXJlRGF0YSkgOiBudWxscHRy
KQorICAgIHsKKyAgICB9CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKTsKIAogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpp
dGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fbWFwLmJlZ2luKCk7IH0KICAgICBBTFdBWVNfSU5M
SU5FIE1hcDo6aXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KQEAgLTk5LDcg
KzE0NCw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1h
cDo6QWRkUmVzdWx0IGFkZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKSB7IHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5KCkpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQot
ICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNp
emUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLnNpemUoKSArIHByaXZhdGVOYW1lc1NpemUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
dW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsg
fQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCByZW1vdmUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9
CiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVy
KTsgfQpAQCAtMTE2LDExICsxNjIsMTA0IEBAIHB1YmxpYzoKICAgICBib29sIGlzRXZlcnl0aGlu
Z0NhcHR1cmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsgfQogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21hcC5zaXplKCk7IH0KIAorICAgIHVz
aW5nIFByaXZhdGVOYW1lc1JhbmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lczo6
aXRlcmF0b3I+OworCisgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVBy
aXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1
c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVO
YW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorCisgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVBy
aXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVy
LmdldCgpKTsKKyAgICAgICAgbWV0YS5zZXRJc0RlY2xhcmVkKCk7CisgICAgICAgIGF1dG8gZW50
cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2
YXRlTmFtZSgpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNl
dElzQ2FwdHVyZWQoKTsKKyAgICAgICAgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRy
eSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRP
ckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzVXNl
ZCgpOworICAgICAgICBpZiAobWV0YS5pc0RlY2xhcmVkKCkpCisgICAgICAgICAgICBmaW5kKGlk
ZW50aWZpZXIpLT52YWx1ZS5zZXRJc0NhcHR1cmVkKCk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSBQcml2YXRlTmFtZXNSYW5nZSBwcml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRvclJhbmdlIG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2ZW50
IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVja1ZhbGlkaXR5KCkuCisgICAgICAgIEFTU0VSVChwcml2
YXRlTmFtZXNTaXplKCkgPiAwKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLmVuZCgpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHByaXZhdGVO
YW1lc1NpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5zaXplKCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBib29sIGhhc1ByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmFy
ZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhpZGVudGlmaWVyLmltcGwoKSk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlQcml2YXRlTmFtZXMoVmFyaWFibGVFbnZpcm9u
bWVudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghb3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAg
ICAgIG90aGVyLm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVu
dDo6UmFyZURhdGE+KCk7CisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAg
ICAgICAgIGlmICghKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmIGVudHJ5LnZhbHVlLmlzRGVjbGFy
ZWQoKSkpCisgICAgICAgICAgICAgICAgICAgIG90aGVyLm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVO
YW1lcyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgeworICAgICAgICAvLyBVc2Vk
IGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2YXRlTmFtZXMg
ZnJvbSBhbgorICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50IGludG8gYW4g
b3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKKyAgICAgICAgLy8gZWFybGllciBpbiB0
aGUgc291cmNlIGNvZGUgdGhhbiBpdCBpcyBkZWZpbmVkLgorICAgICAgICBpZiAocHJpdmF0ZU5h
bWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5h
bWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgIWVu
dHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0ZXIuZ2V0T3JB
ZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpLnNldElzVXNlZCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFJhcmVEYXRhIHsKKyAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFJhcmVEYXRhKCkgeyB9Cisg
ICAgICAgIFJhcmVEYXRhKFJhcmVEYXRhJiYgb3RoZXIpCisgICAgICAgICAgICA6IG1fcHJpdmF0
ZU5hbWVzKFdURk1vdmUob3RoZXIubV9wcml2YXRlTmFtZXMpKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CisgICAgICAg
IFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CisgICAgICAg
IFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICB9OworCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50OwogCiAgICAgTWFwIG1fbWFwOwog
ICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCB7IGZhbHNlIH07CisKKyAgICBQcml2YXRl
TmFtZUVudHJ5JiBnZXRPckFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9
IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAg
ICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGltcGwsIFByaXZhdGVO
YW1lRW50cnkoMCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFz
cyBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggMjI2YjQ4MzU0NjJkOGM0NWU2MTlmNjY4MDBi
ZTk5N2E5MWFlODhhMS4uZmU2ZGNiYTI3ZDk3ZWUwNzI0NzZiMzNmNTM2YmFjNGQ2NTM1NzIxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAt
ODU3LDYgKzg1NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVuY29k
ZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQorCisgICAgU291cmNlVHlwZTxUPiogZGVj
b2RlQXNQdHIoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gdGhpcy0+dGVtcGxhdGUg
YnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKTsKKyAgICB9CiB9OwogCiBjbGFzcyBDYWNoZWRT
aW1wbGVKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlPiB7CkBAIC0xMDA0LDIzICsxMDEwLDQ1IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9u
ZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiB9OwogCitjbGFzcyBDYWNoZWRWYXJpYWJs
ZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJv
bm1lbnQ6OlJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKQorICAg
IHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcHJp
dmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBW
YXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0CisgICAgeworICAg
ICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFt
ZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0cjxD
YWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2VkUHRy
VHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZpZXJS
ZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFt
ZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRWYXJp
YWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50
PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgZW52KQogICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZCA9IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5lbmNvZGUo
ZW5jb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2Rlciwg
ZW52Lm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikgY29uc3QKICAgICB7CiAgICAgICAg
IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAg
ICAgICAgbV9tYXAuZGVjb2RlKGRlY29kZXIsIGVudi5tX21hcCk7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVudi5tX3JhcmVEYXRhID0gV1RGOjpt
YWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICAgICAg
bV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICplbnYubV9yYXJlRGF0YSk7CisgICAgICAgIH0K
ICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAg
IENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlx
dWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+Piwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRy
YWl0cz4gbV9tYXA7CisgICAgQ2FjaGVkUHRyPENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJl
RGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZENvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudD4g
ewpAQCAtMTE0Nyw2ICsxMTc1LDIyIEBAIHByaXZhdGU6CiAgICAgaW50cHRyX3QgbV9iaXRzOwog
fTsKIAorY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmpl
Y3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVS
YXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUo
ZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQgZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiBy
YXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENh
Y2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRp
ZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkU3ltYm9sVGFi
bGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6CiAgICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxl
KQpAQCAtMTE1Nyw2ICsxMjAxLDcgQEAgcHVibGljOgogICAgICAgICBtX25lc3RlZExleGljYWxT
Y29wZSA9IHN5bWJvbFRhYmxlLm1fbmVzdGVkTGV4aWNhbFNjb3BlOwogICAgICAgICBtX3Njb3Bl
VHlwZSA9IHN5bWJvbFRhYmxlLm1fc2NvcGVUeXBlOwogICAgICAgICBtX2FyZ3VtZW50cy5lbmNv
ZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9hcmd1bWVudHMuZ2V0KCkpOworICAgICAgICBtX3Jh
cmVEYXRhLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdldCgpKTsKICAg
ICB9CiAKICAgICBTeW1ib2xUYWJsZSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0CkBA
IC0xMTcwLDYgKzEyMTUsMTEgQEAgcHVibGljOgogICAgICAgICBTY29wZWRBcmd1bWVudHNUYWJs
ZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rlcik7CiAg
ICAgICAgIGlmIChzY29wZWRBcmd1bWVudHNUYWJsZSkKICAgICAgICAgICAgIHN5bWJvbFRhYmxl
LT5tX2FyZ3VtZW50cy5zZXQoZGVjb2Rlci52bSgpLCBzeW1ib2xUYWJsZSwgc2NvcGVkQXJndW1l
bnRzVGFibGUpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJs
ZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPmRlY29k
ZShkZWNvZGVyLCAqc3ltYm9sVGFibGUtPm1fcmFyZURhdGEpOworICAgICAgICB9CisKICAgICAg
ICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KIApAQCAtMTE4MCw2ICsxMjMwLDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAgICAgdW5zaWdu
ZWQgbV9zY29wZVR5cGUgOiAzOwogICAgIENhY2hlZFB0cjxDYWNoZWRTY29wZWRBcmd1bWVudHNU
YWJsZT4gbV9hcmd1bWVudHM7CisgICAgQ2FjaGVkUHRyPENhY2hlZFN5bWJvbFRhYmxlUmFyZURh
dGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggMzBiNThiNmFjZGVjZDU4YjAz
MDdiZDUyODQ2ZWE0NjU4MmI5YjA5ZC4uMDUxZWE3YWE2NjgyZDA4ZGRjZTA4N2YxOTI5NTQxNjNj
YjI5ZDEzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CkBAIC03Niw3ICs3Niw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxpbmtl
ZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiB7CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJv
b3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxS
b290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5
cGUsIGV2YWxDb250ZXh0VHlwZSk7CisgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwg
SlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwg
Q2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJU
RFopOwogICAgIGlmICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAK
aW5kZXggNjJjMGQ1OTU3M2E2YTYzOTkwOTM5ZjFjZWY5NGQ5MTlkN2Q3M2M2ZS4uN2VlNzEzYzlj
NGEyNTkyZmYzMzBmNjhmNWE2NjQ2ZWQzZTgwOWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMzIsNiArMzIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFt
ZSMjS2V5d29yZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElO
SVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGlu
TmFtZXMtPm5hbWUjI1ByaXZhdGVOYW1lKCkpCiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5h
bWUpICwgbmFtZSMjU3ltYm9sKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZp
bmUgSU5JVElBTElaRV9QUklWQVRFX0ZJRUxEX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmll
bGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRp
ZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkK
QEAgLTQ1LDYgKzQ2LDcgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZN
JiB2bSkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpF
X0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
SU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElG
SUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9G
SUVMRF9OQU1FKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBkZjAxZjJhMTE4NzQwNDEyNjMyYmYyYWRhYjhhZTA0
ZjI2YWM5N2QwLi44ZDJlOWE3ODEyMmY2MjYxMDYxNmIyMjFkOWJlOGY2YTRiMjM3OTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
QEAgLTIwNSw2ICsyMDUsOSBAQAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVh
cikKIAorI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRCht
YWNybykgXAorICAgIG1hY3JvKGNvbnN0cnVjdG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURF
TlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBt
YWNybyhicmVhaykgXApAQCAtMzE5LDYgKzMyMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wo
SlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkK
ICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xf
R0xPQkFMCiAKKyNkZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dM
T0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJf
REVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfRklFTERfR0xPQkFMCisKICAgICAgICAgLy8gQ2FsbGVycyBvZiB0aGlzIG1l
dGhvZCBzaG91bGQgbWFrZSBzdXJlIHRoYXQgaWRlbnRpZmllcnMgZ2l2ZW4gdG8gdGhpcyBtZXRo
b2QgCiAgICAgICAgIC8vIHN1cnZpdmUgdGhlIGxpZmV0aW1lIG9mIENvbW1vbklkZW50aWZpZXJz
IGFuZCByZWxhdGVkIFZNLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEV4
dGVybmFsTmFtZShjb25zdCBJZGVudGlmaWVyJiBwdWJsaWNOYW1lLCBjb25zdCBJZGVudGlmaWVy
JiBwcml2YXRlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCA0NGQ4ZmI0YjQyMmE5MmQwM2I4MWFiMGFmMThkNGY2NWIx
ZThjODM1Li40Y2M1MmU2Yzg0NjkyZGJjNDY0NzFkOGYxMzBmMmZiNTE2YTUyNTU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTEyOTgsNiArMTI5OCw3MiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93
aXRoX3RoaXMpCiAgICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSwgc2xvdCkpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5
X3ZhbF9kaXJlY3QpCit7CisgICAgQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+
YXM8T3BHZXRCeVZhbERpcmVjdD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5
dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gR0VUX0Mo
Ynl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpOworCisgICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIFN0cnVjdHVy
ZSYgc3RydWN0dXJlID0gKmJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAg
ICAgaWYgKEpTQ2VsbDo6Y2FuVXNlRmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKKyAg
ICAgICAgICAgIFJlZlB0cjxBdG9tU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9tU3RyaW5nID0gYXNT
dHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRv
bVN0cmluZykgeworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRv
bVN0cmluZy5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1
bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN1YnNjcmlw
dC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIo
KTsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2sp
OworICAgICAgICBBcnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5
UHJvZmlsZTsKKworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CisgICAgICAg
ICAgICBpZiAoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICAgICAgUkVUVVJOX1BST0ZJTEVEKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2Jh
bE9iamVjdCwgaSkpOworICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygp
OworICAgICAgICB9IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChvYmplY3QtPmNhbkdldEluZGV4UXVpY2tseShpKSkKKyAgICAgICAgICAgICAgICBSRVRVUk5f
UFJPRklMRUQob2JqZWN0LT5nZXRJbmRleFF1aWNrbHkoaSkpOworCisgICAgICAgICAgICBib29s
IHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG9iamVj
dC0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cyAmJiBpIDwgb2JqZWN0LT5i
dXR0ZXJmbHkoKS0+cHVibGljTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTog
ZXhwYW5kIHRoaXMgdG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKKyAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgyOTQwCisgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9i
YWxPYmplY3Qodm0pOworICAgICAgICAgICAgICAgIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBn
bG9iYWxPYmplY3QtPmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2
bSkpICYmIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXNraXBNYXJraW5nT3V0T2ZCb3VuZHMgJiYgIUNv
bW1vblNsb3dQYXRoczo6Y2FuQWNjZXNzQXJndW1lbnRJbmRleFF1aWNrbHkoKm9iamVjdCwgaSkp
CisgICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOworICAgICAg
ICB9CisKKyAgICAgICAgUkVUVVJOX1BST0ZJTEVEKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKwor
ICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3Bl
cnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXRPd25Qcm9wZXJ0eSk7CisKKyAgICBib29sIGZvdW5kID0gKGJhc2VWYWx1ZS5hc0NlbGwo
KS0+aXNQcm94eSgpICYmIHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgPyBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGFzT2JqZWN0KGJhc2VWYWx1ZSksIGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHNsb3QpCisgICAgICAgIDogYmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBpZiAoIWZvdW5kICYmIHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgVEhS
T1coY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgUkVU
VVJOX1BST0ZJTEVEKGZvdW5kID8gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5
KSA6IGpzVW5kZWZpbmVkKCkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X2lkX3dpdGhfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiNzEzNWUyYjc4NGFiNjhkYjVmNTU4
ZmE3ODUwNGNhYjA5NjQzYzYxLi4zZmQ0YTliMTk1NTFlZmZhM2Q5ZDk2MWUxZTA1MDkwYTY2Njll
Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMjcyLDYgKzI3Miw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lk
X3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxf
d2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF9k
aXJlY3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90
aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3Ro
aXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuY3BwCmluZGV4IGFmOThkNGQyN2I0MWQxNDMzNmEwMjE4ZTgwYjc2Y2U0ZDhiNDBiNzIuLmQ4
MWU1ODY2NDFiZDZmYzJiYWNkMGZiNDE3OTkxY2JmMTVmNTliMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMjksNiAr
MzI5LDE2IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9iYWxPYmplY3QsICJD
YW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKK0pTT2JqZWN0KiBj
cmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5n
KCJDYW5ub3QgYWNjZXNzIGludmFsaWQgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBw
ZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZh
dGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IHJlZGVmaW5l
IGV4aXN0aW5nIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90
aGluZyk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGds
b2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5oCmluZGV4IDM3NmYyYWY0MGQ4NDY0NzI2MzQ0YzczNzMyMzJlMWNkNWE5Njhk
ZjQuLmFjODFkMmJiYTkyODk4ZmRiNjQ0MWM3YmQyMmMwMTM2MzRhZjFmOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTUzLDYg
KzUzLDggQEAgSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JI
YXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oSlNHbG8KIEpTT2JqZWN0KiBjcmVhdGVOb3RBQ29u
c3RydWN0b3JFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0
ZU5vdEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVjdCog
Y3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpT
R2xvYmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJv
cihKU0dsb2JhbE9iamVjdCopOwogU3RyaW5nIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBj
OTZjMDEzY2QzYjNiYjBhZjE1NjgxNDkzYWU5NDIyMWI0ZWRjNzcwLi41ODJhNTFhMTczNzI4MWVi
N2NiYzg5N2VmMTI1NWU4MWNiMGE1NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMDUsNiArMzA1LDEyIEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSkpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1ib2xJ
bXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVE
CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMTE2MSw2
ICsxMTY3LDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29u
c3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpKTsKICAgICAg
ICAgfSk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCisKKyAgICAvLyBQcml2YXRlU3ltYm9scyAv
IFByaXZhdGVOYW1lcworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0
KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7
CisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1J
TkdfQVBJKQogICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1l
Q29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3Nl
bWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Nj
b3BlLmNwcAppbmRleCA2ZDVhYjY4MmM2ODM5MTRmNjlmM2U1YzIyODM4NGZlZmU0NjU3N2M4Li45
NmM4ZGJkNDMwNjc5MWUxYTVlNjExOGE2NTIzZTU0ZDgzZjNhNTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzM5LDYgKzMzOSwxMCBAQCB2b2lkIEpT
U2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFZh
cmlhYmxlRW52aXJvbm1lbgogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJv
bFRhYmxlLT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVu
ZChsb2NrZXIpLCBpdGVyID0gc3ltYm9sVGFibGUtPmJlZ2luKGxvY2tlcik7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIGlm
IChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQorICAgICAgICAgICAgICAgIHJl
c3VsdC51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAgICAgIH0KICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGI4NWI4Mjg4
ZWRmNjI4NGVkODNjYWY2YzZkOThmMzI3ZmEyZGM0Y2YuLjk0OWI0NTQxZWUwNmIwY2E1MzMxMzE3
MGYwODM3OGYwMjgyMjM3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9uc0xpc3QuaApAQCAtNTAwLDYgKzUwMCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFz
c2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCBmb3JjZU9TUkV4aXRUb0xM
SW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2UgYWx3YXlzIGV4aXQgdG8gdGhlIExMSW50
LiBJZiBmYWxzZSwgd2UgZXhpdCB0byB3aGF0ZXZlciBpcyBtb3N0IGNvbnZlbmllbnQuIikgXAog
ICAgIHYoVW5zaWduZWQsIGdldEJ5VmFsSUNNYXhOdW1iZXJPZklkZW50aWZpZXJzLCA0LCBOb3Jt
YWwsICJOdW1iZXIgb2YgaWRlbnRpZmllcnMgd2Ugc2VlIGluIHRoZSBMTEludCB0aGF0IGNvdWxk
IGNhdXNlIHVzIHRvIGJhaWwgb24gZ2VuZXJhdGluZyBhbiBJQyBmb3IgZ2V0X2J5X3ZhbC4iKSBc
CiAgICAgdihCb29sLCB1c2VQdWJsaWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1
ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHVibGljIGRhdGEgZmllbGRzIGluc2lkZSBj
bGFzc2VzLiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgZmFsc2UsIE5v
cm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBm
aWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAg
ICBTYW1lT3B0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCmluZGV4IGJjNDlkYzk4MmM3MzI4MmJlZGViMmIxZGVmYzc2N2E4NWFiMzVhZjkuLjc3
OTBjZjU3M2QyNmY5NTJmNDk5OWE1M2YzYzI3NWQ2NzUxYTNjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTE4Myw2ICsxODMsMTEgQEAg
U3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAgICAgICAg
ICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgICAgICByZXN1bHQt
Pm1fcmFyZURhdGEtPm1fdW5pcXVlVHlwZVNldE1hcC5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1
ZSk7CiAgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6
IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzKQorICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUpOworICAgICAgICB9CiAgICAgfQogICAg
IAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaAppbmRleCAyZDc4NmE1OGMwOTM4MGIwMjMxNTBmMDdlODIyNzYyNmM2ZDZhNTk3
Li5iMGRkNzRmN2U0YzAxNTAwMzczZTkzNzhlMWFmOTY0NjNlNWZkMjZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNp
bmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9I
YXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00
NTAsNiArNDUwLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVU
eXBlU2V0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3lt
Ym9sVGFibGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0
OworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0
OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNTk0LDcgKzU5NiwyNSBAQCBwdWJsaWM6CiAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgYWRkKGxvY2tlciwg
a2V5LCBzdGQ6OmZvcndhcmQ8RW50cnk+KGVudHJ5KSk7CiAgICAgfQotICAgIAorCisgICAgYm9v
bCBoYXNQcml2YXRlTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhICYmIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5h
bWVJdGVyYXRvclJhbmdlIHByaXZhdGVOYW1lcygpCisgICAgeworICAgICAgICAvLyBVc2Ugb2Yg
dGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1
cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKGhhc1ByaXZhdGVOYW1lcygp
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICB9
CisKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAg
eworICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkpOworICAgICAgICBpZiAo
IW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5
bWJvbFRhYmxlUmFyZURhdGE+KCk7CisKKyAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5jb250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuYWRkKGtleSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CiAg
ICAgdm9pZCBzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwq
IGtleSwgRW50cnkmJiBlbnRyeSkKICAgICB7CkBAIC03MjEsMTggKzc0MSwyMSBAQCBwcml2YXRl
OgogICAgIFNjb3BlT2Zmc2V0IG1fbWF4U2NvcGVPZmZzZXQ7CiBwdWJsaWM6CiAgICAgbXV0YWJs
ZSBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsKLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV91c2Vz
Tm9uU3RyaWN0RXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAx
OyAvLyBOb24tZnVuY3Rpb24gTGV4aWNhbFNjb3BlLgotICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBl
IDogMzsgLy8gU2NvcGVUeXBlCi0gICAgCisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVSYXJlRGF0
YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVW5p
cXVlSURNYXAgbV91bmlxdWVJRE1hcDsKICAgICAgICAgT2Zmc2V0VG9WYXJpYWJsZU1hcCBtX29m
ZnNldFRvVmFyaWFibGVNYXA7CiAgICAgICAgIFVuaXF1ZVR5cGVTZXRNYXAgbV91bmlxdWVUeXBl
U2V0TWFwOwogICAgICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKKyAg
ICAgICAgUHJpdmF0ZU5hbWVTZXQgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKKworcHJpdmF0ZToK
KyAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDogMTsKKyAgICB1bnNpZ25lZCBtX25l
c3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCisgICAg
dW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5cGUKKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTeW1ib2xUYWJsZVJhcmVEYXRhPiBtX3JhcmVEYXRhOwogCiAgICAgV3JpdGVCYXJyaWVy
PFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTE3NWNiNWRkZmM0NWY5ZWE2Njk4
MjM5NTY4ZmRkNWI5MTI3MjMzNS4uOGZkODgzMzdjNTcwMzQ3MGYzNzk3ZGI1MzllNGM2NDA4Y2Iy
NWFmMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMC0wMy0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBwcml2YXRlIGNsYXNz
IGZpZWxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RXhwYW5kcyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBmaWVsZHMgcGF0Y2gsIGFkZGluZyBhIG51
bWJlciBvZiBwcml2YXRlCisgICAgICAgIGZpZWxkIHRlc3RzLgorCisgICAgICAgICogc3RyZXNz
L2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2RlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qczoK
KyAgICAgICAgKiBzdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJpdmF0ZS5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVy
dHkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2
YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJp
dmF0ZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMC0w
My0xOSAgVG9tYXMgUG9wZWxhICA8dHBvcGVsYUByZWRoYXQuY29tPgogCiAgICAgICAgIFtKU0Nd
W0JpZ0VuZGlhbnNdIFNldmVyYWwgSlNDIHN0cmVzcyB0ZXN0cyBmYWlsaW5nCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg4YTExNjNlMTY3ZWQwZDZjNWY2NzY1NmQwMWIzNGQ4OGNiNzRmMmYKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5q
cwpAQCAtMCwwICsxLDE4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiAr
IGEpOworfQorCitjbGFzcyBDIHsKKyAgICAjbSA9ICgpID0+IDI1OworCisgICAgbWV0aG9kKCkg
eworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygp
OworYXNzZXJ0KGMubWV0aG9kKCksIDI1KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2RlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyYTRm
NDM1NGY4OTdmMTEzNzQwODcxMjYwNDZjNmYxZGZkM2U3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKQEAg
LTAsMCArMSwxOCBAQAorLy9AIHJ1bkJ5dGVjb2RlQ2FjaGUoIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiAr
IGEpOworfQorCitjbGFzcyBDIHsKKyAgICAjZiA9IDM7CisKKyAgICBtZXRob2QoKSB7CisgICAg
ICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0
KGMubWV0aG9kKCksIDMpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1vbi1wcm94eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MWY3MThkOTc0MjcwYWM4YTE5ZTVmN2JmMDUy
MDBkZWI5Mzc2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwg
bSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisK
K2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3Ro
LCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAi
YVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7
Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3Rv
cigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6
IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAg
ICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNm
ID0gMzsKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30K
KworbGV0IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMs
ICJFeHBlY3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIs
IFsnbWV0aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLW91dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDg2MjE2MDFkNWRlMzRhNDI4MzQ2ZDUx
Y2NmODIyZmJmNTYwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQo
YSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitsZXQga2xhc3NTb3VyY2UgPSBg
Cit2YXIgQyA9IGNsYXNzIHsKKyAgICBhc3NlcnRPdXRPZkxpbmVWYWx1ZSgpIHsKKyAgICAgICAg
YXNzZXJ0KHRoaXMuI2YyMDAsICJmb28iKTsKKyAgICB9CitgOworCisKK2ZvciAobGV0IGkgPSAw
OyBpIDwgMjAwOyBpKyspIHsKKyAgICBrbGFzc1NvdXJjZSArPSAiICAgICNmIiArIGkgKyAiO1xu
IjsKK30KKwora2xhc3NTb3VyY2UgKz0gIiAgICAjZjIwMCA9IFwiZm9vXCI7XG59IjsKKworZXZh
bChrbGFzc1NvdXJjZSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGMuYXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKTsKK30KKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mOTc4ODA1N2IxYmY0OTU1MGEwZThmM2Q5OGE5NDFhODM3Y2YxMWMzCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMKQEAg
LTAsMCArMSwxNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz0xIiwgIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBt
ZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7
Cit9CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihpKSA9PiBpLiNiIik7
CisKKyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fzc2VydChpbnN0LmEo
aW5zdCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1z
dHJlc3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWlu
c3RhbmNlLmpzCmluZGV4IGU1MTYyOTlhNzkyYzYzODRiODQyYzY5N2Y0MWZjZWQ3ZjVjZmZmY2Yu
LjUwNjlhN2RhNWExNTVkY2MwNjA0ZTQ2MzJiOTBlODMwOTM5ZmU4MzYgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKKysrIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAtMSwxMSArMSwxNSBA
QAotLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUiKQorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUiLCAiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCiAKIGNsYXNzIEEgewogICAgIGEgPSAwOwogICAgIGIgPSAx
OworICAgICNjID0gMDsKKyAgICAjZCA9IDE7CiAgICAgZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJu
IDA7IH07CisgICAgI2YgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDE7IH07CiAgICAgWyJnIl0gPSAw
OwogICAgIGggPSBldmFsKCJ0cnVlIik7CisgICAgI2kgPSBldmFsKCJmYWxzZSIpOwogfQogCiBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5
LXZhbC1kaXJlY3QtZ2V0cHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTYzMzYyZmFhNjNlNDA1NjI1
ZDFmZWNlY2U5OWJjZDI2NmI5ZWE5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Z2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJpdmF0ZS5qcwpAQCAtMCwwICsxLDI5IEBACisvLyBUT0RP
OiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1
bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gR2V0QnlWYWxEaXJlY3Qgc2hvdWxkIHRocm93
IHdoZW4gdGhlIHJlY2VpdmVyIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVlc3RlZCBwcml2YXRlIHBy
b3BlcnR5CitsZXQgaSwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICN4ID0gaTsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsgaWYgKGkgPT09IDMwKSByZXR1cm4geyBbU3ltYm9sLnRvU3RyaW5n
VGFnXTogIndpdGhvdXQgI3gifTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4
OyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giOyB9
Cit9CisKK3RyeSB7CisgICAgZm9yIChpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgbGV0
IGMgPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChjKTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPT0gaSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54KCR7
Y30pIHRvIGJlICR7aX0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChl
KSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNvbnN0cnVjdG9y
ICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhy
ZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1u
YW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZh
dGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkOGUy
MTkyM2YyMDI0ZDAyMjAyZjNhMmUxNmJiNDllMWY5NWIzZAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMK
QEAgLTAsMCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmll
bGRzPTEiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgdGhyb3dzOiAoZXhwZWN0ZWRFcnJvciwgZnVuY3RvcikgPT4geworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvci5uYW1lICsg
IiBidXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgW3t9
LiN4XSA9IDE7IAorICAgICAgICAjeCA9ICJmb28iOworICAgIH0KK30pOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDRk
ZTZmNTI1MjkyMDcyYTE2YTUwNDg1MDkwMTVlY2E1Yjk5YWViCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpAQCAtMCwwICsx
LDM0IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPTEiKQorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9A
IHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gR1BWRCB3aXRoICJQdXRCeVZhbFRocm93
SWZFeGlzdHMiIHNob3VsZCB0aHJvdyBpZiBvdmVyd3JpdGluZyBhbiBhbHJlYWR5IGV4aXN0aW5n
IFByaXZhdGVOYW1lLgorbGV0IGMsIGkgPSAwLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7Cisg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBpIDwgMjkgPyB0aGlzIDogYzsKKyAg
ICB9Cit9CisKK2NsYXNzIENDIGV4dGVuZHMgQyB7CisgICAgI3ggPSBpKys7CisgICAgeCgpIHsg
cmV0dXJuIHRoaXMuI3g7IH0KK30KKworYyA9IG5ldyBDQzsKK3RyeSB7CisgICAgZm9yIChsZXQg
aiA9IDE7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGxldCB4ID0gbmV3IENDOworICAgICAgICBp
ZiAoeC54KCkgIT09IGopCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHgu
eCgpIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3gueCgpfWApOworICAgIH0KK30gY2F0Y2ggKGUp
IHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUuY29uc3RydWN0b3Ig
IT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJl
dykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFs
LWRpcmVjdC1wdXRwcml2YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3Qt
cHV0cHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDIzYzNlNGMyZDk3Njc1NDc0ZjdkZDcyYzRjMzNj
Yjg0MmFhOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1k
aXJlY3QtcHV0cHJpdmF0ZS5qcwpAQCAtMCwwICsxLDMxIEBACisvLyBUT0RPOiAvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz0xIikKKworLy8gR1BWRCB3aXRoICJQdXRCeVZhbFByaXZhdGVOYW1lIiBzaG91bGQg
dGhyb3cgaWYgd3JpdGluZyB0byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBp
ID0gMCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICN4OworICAgIGNvbnN0cnVjdG9y
KCkgeyByZXR1cm4gaSA8IDMwID8gdGhpcyA6IHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRo
b3V0ICN4IiB9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBvYmouI3ggPSBpKys7IH0K
KyAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCIgfQorfQor
Cit0cnkgeworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQg
b2JqID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngob2JqKTsKKyAgICAgICAgaWYg
KHJlc3VsdCAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54
KCR7b2JqfSkgdG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0
Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgLy8gcnZhbCBvZiBBc3NpZ25tZW50RXhw
cmVzc2lvbiBpcyBldmFsdWF0ZWQgYmVmb3JlIFByaXZhdGVGaWVsZEZpbmQoI3gsIGxyZWYpIGlz
IHBlcmZvcm1lZCwKKyAgICAvLyB0aHVzIGBpYCBoYXMgYWxyZWFkeSBiZWVuIGluY3JlbWVudGVk
LgorICAgIGlmIChpICE9PSAzMSB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAg
ICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCmluZGV4IDRmYjM2MWE1OWUyYjNkNjA5OWUyYTEyYzIyYTAwZmEyNTQ1OWI5
MzEuLjk0ZmYxYzEyZTY4MTNkMmJiZmEyZjgzNjk5NDdkMDVkZGJlNTczOTYgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwKQEAgLTQsNiArNCw3IEBAIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0ludAogICBXZWFr
UmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWNDbGFzc0Zp
ZWxkcworICBjbGFzcy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCiBza2lw
OgogICBmZWF0dXJlczoKICAgICAtIFNoYXJlZEFycmF5QnVmZmVyCkBAIC0xMSw3ICsxMiw2IEBA
IHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAgLSBjbGFzcy1maWVsZHMtcHJpdmF0
ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRz
LXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397021</attachid>
            <date>2020-04-20 15:06:16 -0700</date>
            <delta_ts>2020-04-21 14:34:06 -0700</delta_ts>
            <desc>Patch v15</desc>
            <filename>bug-206431-20200420180615.patch</filename>
            <type>text/plain</type>
            <size>183485</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
M2JhNDI0YzhlYTFkOWVlNjM3ZmI1NzM3MTFkZDZlYmJkMTM4MGZlLi40OGNlZTk2ZmQ1OTBmNmY0
NjZkMGEwYTUwZjRiZWJhOTE4OGNiZTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTEgQEAKKzIwMjAtMDQtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVy
ZW5jZXMgYXJlCisgICAgICAgIHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Ig
bm90IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAg
ICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRo
ZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0
aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUg
ZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVk
IGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVk
IGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5
IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAg
ICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBs
aWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAg
IDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAg
ICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxE
b05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAs
IDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHBy
b2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAg
ICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xv
YmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNj
b3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxO
b3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNl
aXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZh
dGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJs
eSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlW
YWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRk
ZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgSlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29k
ZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdz
OjpjcmVhdGVEaXJlY3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2
YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRl
RmllbGRQdXQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc0RpcmVjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHV0QnlWYWxGbGFnczo6cHJpdmF0ZUZpZWxkQWNjZXNzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBY2Nlc3MgY29uc3QpOgorICAgICAg
ICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZFB1dCBjb25zdCk6CisgICAgICAg
IChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkQWRkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHV0QnlWYWxGbGFnczo6UHV0QnlWYWxGbGFncyk6CisgICAgICAgICogYnl0ZWNvZGUv
UHV0S2luZC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZEFkZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0
YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkpOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0
Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgor
ICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVmaW5l
RmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAg
ICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAg
ICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1
dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93
UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6
CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9k
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6CisgICAgICAgIChK
U0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVGaWVsZEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNj
ZXNzPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgIChKU0M6OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAg
ICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChK
U0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Omlz
UHJpdmF0ZUxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9u
Q2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8TENoYXI+Ojpw
YXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxVQ2hhcj46OnBhcnNlSWRlbnRp
Zmllcik6CisgICAgICAgIChKU0M6OkxleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZp
ZXJTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+OjpsZXhXaXRob3V0Q2xlYXJpbmdM
aW5lVGVybWluYXRvcik6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAg
ICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RG90
QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNh
bGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAg
ICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6
UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVM
ZXhpY2FsU2NvcGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAg
IChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6CisgICAgICAg
IChKU0M6OkJhc2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5v
ZGU6OmlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6dHlwZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNvbnN0KToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6ZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRl
eHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNj
b3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlND
OjpTY29wZTo6c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1ByaXZh
dGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVz
KToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6
Y3VycmVudFByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNvcHlVbmRl
Y2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpt
YXRjaEFuZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6
CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6
CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0pOgorICAg
ICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAgICAgKEpTQzo6Q29t
cGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KToKKyAg
ICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAgICAgICAgKEpTQzo6
UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5h
bWVFbnRyeTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50
cnk6OnNldElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNldElzRGVj
bGFyZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VmFyaWFibGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6Y29weVByaXZhdGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE6OlJhcmVEYXRhKToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Z2V0T3JBZGRQcml2YXRlTmFtZSk6CisgICAg
ICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hlZE9wdGlv
bmFsOjpkZWNvZGVBc1B0ciBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52
aXJvbm1lbnRSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVF
bnZpcm9ubWVudFJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
YXJpYWJsZUVudmlyb25tZW50OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJs
ZUVudmlyb25tZW50OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZVJh
cmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6
ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0
ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlm
aWVycyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RF
Q0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZFBy
aXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFt
ZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0
ZVN5bWJvbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KiBydW50aW1lL0pTU2NvcGUuY3BwOgorICAgICAgICAoSlNDOjpKU1Njb3BlOjpjb2xsZWN0Q2xv
c3VyZVZhcmlhYmxlc1VuZGVyVERaKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6
CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5jcHA6CisgICAgICAgIChKU0M6OlN5bWJv
bFRhYmxlOjpjbG9uZVNjb3BlUGFydCk6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5o
OgorCiAyMDIwLTA0LTIwICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIEZUTCBkb2Vzbid0IG9ic2VydmUgdGhlIHVzZSBraW5kIG9mIENoZWNrSXNDb25z
dGFudCdzIGNoaWxkMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDIyYmYx
YTMxOGZmMWVkNzk2NjcyYmUzYzllNTJhY2YyNmI2N2I2N2IuLmY1NzIzNzI1OWI5MjQyMGFhY2I2
YmJjMTRiYjVkZmI4Y2E1ZGY5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTU0MCw2ICs1NDAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNv
bmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUv
U3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAyMDQ2YjA4YTRhMzFlNTZhYWY0MTBiNDQ0ZDljODI3YmFlZGI0
ODYzLi43MDVmNTlhNGFjNDAxMTM1MDA4NmNlM2RmODlhYWM0MDY0ZmE5MjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1MSw2ICsxMjUxLDcgQEAKIAkJODY3MDRCODcxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFy
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2
NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDEx
NTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThC
NjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFBy
b3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC00MTE5LDYgKzQxMjAsOCBAQAogCQk4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7
IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFy
clBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MzEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0
MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYy
ODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MDEs
NiArODQwNCw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0
dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQu
Y3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5o
ICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAq
LywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAog
CQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3
QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRB
N0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC04OTY5LDcg
Kzg5NzQsNiBAQAogCQkJCTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3
QTJGRCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMzMTExQjhCMjM5
NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMx
RkFFNjIwOTAwNkYzOTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3NUEwNjMyMDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzMENCNUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBp
biBIZWFkZXJzICovLApAQCAtMTAxNTMsNiArMTAxNTcsNyBAQAogCQkJCTBGMTVDRDIzMUJBNUY5
ODYwMDMxRkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0
MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkzQjRBQTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhN
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1
dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIwMyw2ICsxMDIwOCw3IEBACiAJ
CQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUw
MEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5
QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZB
MjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDBmNGM1MGRmMzY3YzY1NjA4
YTBhZjYyODNhMGRjNTI2YTk0MTBhNWUuLjU4MTE0YTEzMmYwZjJhMDQ0ZDcwNmU2Y2U4NDE3M2Zh
OGI3NGFlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OCw2ICsyNjgsNyBA
QCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdz
LmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmNwcAorYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVz
ZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVz
LmgKaW5kZXggMTM2MjVmNWJhODk5Y2NkZWJiNTYzNTQ4N2ZkYzE1MjQ2ZTcyYjgyMi4uMGYyNTMx
YzMwNjgyZDFiODNmYjI2YThkMjFlNjJkZWU0N2Q3MGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBp
bGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVT
dHJlYW1pbmdJbnRlcm5hbCkgXAotICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikg
CisgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8oY3JlYXRl
UHJpdmF0ZVN5bWJvbCkKIAogbmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JV
SUxUSU5fU1RBVElDX1NZTUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJv
bEltcGw6OlN0YXRpY1N5bWJvbEltcGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNDk4NTc5MDMzMGNjOWU1MzI5
YjMxYWVlN2MyNmJjYzEyZTQ5YzEzOC4uOWMwOTcyYzEzZWNkN2ZlMmYwOWY4YzMxYzY4NTE1MzBj
OWRmNTljYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0LnJiCkBAIC00OSw2ICs0OSw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29k
ZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1
dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0
cnVjdHVyZUlELApAQCAtNTQ5LDYgKzU1MCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAg
c2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3Zh
bF9kaXJlY3QsCisgICAgYXJnczogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAg
ICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJl
Z2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAorICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9w
IDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVy
LApAQCAtNTc0LDcgKzU4Niw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFz
ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAog
ICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBlY21hTW9kZTogRUNNQU1v
ZGUsCisgICAgICAgIGZsYWdzOiBQdXRCeVZhbEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6
IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCBlMzFiMTM0YzI4
YzFmMjgzNGVmY2I3OGUwMTY1ZWQ3ZmY2ZDgxZjNhLi4xMTI0YTNmNmYyZTNkNTVlYTUzYzkxMjBj
OWIwZWFkNTY2N2EwMzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIxMiw2ICsyMTIsNyBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0
IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0b3Is
IGluZGV4KQogICAgIFVTRVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBp
bmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BH
ZXRCeVZhbERpcmVjdCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2Us
IHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3Is
IGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5
cGUpCkBAIC00MjMsNiArNDI0LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZT
KE9wSW5zdGFuY2VvZiwgZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAg
ICAgREVGUyhPcEdldEJ5VmFsLCBkc3QpCisgICAgREVGUyhPcEdldEJ5VmFsRGlyZWN0LCBkc3Qp
CiAgICAgREVGUyhPcFR5cGVvZiwgZHN0KQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxl
LCBzcmNEc3QpCiAgICAgREVGUyhPcElzRW1wdHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCmluZGV4IDBkOTU3MDkyNmFiMTQ3Mzc4ZWMzMTcyODM4ZGIyMzU4ODJkYjdi
Y2QuLjI2OTE1YTQ0NTQyYjg3MTkwZDg4MDYzOGVjNTcyNWUyODk3NGNmYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9w
Y29kZVNpemUuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRl
ICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1Niw2ICsyNTcsNDcgQEAgc3RydWN0IEZp
dHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5
SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVj
bWFNb2RlKTsKICAgICB9CiB9OworCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3Qg
Rml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVu
YW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5VmFsRmxh
Z3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVtLCBlbmNvZGVkIGFzOgorICAgIC8vICAg
ICAgICAgIGlzU3RyaWN0CisgICAgLy8gICAgICAgICAgICAgdgorICAgIC8vICAgICAwMDAwfDAw
fDB8MCA8IGlzRGlyZWN0CisgICAgLy8gICAgICAgICAgIF4KKyAgICAvLyAgICBQcml2YXRlRmll
bGRBY2Nlc3MgezAgPSBOb25lLCAxID0gUHV0LCAzID0gQ3JlYXRlIH0KKyAgICBzdGF0aWMgY29u
c3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBz
X2lzU3RyaWN0Qml0ID0gMjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVs
ZEFjY2Vzc01hc2sgPSAxMjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVs
ZEFjY2Vzc1NoaWZ0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3Mp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGFyZ2V0
VHlwZSBjb252ZXJ0KFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlz
RGlyZWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAg
IGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlz
U3RyaWN0KCkpOworICAgICAgICBhdXRvIHByaXZhdGVGaWVsZEFjY2VzcyA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2VzcygpKTsKKyAgICAgICAgcmV0dXJuIChw
cml2YXRlRmllbGRBY2Nlc3MgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NTaGlmdCkgfCAoaXNTdHJp
Y3QgPDwgMSkgfCBpc0RpcmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgUHV0QnlWYWxGbGFncyBj
b252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0
YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOworICAgICAgICBhdXRvIGlzU3Ry
aWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAgIGF1
dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzPigoZ3BpICYgc19wcml2
YXRlRmllbGRBY2Nlc3NNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc1NoaWZ0KTsKKyAgICAg
ICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1v
ZGU6OnNsb3BweSgpOworICAgICAgICByZXR1cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vz
czo6Tm9uZSA/CisgICAgICAgICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURp
cmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKKyAgICAg
ICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3M6OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6
OmNyZWF0ZVByaXZhdGVGaWVsZFB1dChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQ
cml2YXRlRmllbGRBZGQoZWNtYU1vZGUpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1l
IEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lm
X3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVl
X3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+IHsK
ICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5o
CmluZGV4IGUyYzFhNDliNDM0YzBjYzUxNTg0OTQ0NWFjZDlmZWRiZjU5N2EwMzcuLjcwNDI1NGJi
YjdhNWRhMzE2OTFiMzEwNjY4YmYzNmNhMDQ1NGVjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMTA0LDYgKzEwNCw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYoQXJyYXksIG51bGxwdHIpIFwKICAgICB2KGFw
cGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAor
ICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwgbnVsbHB0cikKIAogCiAjZGVmaW5lIERFQ0xBUkVf
TElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY0NWRjNDA4
OTA0Zjk2OWQ3NTk1YzU4NDE2ODdjOWQwMGM5YjA1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcApAQCAtMCwwICsxLDQ5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJl
YW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQorewor
ICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQor
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEaXJlY3QiKTsKKyAgICBpZiAoZmxhZ3MuaXNQcml2
YXRlRmllbGRQdXQoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1
dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRkIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2IyNWZkZmQ1NjZhYTUyMjQ5NGJmNjYyMWJlODg3ZTdhM2RiMTVmNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgK
QEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51
bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3MgOiB1aW50OF90IHsKKyAgICBOb25lLAorICAgIFB1
dCwKKyAgICBDcmVhdGUsCit9OworCitjbGFzcyBQdXRCeVZhbEZsYWdzIHsKK3B1YmxpYzoKKyAg
ICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2Rl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsK
KyAgICB9CisKKyAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0
aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKKyAgICAvLyBwcm90b3R5cGUgY2hh
aW4gaGFzIGEgc2V0dGVyLgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVh
dGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlW
YWxGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBQ
dXRCeVZhbEZsYWdzIGNyZWF0ZVByaXZhdGVGaWVsZEFkZChFQ01BTW9kZSBlY21hTW9kZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzczo6Q3Jl
YXRlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZs
YWdzIGNyZWF0ZVByaXZhdGVGaWVsZFB1dChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzczo6UHV0LCBlY21hTW9k
ZSk7CisgICAgfQorCisgICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJl
Y3Q7IH0KKyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7
IH0KKyAgICBQcml2YXRlRmllbGRBY2Nlc3MgcHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3M7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNj
ZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3MgIT0gUHJpdmF0ZUZpZWxk
QWNjZXNzOjpOb25lOyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzczo6UHV0OyB9Cisg
ICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzczo6Q3JlYXRlOyB9CisKK3ByaXZhdGU6CisKKyAg
ICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9k
ZSkKKyAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQorICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzKFByaXZhdGVGaWVsZEFjY2Vzczo6Tm9uZSkKKyAgICAgICAgLCBtX2VjbWFNb2Rl
KGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhQ
cml2YXRlRmllbGRBY2Nlc3MgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBt
X2lzRGlyZWN0KHRydWUpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3MoYWNjZXNzKQor
ICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wg
bV9pc0RpcmVjdDsKKyAgICBQcml2YXRlRmllbGRBY2Nlc3MgbV9wcml2YXRlRmllbGRBY2Nlc3M7
CisgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKaW5kZXggNjExMjc5ZjYw
OWEwODU4OWFkY2U5MWMyYTVjOGFmNjQ4MDgwYzRjNi4uMGQzOWIwMzU4OTZlOWVmNjE5NjM0MjNh
NjFlNjgxM2ViODA3YTVmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2lu
ZC5oCkBAIC0yNyw2ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEtpbmQg
eyBEaXJlY3QsIE5vdERpcmVjdCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3Qs
IERpcmVjdEFkZFByaXZhdGUsIERpcmVjdFB1dFByaXZhdGUgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAwYmYzMDI4ZDgxMGM2MTZlYjA3YWRh
NjZjNTdkYTkyOTllMWJiY2NlLi41ZjhlYmJjMTgzMzAzNmIzZTFkZTQyY2M4NDU5OWU3NDAzYTJh
M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKSkpOwogICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMgPSBleGVjdXRhYmxlLT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3Vw
ZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFy
c2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAK
ICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBjMTllNjFjNTI4OWI3YzEwNWRmN2M2OWZmNTc3NDU1ZDQ4ZTUy
NDgyLi45N2NjNGQ2ZDE1OGNhMzgxNzZjYzc5YTJmMWRlYzA5MTBjN2NmNzA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMTg4OSw2ICsxODg5LDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlu
c3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAK
ICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IDogUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5
KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBl
dmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVk
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjY2MworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBA
IC0yNjc2LDkgKzI2ODEsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK3sKKyAgICBPcEdldEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJv
cGVydHkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKKyAgICBPcFB1dEJ5VmFs
RGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6
Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3
MDAsNiArMjcxMSwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dElu
dGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRB
ZGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHks
IHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRlRmllbGRBZGQoZWNtYU1vZGUoKSkp
OworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRlRmll
bGRQdXQoZWNtYU1vZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVyU2FtcGxl
ckJlZ2luOjplbWl0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM5N2RkZGM3ZTViOGYxMDBlOWE5
N2Q3YzM0YTY5Njg2NDYxZTZkZDkuLmIzNGM3N2Q3ZDY2ZjM2NDQ4OWRlZmI0MWUyNDA5MzY4OTI3
NjYyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc4NywxMSArNzg3LDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUs
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVj
dFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lz
dGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZEFkZChS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAgICAgICAg
dm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1w
bGVyRW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggNmYzN2E4Y2VkMWQ5OWE2YWNkNjQ5NDBhMTM5NTUxMTdhOGEw
NzYwZC4uMDk1ZDhkNmUzNjg3NzdlMGNhNzFiMjVhYzQzMmYwOTM2NzkzNzkzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtNTUxLDkgKzU1MSwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3Qo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogCiBSZWdpc3RlcklE
KiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogcHJvdG90eXBl
LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewotICAg
IC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3Bl
cnRpZXMuCisgICAgLy8gUHJpdmF0ZU5hbWVzIGFyZSBob2lzdGVkIGFuZCB3ZSBuZWVkIHRvIGRl
Y2xhcmUgdGhlbSBiZWZvcmUgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgaGFuZGxlZC4KICAgICBQ
cm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKICAgICBSZWdpc3RlcklEKiBkc3QgPSBudWxscHRy
OworICAgIGZvciAoOyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGlmICghKHAtPm1fbm9k
ZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/
IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CisgICAgICAgIGVtaXRQdXRDb25zdGFudFBy
b3BlcnR5KGdlbmVyYXRvciwgZHN0LCAqcC0+bV9ub2RlKTsKKyAgICB9CisKKyAgICAvLyBGYXN0
IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgor
ICAgIHAgPSB0aGlzOwogICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGRzdCA9IHAtPm1f
bm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3Ry
dWN0b3I7CiAKQEAgLTcxNSw2ICs3MjUsMTggQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKIAog
dm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9k
ZSkKIHsKKyAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3Iu
bW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJp
dmF0ZVN5bWJvbCk7CisKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9y
LCBudWxscHRyLCAwKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
eW1ib2wgPSBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24obnVs
bHB0ciwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0
KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJndW1lbnRzLCBwb3NpdGlvbigpLCBwb3NpdGlvbigp
LCBwb3NpdGlvbigpLCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgIFZhcmlhYmxlIHZh
ciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbm9kZS5uYW1lKCkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCBzeW1ib2wuZ2V0
KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlh
bGl6YXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRTZXRG
dW5jdGlvbk5hbWUgPSBnZW5lcmF0b3Iuc2hvdWxkU2V0RnVuY3Rpb25OYW1lKG5vZGUubV9hc3Np
Z24pOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5TmFtZTsKQEAgLTg0NSwxNiAr
ODY3LDY2IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiAgICAgfQogCiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAg
ICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0
KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldCA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIG1faWRl
bnQpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRv
ciwgZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IHJldHVybiByZXQ7CiB9CiAKK1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVy
dHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlm
IChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwo
KSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFi
bGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCkp
OworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgaWYg
KCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhp
cygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgdGhp
c1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGRzdCwgYmFzZSwgbV9pZGVudCk7Cit9CisKK1JlZ2lzdGVySUQqIEJhc2VEb3RO
b2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9y
LCBkc3QsIGJhc2UsIHRoaXNWYWx1ZSk7Cit9CisKK1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjpl
bWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQor
eworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2Vu
ZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2
YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVy
ZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1l
LmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLCBwcml2YXRlTmFtZS5n
ZXQoKSwgdmFsdWUpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsK
KyAgICAgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0
b3IuZW5zdXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJh
c2UsIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUpOworICAgIH0KKworICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgbV9pZGVudCwgdmFsdWUpOworfQorCitSZWdp
c3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRQdXRQcm9wZXJ0eShn
ZW5lcmF0b3IsIGJhc2UsIHZhbHVlLCB0aGlzVmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQXJndW1lbnRMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBSZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMTczOCwxMSAr
MTgxMCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE9wdGlvbmFsQ2hlY2soY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7CiAgICAgfQog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1
YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGlmIChiYXNlSXNT
dXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJCYXNlID0gZW1pdFN1cGVy
QmFzZUZvckNhbGxlZShnZW5lcmF0b3IpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZnVuY3Rpb24uZ2V0KCksIHN1cGVyQmFzZS5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7
CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVy
QmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKTsK
KyAgICBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZ1bmN0aW9uLmdldCgpLCBiYXNl
LmdldCgpKTsKIAogICAgIGlmIChpc09wdGlvbmFsQ2hhaW5CYXNlKCkpCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0T3B0aW9uYWxDaGVjayhmdW5jdGlvbi5nZXQoKSk7CkBAIC0yMDYzLDYgKzIxMzMs
MjIgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGJhc2VOb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0
KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKKworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQ
cml2YXRlTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVCghYmFzZUlzU3VwZXIpOworICAgICAgICBW
YXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRl
TmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRH
ZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhy
b3dJZk5vdEZvdW5kKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5n
ZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xk
VmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5h
bWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlw
ZSh2YWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlKGRzdCwgb2xkVmFsdWUuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwog
ICAgIGlmIChiYXNlSXNTdXBlcikgewpAQCAtMjI4Niw2ICsyMzcyLDIxIEBAIFJlZ2lzdGVySUQq
IFByZWZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nv
ci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90
RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHZhbHVlOworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQ
cml2YXRlTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVCghYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkp
OworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2
YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUu
Z2V0KCkpOworICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRv
cik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQ
dXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgcHJvcERzdC5nZXQoKSk7CisgICAgfQor
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFzZU5vZGUtPmlz
U3VwZXJOb2RlKCkpIHsKICAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMo
KTsKQEAgLTMxMjgsMTEgKzMyMjksNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCks
IG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZm9yd2FyZFJl
c3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1bHQuZ2V0KCkg
OiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSks
IHJlc3VsdC5nZXQoKSk7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQo
KSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0Lmdl
dCgpKTsKKyAgICBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLmdldCgpLCBmb3J3YXJk
UmVzdWx0LmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZvcndhcmRSZXN1
bHQuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRv
ci5tb3ZlKGRzdCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiB9CkBAIC0zMTQ0LDIzICszMjQxLDE1
IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2Ug
PSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBtX3JpZ2h0SGFzQXNz
aWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKIAogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFy
dCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwotICAgIGlmIChtX2Jhc2UtPmlzU3Vw
ZXJOb2RlKCkpIHsKLSAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsK
LSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOwotICAg
IH0gZWxzZQotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUpOworCiAgICAg
UmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVl
LmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5r
bm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCi0g
ICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUu
Z2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgZWxzZQotICAgICAgICByZXQgPSBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwg
YmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFsdWUpOwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAg
IHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5nZXQoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIFNob3J0Q2lyY3VpdFJlYWRNb2RpZnlEb3ROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NjIyLDYgKzQ3MTEsMTcgQEAgdm9pZCBE
ZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHko
Z2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgp
LCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFi
bGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJh
dG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24pOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lOiB7CisgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbV9pZGVudCk7CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBt
dXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkg
KyBtX2lkZW50LT5sZW5ndGgoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9
IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFy
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRl
TmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZEFkZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVy
KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7CiAgICAg
ICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMK
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMz
MApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCAzNGRhM2IxZmM3NTFiZmNlOWJmOTVkYzI2YTk0YTJkODdlOTE1NTE0Li5kMGU4YzI3NTE2
ZDNiMWE2Yjc2OGYwNDc1YjFjMjE2MGNkMzcyMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5j
bHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNp
bmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgpAQCAtMTI1Nyw2ICsxMjU4LDE4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitFQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRl
Y29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKK30KKwordGVtcGxhdGU8
PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1
dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCk7Cit9CisKIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdl
dGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5
dGVjb2RlSW5kZXgpOwpAQCAtODE4Niw3ICs4MTk5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6
ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAgICAgICAg
ICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFs
dWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBpbnN0cnVjdGlvblNpemUsIGJ5dGVjb2RlLm1f
ZWNtYU1vZGUpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0
aW9uU2l6ZSwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVk
QXNQdXRCeUlkKSB7CkBAIC04MTk3LDcgKzgyMTAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXpl
KQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJB
cmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dyYXBo
KE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcElu
Zm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpKTsKKyAg
ICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3Qg
OiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21hTW9kZShi
eXRlY29kZSkpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlWYWwgYW5kIFB1
dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIgZXhpdCBzdGF0
ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDY1MzI5
ZjVjNDVmNDMxNTgzZjM5ZTFmMDA3ZTRlMDY1MzllNTk0NzUuLmIwZjRjZGVmZWRmZGNmNDFjYjU3
ODhjMWJkMmE1YmI1Y2FmNmU1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5Nyw2ICsyOTcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2Fw
YWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgSQogCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0b3Jf
ZnJhbWVfZW52aXJvbm1lbnQ6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX2RpcmVjdDogLy8gRklY
TUU6IG9wX2dldF9ieV92YWxfZGlyZWN0IHdpbGwgbmVlZCBERkcvRlRMIHN1cHBvcnQgdG8gc2hp
cCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGNh
c2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVsZV9wcm9ncmFtX3By
b2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBlNjUzMWVjM2ZmODI2MjMzYzVkN2JlNTM1ZDEwZmZjMTZjZTVhZjNjLi4wMDNk
OWZjOTAxOWIxZGJlYzJkZjhlMzliYjhiZjk3OWNjMDA2Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQwOTgsNyArMTQwOTgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRS
ZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2lu
ZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRlRmllbGRB
Y2Nlc3M6Ok5vbmUpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNTM2NjUw
ZDZlZWNlNmFlMWFjYTAxYmY0NzMzYmE2M2VjMDVkZTIxOS4uYTFhZjJjZmYwNGUyOTE5MjlkN2Fh
NjNmYzA0ODZjMjgyZDI1YzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcApAQCAtNDE0NCw3ICs0MTQ0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNhbGxT
aXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJlZ2lzdGVy
cygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpwYXRjaHBv
aW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+
b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0
LCBQcml2YXRlRmllbGRBY2Nlc3M6Ok5vbmUpOwogCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpM
YWJlbCBkb25lID0gaml0LmxhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNM
LnJiCmluZGV4IDk0ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIxMGM4MzEuLmQ5NjU4
NWIxMDU3NzhlN2Q1MDE1YjBiNmM3Yzc1Y2NjYTIwNTlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDEsNiArMTQxLDcgQEAgbW9kdWxlIERTTAogI2luY2x1
ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRC
eUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiVG9UaGlz
U3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMu
aAppbmRleCA5MDQwZGYzODIwNzY0ZWRmOGQ1MTYxMWY4NjBmYzRkNDI2NTZjMTQ5Li45NWU2MWJj
YjM5Yzg2ZDY2MjUyYTM3OTkxMmQ3ZTg0MjQ2YTRmYjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0lDU3RhdHMuaApAQCAtNjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKKyAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlk
QWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKKyAgICBtYWNybyhPcGVyYXRpb25QdXRC
eUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUpIFwKICAgICBtYWNybyhQdXRCeUlkQWRk
QWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXApIFwKICAgICBt
YWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
OTRiMGU1NjYxMzgxMmVlZWYzNmRiMWE5MjIzNjQyM2QzODczOTc3Ny4uMzBiZDUyOWMzZTRkMjJh
MmVkMWY2Nzg5OWI0MGFkMTQxMTVmMzBiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjk4LDYgKzI5OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xP
V19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
Z2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxf
ZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfaWRfd2l0aF90aGlzKQogICAg
ICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5F
X1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3RpbmdfZnVuY19kZWNsX2luX2V2YWwpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAzNGYzZDUwZjA0YmMyYjk2ZTBmOTU5YzdjNmI1NTNm
NzQ3MDA1NTFkLi43MzQ5Yzk2MDg0NmJlOTk5NzY0OGEyOTk1M2U5MGEwNTI1YjJhOTc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQwMSw3ICs0MDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgogICAgICAgICBKdW1wTGlzdCBlbWl0Rmxv
YXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJy
YXlUeXBlKTsKIAotICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgUHV0QnlW
YWwuCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAgICBFQ01BTW9kZSBlY21h
TW9kZShPcCk7CisKKyAgICAgICAgLy8gRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBwcml2YXRlIGZp
ZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+
CisgICAgICAgIFByaXZhdGVGaWVsZEFjY2VzcyBwcml2YXRlRmllbGRBY2Nlc3MoT3ApOworCisg
ICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlW
YWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2Vs
bCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xv
d0Nhc2VzKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXgg
MjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdjZmE1ZmNjMzAyNjBlNzk1Yi4uYWM3Mzg4MzMwNzk3Mjg2
ZGI4N2IxYTI0MTIxZDBkOTQ2MmI4OTljZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKQEAgLTEzNywxMSArMTM3LDEx
IEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1h
Y3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJh
dG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENh
bGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBD
YWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZh
bHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0
S2luZCkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIGNvZGVCbG9jaywgY29kZU9y
aWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFs
dWUpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgICwgbV9wdXRLaW5kKHB1dEtpbmQp
CisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNj
ZXNzIHByaXZhdGVGaWVsZEFjY2VzcykKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVC
bG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVy
cywgYmFzZSwgdmFsdWUpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAg
LCBtX3B1dEtpbmQocHV0S2luZCkKKyAgICAgICAgLCBtX3ByaXZhdGUocHJpdmF0ZUZpZWxkQWNj
ZXNzKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9
CkBAIC0xNTMsNiArMTUzLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChVTkxJS0VM
WShtX3ByaXZhdGUgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzOjpOb25lKSkgeworICAgICAgICBBU1NF
UlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3Ry
aWN0KCkpOworICAgICAgICBpZiAobV9wcml2YXRlID09IFByaXZhdGVGaWVsZEFjY2Vzczo6Q3Jl
YXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0
T3B0aW1pemU7CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmlj
dE9wdGltaXplOworICAgIH0KKwogICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAg
ICAgICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IGYwM2UwOTI1Mzg1NDFm
YjAzNDBmMTJjNmJhOGE2MTExMWYzMzY3NzUuLjJmZGQ1ODY3YTk2MTkxZmViNjBlNjNhMjliOGNk
OWZhMGQyMmZiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlT3Jp
Z2luLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMCwxMSArMTMxLDEyIEBAIGNsYXNzIEpJVFB1
dEJ5SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAg
SklUUHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3Ry
aWN0KCkpCisgICAgICAgICwgbV9wcml2YXRlKFByaXZhdGVGaWVsZEFjY2Vzczo6Tm9uZSkKICAg
ICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENv
ZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJz
LCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVl
UmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJp
dmF0ZUZpZWxkQWNjZXNzIHByaXZhdGVBY2Nlc3MpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQzLDYgKzE0NSw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0
S2luZDsKKyAgICBQcml2YXRlRmllbGRBY2Nlc3MgbV9wcml2YXRlOwogfTsKIAogY2xhc3MgSklU
RGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAppbmRleCA5YjZjMDUyNDhiYTI5Mjk2Zjk5
ZWQzNzZmYjk0ODI4ZmJjOTMzY2JmLi5lZWU1ZTExNDM3MGE3NGY2NDA5YzU1NDdiODQ1NWVjMzVk
NmRkYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjg2LDYg
KzY4NiwzNiBAQCBBTFdBWVNfSU5MSU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFy
aXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKICAgICByZXR1cm4gYXJpdGhQcm9maWxlOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjpl
Y21hTW9kZShPcCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9lY21hTW9kZTsKK30KKwordGVtcGxh
dGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQ
dXRCeUlkIG9wKQoreworICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKK3Rl
bXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5VmFs
RGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQoreworICAgIHJldHVybiBvcC5tX2ZsYWdzLmVj
bWFNb2RlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE9wPgorUHJpdmF0ZUZpZWxkQWNjZXNz
IEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzKE9wKQoreworICAgIHJldHVybiBQcml2YXRlRmllbGRB
Y2Nlc3M6Ok5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxk
QWNjZXNzIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlW
YWxEaXJlY3Qgb3ApCit7CisgICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNz
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDJjODVjNTI2
ODNmZmM4NTgxNzZmODVkNmM3NzAxOTFlYmEzY2I3YzUuLmZmM2E5MzkzZDgwNjE2ZmZhZDgyZmJl
M2I1MDhlYzA5ZWE0NDMzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtNzExLDYgKzcxMSwxMTcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEK
ICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmpl
Y3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQog
Cit9IC8vIGV4dGVybiAiQyIKKwordXNpbmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sgPSBzdGQ6
OmZ1bmN0aW9uPHZvaWQoVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9wZXJ0eVNs
b3QmLCBjb25zdCBJZGVudGlmaWVyJik+OworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRQ
cml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRl
bnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgUHV0S2luZCBwdXRLaW5kLCBjb25zdCBQdXRQcml2YXRl
RmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQorewor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZp
ZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKyAg
ICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBBU1NFUlQocHV0S2luZCA9PSBE
aXJlY3RBZGRQcml2YXRlIHx8IHB1dEtpbmQgPT0gRGlyZWN0UHV0UHJpdmF0ZSk7CisKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okdl
dE93blByb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+aXNQcm94eSgpID8g
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlk
ZW50LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFs
T2JqZWN0LCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKKworICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUgJiYgZm91bmQpCisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZGVmaW5l
ZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgZWxzZSBpZiAocHV0S2luZCA9
PSBEaXJlY3RQdXRQcml2YXRlICYmICFmb3VuZCkKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IDA7CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVj
dCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBDb21tb25TbG93UGF0
aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBpZGVu
dCwgdmFsdWUsIHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKHZt
LCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitleHRlcm4gIkMi
IHsKKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0
cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSwgRGly
ZWN0QWRkUHJpdmF0ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
K30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBTdXBl
clNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIodm0sIGNhbGxGcmFtZSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRl
bnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAg
QWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8t
PmFjY2Vzc1R5cGUpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSkpOworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBEaXJlY3RBZGRQcml2
YXRlLCBbPV0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsK
KyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZUZpZWxk
U3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90
LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICAgICAgaWYgKGFjY2Vzc1R5cGUgIT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNv
ZGVCbG9jaywgc3RydWN0dXJlLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRC
eUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50
aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0QWRkUHJpdmF0ZSk7CisgICAgfSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlk
ZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNo
ZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpOworCisgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSwgRGlyZWN0UHV0UHJpdmF0ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKK30KKwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRy
X3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBl
clNhbXBsZXJTY29wZShmYWxzZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIg
aWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0Nh
Y2hlYWJsZUlkZW50aWZpZXIpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKyAgICBwdXRQcml2
YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlm
aWVyLCB2YWx1ZSwgRGlyZWN0UHV0UHJpdmF0ZSwgWyZdKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0
aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0LT5jbGFz
c0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOworCisgICAg
ICAgIGlmIChhY2Nlc3NUeXBlICE9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5h
Y2Nlc3NUeXBlKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoc3R1YkluZm8t
PmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcikp
CisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVj
dFB1dFByaXZhdGUpOworICAgIH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Cit9CisKIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1ZSB2YWx1
ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTgwOCw2ICs5MTksMTcgQEAgc3RhdGljIHZvaWQg
ZGlyZWN0UHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGJh
c2VPYmplY3QsIEoKIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBlY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICBpZiAocHJvcGVydHku
aXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVt
cHRpbmcgdG8gc3RvcmUgdG8gYSBub24tZXhpc3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBz
aW1pbGFyIHRvIGEgVERaLWxpa2UgYmVoYXZpb3VyLgorICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IHZtLnRvcENhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgICAgIGF1dG8gYnl0ZWNv
ZGUgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRl
eCktPmFzPE9wUHV0QnlWYWxEaXJlY3Q+KCk7CisgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwor
ICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2Jq
ZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICAgICAgaWYgKGZvdW5kID09
IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkgeworICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgZm91bmQgPyBjcmVhdGVSZWRlZmluZWRQ
cml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkgOiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVF
cnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDllYTNjYmQ5MzRlYjQ3MzY5NzFk
NmY5ZTFiMjdlNzgxODhkNDY0MTAuLjRhNjM0ZGI5ZjY1ODg2MTg5NTU3MGQ1MGFjNTJmNGJkOWZm
NDk5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0x
ODgsNiArMTg4LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViCiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3QoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3Ry
aWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0
cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRy
X3QpIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBC
eVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhNDA4MDU5MzY1MGE2ZWM1Njhh
YTYxMDY5MTdmZTk3YjM4ZjEzMzhiLi40YzVkNmQwMDQzNzhjZjZkMmI4NjdmNWM5MzQ2YjRlOTdj
ZDBkZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0
UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAg
IEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lz
dGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAg
ICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2Rl
Lm1fZWNtYU1vZGUsIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFs
dWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0
ZUZpZWxkQWNjZXNzKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmll
ciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0
ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAg
LTMxNyw3ICszMTcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBi
eXRlY29kZS5tX2VjbWFNb2RlOworICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0
ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02NzAsOCArNjcwLDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLAotICAg
ICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKKyAg
ICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmllbGRBY2Nlc3MoYnl0
ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRk
U2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDQwOTFjNDRmN2Q3MTdm
YzJiM2EwMWIyNDExMmVmYThkMzdhOWY1MDUuLjRiMTY0MDUyZTVlM2UxNDFiYWFkN2I0YzAzZDFk
M2RiZTlkMTAzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQg
cHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVy
dHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7
CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJl
Z1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVG
aWVsZEFjY2VzcyhieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTYxNiw3ICs2MTYsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwg
Q2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxh
YmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21J
ZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAgICAg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1Qy
KSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8g
RGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNt
YU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3M6
Ok5vbmUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRT
bG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAKaW5kZXggMThiZDZlNDUzZThkNjA1NzBiOTNiMTI0N2ViNjViODJlZjIzZWU2Ny4uZmM0
NjIzZTY2ODBkZTJlMjdiMzllNTBjMWM5YTJiZmFlYWJlYzExMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCkBAIC01MjAsNiArNTIwLDEwIEBAIHN0YXRpYyBhdXRvIGFwcHJv
cHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3Qs
IFB1dEtpCiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKHB1dEtp
bmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RT
dHJpY3Q7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdEFkZFByaXZhdGUpCisgICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3Q7CisgICAgICAgIGlm
IChwdXRLaW5kID09IERpcmVjdFB1dFByaXZhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3Q7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0OwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC01MzIsNiAr
NTM2LDEwIEBAIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlv
bihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpIHsKICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0QWRkUHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkQWRkUHJpdmF0ZVN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBE
aXJlY3RQdXRQcml2YXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQ
cml2YXRlU3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0T3B0aW1pemU7CiAgICAgfQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTYyNSw2
ICs2MzMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAg
ICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0Owog
ICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IE5vdERpcmVjdCkgeworICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocHV0S2luZCAhPSBEaXJlY3RQdXRQcml2YXRlICYmIHB1dEtpbmQgIT0g
RGlyZWN0QWRkUHJpdmF0ZSk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMg
PSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIp
OwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC02NDIsNiArNjUxLDEzIEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RBZGRQcml2YXRlKSB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOworICAg
ICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9w
ZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50
LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVh
dGVUcmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBvbGRTdHJ1
Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vz
c0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hl
YWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRl
eCA3MTI1YmQ0ZjUxYWY4MTViOWQ1MDY2MWViN2EzYzI0MWE1YWQ2MDNiLi43NTY4ZDIzNmQzYWZi
NWZjMTRhNjM4NzQ1MTg3NmY4OTkyZjk0NjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNTksNiArNTksNyBA
QAogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3Mu
aCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3Mu
aCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGZmZDZiNWUxMTViNmZkOWViNWU2Yjg5ODI4ZGJk
N2ZlOTZiY2E5ZDAuLjM1YjQ2N2VjMzI3NDIwYTY1ZmZhMWU1YTRjMjAwZjBjNjdhMTBhZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAt
MTExOSwxNSArMTExOSwxOCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbF9kaXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBi
eXRlY29kZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3Qo
KSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAg
IGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0
KCk7CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcyA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQ
cml2YXRlRmllbGRBY2Nlc3MoKTsKICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigp
KSkgewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBuYW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxs
IHJldHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZlIGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2
YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMuCiAgICAgICAgIEFTU0VSVChpc0luZGV4KHN1
YnNjcmlwdC5hc1VJbnQzMigpKSk7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nl
c3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1
YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5k
ZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBM
TElOVF9FTkQoKTsKICAgICB9CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKKyAg
ICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgICAgIGRvdWJsZSBzdWJz
Y3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOwogICAgICAgICB1aW50MzJfdCBz
dWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJs
ZSk7CiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAm
JiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgewpAQCAtMTE0MSw5ICsxMTQ0LDE3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBpZiAo
VU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX0VORCgpOwog
CisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9PSBpc1ByaXZhdGVGaWVsZEFj
Y2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJv
cGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7Cisg
ICAgICAgIGlmIChpc1ByaXZhdGVGaWVsZEFjY2VzcykgeworICAgICAgICAgICAgLy8gVGhyb3cg
YSBUeXBlRXJyb3IgaWYgYXR0ZW1wdGluZyB0byBzdG9yZSB0byBhIG5vbi1leGlzdGVudCBwcml2
YXRlIGZpZWxkLiBUaGlzIGlzIHNpbWlsYXIgdG8gYSBURFotbGlrZSBiZWhhdmlvdXIuCisgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQgPSBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOworICAgICAgICAgICAgaWYgKGZvdW5kID09IGJvb2woYnl0ZWNvZGUubV9mbGFn
cy5pc1ByaXZhdGVGaWVsZEFkZCgpKSkKKyAgICAgICAgICAgICAgICBMTElOVF9USFJPVyhmb3Vu
ZCA/IGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSA6IGNyZWF0
ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICB9CiAgICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAg
ICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxPYmplY3Qs
IGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQppbmRleCA1N2UzOTgyYjgzOWVhZjllYTk4Y2Y0ODI5MGQ2MTQyMzIwNDRhNWE2Li42ZTNiNDJk
OGU4YzUyNTcyYTMxNzMwODQ5ZDEwYmFhODNlYzk1ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAt
MTUxOSw4NCArMTUxOSw4OSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQ
dXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQpCiAKK21h
Y3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5hbWUsIG9z
ckV4aXRQb2ludCkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgJW9w
Y29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgICAgICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0UGF5bG9hZCwgc2NyYXRj
aCkKKyAgICAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKKyAgICAgICAgICAgIHN0b3JlaSBJ
bnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBy
ZXN1bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KKyAgICAgICAgICAg
IHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHJl
c3VsdFBheWxvYWQpCisgICAgICAgICAgICBkaXNwYXRjaCgpCisgICAgICAgIGVuZAogCi1sbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1hY3JvIGZpbmlzaEludEdldEJ5
VmFsKHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkK
LSAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQotICAg
ICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhd
Ci0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBJbnQzMlRh
ZywgcmVzdWx0UGF5bG9hZCkKLSAgICAgICAgZGlzcGF0Y2goKQotICAgIGVuZAorICAgICAgICBt
YWNybyBmaW5pc2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2Ny
YXRjaDMpCisgICAgICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gxKQorICAgICAgICAgICAgZmQy
aWkgcmVzdWx0LCBzY3JhdGNoMiwgc2NyYXRjaDMKKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNo
MywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRj
aDIsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KKyAgICAgICAgICAgIHZhbHVlUHJv
ZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxlLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQor
ICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotICAgIG1hY3JvIGZpbmlzaERv
dWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzY3JhdGNoMykKLSAgICAg
ICAgZ2V0KG1fZHN0LCBzY3JhdGNoMSkKLSAgICAgICAgZmQyaWkgcmVzdWx0LCBzY3JhdGNoMiwg
c2NyYXRjaDMKLSAgICAgICAgc3RvcmVpIHNjcmF0Y2gzLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNo
MSwgOF0KLSAgICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRj
aDEsIDhdCi0gICAgICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCBz
Y3JhdGNoMywgc2NyYXRjaDIpCisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICAgICAgZ2V0
KG1fYmFzZSwgdDIpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUs
IHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBtb3ZlIHQwLCB0Mgor
ICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJv
ZmlsZSwgdDIsIHQ1LCB0MSkKKyAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgSW50MzJUYWcsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCisgICAgICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQz
CisgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCisgICAgICAgIGJpZXEgdDIsIElu
dDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCisgICAgICAgIGJpbmVxIHQyLCBDb250
aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cworCisgICAgLm9wR2V0QnlWYWxJ
c0NvbnRpZ3VvdXM6CisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsg
SW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNs
b3cKKyAgICAgICAgbG9hZGkgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsRG9u
ZQorCisgICAgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgorICAgICAgICBiaW5lcSB0MiwgRG91
YmxlU2hhcGUsIC5vcEdldEJ5VmFsTm90RG91YmxlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9m
IEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhb
dDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAorICAg
ICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgIyBGSVhNRTog
VGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgorICAgICAgICBmZDJpaSBmdDAsIHQx
LCB0MgorICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBqbXAgLm9wR2V0QnlWYWxOb3RF
bXB0eQorCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6CisgICAgICAgIHN1YmkgQXJyYXlTdG9y
YWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0g
QXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBiaWFlcSB0MSwgLXNp
emVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVu
Z3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgbG9hZGkgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKworICAgIC5vcEdl
dEJ5VmFsRG9uZToKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgYmllcSB0MiwgRW1w
dHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgLm9wR2V0QnlWYWxOb3RFbXB0eToKKyAg
ICAgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICAgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2Rl
U3RydWN0JSwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQogICAgICAgICBkaXNwYXRjaCgpCi0gICAg
ZW5kCiAKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0gICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAub3BHZXRC
eVZhbFNsb3cpCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6
TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotICAgIGdldChtX3Byb3BlcnR5
LCB0MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MywgSW50MzJU
YWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCi0gICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5
W3QwXSwgdDMKLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEgdDIsIElu
dDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENvbnRpZ3Vv
dXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXNDb250aWd1
b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2Fk
aSBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QzLCB0
MSwgOF0sIHQxCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5vdENvbnRp
Z3VvdXM6Ci0gICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQot
ICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUu
bGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2FkZCBbdDMs
IHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAg
IyBGSVhNRTogVGhpcyBjb3VsZCBiZSBtYXNzaXZlbHkgb3B0aW1pemVkLgotICAgIGZkMmlpIGZ0
MCwgdDEsIHQyCi0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBqbXAgLm9wR2V0QnlWYWxOb3RFbXB0
eQotCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0
MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hh
cGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJ
bmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3Qz
XSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRh
Z09mZnNldFt0MywgdDEsIDhdLCB0MgotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCi0KLS5vcEdldEJ5VmFsRG9uZToKLSAgICBn
ZXQobV9kc3QsIHQwKQotICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xv
dwotLm9wR2V0QnlWYWxOb3RFbXB0eToKLSAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQw
LCA4XQotICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQotICAgIHZhbHVl
UHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCi0gICAgZGlzcGF0Y2go
KQorICAgIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6ICAgCisgICAgICAgIGdldEJ5VmFs
VHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZh
bCwgLm9wR2V0QnlWYWxTbG93KQogCi0ub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAg
IGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3Vi
bGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorICAgIC5vcEdldEJ5VmFsU2xvdzoKKyAgICAg
ICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0Y2goKQogCi0ub3BH
ZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3Zh
bCkKLSAgICBkaXNwYXRjaCgpCisgICAgLm9zclJldHVyblBvaW50OgorICAgICAgICBvc3JFeGl0
UG9pbnQoc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKKyAgICBlbmQpCitlbmQKIAotLm9zclJldHVy
blBvaW50OgorZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBfbGxpbnRfc2xvd19w
YXRoX2dldF9ieV92YWwsIG1hY3JvKHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0dGVy
U2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCiAgICAgbWV0YWRh
dGEodDIsIHQzKQogICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQyLCBy
MSwgcjApCiAgICAgcmV0dXJuKHIxLCByMCkKLQogZW5kKQogCitnZXRCeVZhbE9wKGdldF9ieV92
YWxfZGlyZWN0LCBPcEdldEJ5VmFsRGlyZWN0LCBfc2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0
LCBtYWNybyhhLCBiLCBjKSBlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDY1NTkyZTgyNGQ2NDA4MWQwNzNjYjYzMjEwYWM2
NjM2ODg3N2YxZDEuLmJmMTI0NDAyYzdjZWM2Nzc0ZDU1OGY3NTIxYmJjZjc0NGQ0MjNlMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCkBAIC0xNTY1LDkwICsxNTY1LDkzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
cHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
CiAKIGVuZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNs
b3dQYXRoTmFtZSkKKyAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgJW9w
Y29kZVN0cnVjdCUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQorICAgICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2Zy
LCBzY3JhdGNoLCA4XQorICAgICAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCBt
X3Byb2ZpbGUsIHQ1LCByZXN1bHQpCisgICAgICAgICAgICBkaXNwYXRjaCgpCisgICAgICAgIGVu
ZAogCi1sbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQotICAgIG1hY3JvIGZpbmlz
aEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQot
ICAgICAgICBzdG9yZXEgcmVzdWx0LCBbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVBy
b2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQotICAgICAgICBkaXNwYXRj
aCgpCi0gICAgZW5kCisgICAgICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdCwgc2Ny
YXRjaCkKKyAgICAgICAgICAgIG9ycSBudW1iZXJUYWcsIHJlc3VsdAorICAgICAgICAgICAgZmlu
aXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICBlbmQKIAotICAgIG1hY3JvIGZp
bmlzaEludEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICAgICAgb3JxIG51bWJlclRhZywg
cmVzdWx0Ci0gICAgICAgIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKLSAgICBlbmQK
KyAgICAgICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2Ny
YXRjaDIsIHVudXNlZCkKKyAgICAgICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQorICAgICAg
ICAgICAgc3VicSBudW1iZXJUYWcsIHNjcmF0Y2gxCisgICAgICAgICAgICBmaW5pc2hHZXRCeVZh
bChzY3JhdGNoMSwgc2NyYXRjaDIpCisgICAgICAgIGVuZAogCi0gICAgbWFjcm8gZmluaXNoRG91
YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHVudXNlZCkKLSAgICAgICAg
ZmQycSByZXN1bHQsIHNjcmF0Y2gxCi0gICAgICAgIHN1YnEgbnVtYmVyVGFnLCBzY3JhdGNoMQot
ICAgICAgICBmaW5pc2hHZXRCeVZhbChzY3JhdGNoMSwgc2NyYXRjaDIpCi0gICAgZW5kCisgICAg
ICAgIG1ldGFkYXRhKHQ1LCB0MikKIAotICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAgICAgICAgZ2V0
KG1fYmFzZSwgdDIpCisgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQy
LCB0MCwgLm9wR2V0QnlWYWxTbG93KQogCi0gICAgZ2V0KG1fYmFzZSwgdDIpCi0gICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCi0KLSAg
ICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdldEJ5VmFsOjpNZXRhZGF0YTo6bV9h
cnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCi0KLSAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCi0gICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93
KQotICAgIHN4aTJxIHQxLCB0MQotCi0gICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDBdLCB0MywgbnVtYmVyVGFnKQotICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJU
YWcKLQotICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCi0gICAgYmllcSB0MiwgSW50MzJT
aGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXMKLSAgICBiaW5lcSB0MiwgQ29udGlndW91c1No
YXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKLQotLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6
Ci0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6
dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChtX2Rz
dCwgdDApCi0gICAgbG9hZHEgW3QzLCB0MSwgOF0sIHQyCi0gICAgYnRxeiB0MiwgLm9wR2V0QnlW
YWxTbG93Ci0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotCi0ub3BHZXRCeVZhbE5vdENvbnRpZ3Vv
dXM6Ci0gICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQotICAg
IGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVu
Z3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQw
KQotICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKLSAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BH
ZXRCeVZhbFNsb3cKLSAgICBmZDJxIGZ0MCwgdDIKLSAgICBzdWJxIG51bWJlclRhZywgdDIKLSAg
ICBqbXAgLm9wR2V0QnlWYWxEb25lCi0gICAgCi0ub3BHZXRCeVZhbE5vdERvdWJsZToKLSAgICBz
dWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgotICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFn
ZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UK
LSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0KG1fZHN0
LCB0MCkKLSAgICBsb2FkcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0MSwgOF0sIHQyCi0g
ICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93Ci0KLS5vcEdldEJ5VmFsRG9uZToKLSAgICBzdG9y
ZXEgdDIsIFtjZnIsIHQwLCA4XQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2Zp
bGUsIHQ1LCB0MikKLSAgICBkaXNwYXRjaCgpCisgICAgICAgIG1vdmUgdDAsIHQyCisgICAgICAg
IGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0
MiwgdDUsIHQxKQogCi0ub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgotICAgIGdldEJ5VmFs
VHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hEb3VibGVHZXRCeVZh
bCwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xv
dykKKyAgICAgICAgc3hpMnEgdDEsIHQxCiAKLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAg
ICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgbnVtYmVy
VGFnKQorICAgICAgICBtb3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCiAKLS5vc3JSZXR1cm5Qb2lu
dDoKLSAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6
ZSkKLSAgICBtZXRhZGF0YSh0NSwgdDIpCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1f
cHJvZmlsZSwgdDUsIHIwKQotICAgIHJldHVybihyMCkKKyAgICAgICAgYW5kaSBJbmRleGluZ1No
YXBlTWFzaywgdDIKKyAgICAgICAgYmllcSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0Nv
bnRpZ3VvdXMKKyAgICAgICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxO
b3RDb250aWd1b3VzCisKKyAgICAub3BHZXRCeVZhbElzQ29udGlndW91czoKKyAgICAgICAgYmlh
ZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQw
KQorICAgICAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0
QnlWYWxTbG93CisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFs
Tm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZh
bE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93
CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAK
KyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGZkMnEg
ZnQwLCB0MgorICAgICAgICBzdWJxIG51bWJlclRhZywgdDIKKyAgICAgICAgam1wIC5vcEdldEJ5
VmFsRG9uZQorICAgICAgICAKKyAgICAub3BHZXRCeVZhbE5vdERvdWJsZToKKyAgICAgICAgc3Vi
aSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9y
YWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFn
ZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMudmVjdG9yTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
IGdldChtX2RzdCwgdDApCisgICAgICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMs
IHQxLCA4XSwgdDIKKyAgICAgICAgYnRxeiB0MiwgLm9wR2V0QnlWYWxTbG93CisKKyAgICAub3BH
ZXRCeVZhbERvbmU6CisgICAgICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCisgICAgICAgIHZh
bHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxlLCB0NSwgdDIpCisgICAgICAgIGRp
c3BhdGNoKCkKIAotZW5kKQorICAgIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6CisgICAg
ICAgIGdldEJ5VmFsVHlwZWRBcnJheSh0MCwgdDEsIGZpbmlzaEludEdldEJ5VmFsLCBmaW5pc2hE
b3VibGVHZXRCeVZhbCwgLm9wR2V0QnlWYWxTbG93KQorCisgICAgLm9wR2V0QnlWYWxTbG93Ogor
ICAgICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGhOYW1lKQorICAgICAgICBkaXNwYXRjaCgpCisK
KyAgICAub3NyUmV0dXJuUG9pbnQ6CisgICAgICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Q
b2ludChvcF8lb3Bjb2RlTmFtZSUsIHNpemUpCisgICAgICAgIG1ldGFkYXRhKHQ1LCB0MikKKyAg
ICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCBtX3Byb2ZpbGUsIHQ1LCByMCkKKyAg
ICAgICAgcmV0dXJuKHIwKQorICAgIGVuZCkKK2VuZAorCitnZXRCeVZhbE9wKGdldF9ieV92YWws
IE9wR2V0QnlWYWwsIF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKIAorZ2V0QnlWYWxPcChn
ZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFs
X2RpcmVjdCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9z
ckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bj
b2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZDk1NTgwOGM2
YTMyOGRjZTA2ZGE3M2U3NTFkNjIyMzdkZDc3YmE2Mi4uYmNmNjlmMTYzZTQxNjZjNjk5OTJhMjI0
ZmUyNjBiMGExMjY0ODkzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciogcHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBEb3RUeXBl
IHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAgaWYgKGJh
c2UtPmlzU3VwZXJOb2RlKCkpCiAgICAgICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0eSgpOwogICAg
ICAgICAKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAgICAgIERv
dEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNzb3JOb2Rl
KGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHksIHR5cGUpOwogICAgICAgICBzZXRFeGNlcHRpb25M
b2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwog
ICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbm9kZS0+
aXNBc3NpZ25tZW50TG9jYXRpb24oKTsKICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0ZUxvY2F0
aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS0+
aXNQcml2YXRlTG9jYXRpb24oKTsKKyAgICB9CisKICAgICBib29sIGlzT2JqZWN0TGl0ZXJhbChj
b25zdCBFeHByZXNzaW9uJiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGUtPmlzT2Jq
ZWN0TGl0ZXJhbCgpOwpAQCAtMTQzOCwxNSArMTQ0MywxNSBAQCBFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JO
b2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZSA9IG51bGxwdHI7CiAg
ICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92
bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpIHx8IGRvdC0+
aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFBy
aXZhdGVOYW1lKCkpKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0
aCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlw
ZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGRE
ZXB0aCk7CiAgICAgZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3QtPmlkZW50
aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGlj
TmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBj
aGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRoZSBieXRlY29k
ZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0LiBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAgICAgICAg
aWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gIlJlZmxlY3QiKQotICAgICAgICAg
ICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAgICAgIG5v
ZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwogICAgIH0K
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0
aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
YXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKKyAgICAgICAgbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCks
IGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpAQCAtMTU4Nyw3
ICsxNTkyLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAgICBEb3RBY2Nlc3Nvck5vZGUq
IGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAKICAgICBpZiAob3Ag
PT0gT3BlcmF0b3I6OkVxdWFsKQotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBB
c3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4
cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgZXhwciwgZXhwckhhc0Fz
c2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOwogCiAgICAgaWYgKG9wID09IE9w
ZXJhdG9yOjpDb2FsZXNjZUVxIHx8IG9wID09IE9wZXJhdG9yOjpPckVxIHx8IG9wID09IE9wZXJh
dG9yOjpBbmRFcSkgewogICAgICAgICBhdXRvKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBT
aG9ydENpcmN1aXRSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQs
IGVuZCk7CkBAIC0xNTk1LDcgKzE2MDAsNyBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcgogICAg
ICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2
b3QsIHN0YXJ0LCBlbmQpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywg
ZGl2b3QsIHN0YXJ0LCBlbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+
ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDlhYTI2NzMwMzMwZDY1Mzhm
NDhiMGMwMTUzNmI3YzIzMjE1Mjc1YzUuLmZmM2Q2YTBiNzVjYTlkMTEwYzYxY2E1MWI0YmMzZjY4
NTk1Mzk0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC05NTAs
MTAgKzk1MCwxMyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdB
WVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgcmV0dXJu
IGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYmICFzdHJpY3RNb2RlID8gSURFTlQgOiBr
ZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9
IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOworCisgICAgYm9v
bCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKKyAgICBib29sIGlzQnVpbHRpbk5h
bWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKICAgICBi
b29sIGlzV2VsbEtub3duU3ltYm9sID0gZmFsc2U7Ci0gICAgaWYgKGlzUHJpdmF0ZU5hbWUpIHsK
KyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKyAgICBlbHNlIGlmIChp
c0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24p
OwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdAJykgewpAQCAt
OTYxLDcgKzk2NCw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICBzaGlm
dCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZp
ZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1f
Y3VycmVudCkgfHwgbV9jdXJyZW50ID09ICdcXCcpOwogICAgIHdoaWxlIChpc0lkZW50UGFydCht
X2N1cnJlbnQpKQpAQCAtOTc0LDcgKzk3Nyw4IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAg
ICAgCiAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0
cigpIC0gaWRlbnRpZmllclN0YXJ0OwotICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0
aW9uICYmIGlzUHJpdmF0ZU5hbWUpIHsKKyAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihp
ZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOworICAgICAgICBpZiAobV9wYXJzaW5n
QnVpbHRpbkZ1bmN0aW9uICYmIGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgICAgIGlmIChpc1dl
bGxLbm93blN5bWJvbCkKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRl
bnRpZmllcihtX3ZtLCBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFdl
bGxLbm93blN5bWJvbChpZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpKTsKICAgICAg
ICAgICAgIGVsc2UKQEAgLTk5NiwyMCArMTAwMCwyMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6
cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKIAotICAg
IGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdz
LmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNQcml2YXRl
TmFtZSkgeworICAgIGF1dG8gaWRlbnRUeXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1F
IDogSURFTlQ7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
JiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcykp
ICYmICFpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlm
aWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CiAgICAgICAg
ICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgq
aWRlbnQpOwogICAgICAgICAgICAgQVNTRVJUKChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
fHwgIWVudHJ5KTsKICAgICAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIElERU5UOworICAgICAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgICAg
ICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4
ZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RS
SUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiAo
dG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBpZGVu
dFR5cGU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICByZXR1cm4g
aWRlbnRUeXBlOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRU
eXBlOwogfQogCiB0ZW1wbGF0ZSA8PgpAQCAtMTAyNiw2ICsxMDMxLDEwIEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8VUNoYXI+OjpwCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUg
PSBtX2N1cnJlbnQgPT0gJyMnOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlm
dCgpOworCiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQ
dHIoKTsKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQoaXNTaW5nbGVDaGFy
YWN0ZXJJZGVudFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQp
IHx8IG1fY3VycmVudCA9PSAnXFwnKTsKQEAgLTEwNTAsNiArMTA1OSw5IEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8VUNoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxs
cHRyOwogICAgIAorICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICByZXR1cm4gUFJJVkFU
RU5BTUU7CisKICAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAm
JiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkp
IHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKQEAgLTEwNzQsNiArMTA4NiwxMCBAQCBKU1Rv
a2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNU
b2tlbkRhdGEqIHRva2VuRGF0YQogICAgIEFTU0VSVChtX2J1ZmZlcjE2LmlzRW1wdHkoKSk7CiAg
ICAgQVNTRVJUKCF0b2tlbkRhdGEtPmVzY2FwZWQpOwogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1l
ID0gKmlkZW50aWZpZXJTdGFydCA9PSAnIyc7CisgICAgSlNUb2tlblR5cGUgaWRlbnRUeXBlID0g
aXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CisgICAgQVNTRVJUKCFpc1ByaXZh
dGVOYW1lIHx8IGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50U291cmNlUHRyKCkpOworCiAgICAg
YXV0byBmaWxsQnVmZmVyID0gWyZdIChib29sIGlzU3RhcnQgPSBmYWxzZSkgewogICAgICAgICAv
LyBcdVhYWFggdW5pY29kZSBjaGFyYWN0ZXJzIG9yIFN1cnJvZ2F0ZSBwYWlycy4KICAgICAgICAg
aWYgKGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50U291cmNlUHRyKCkpCkBAIC0xMDkzLDcgKzEx
MDksNyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVy
U2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAgICAgICAgaWYgKHNob3VsZENy
ZWF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgcmVjb3JkVW5pY29kZUNvZGVQb2ludChj
aGFyYWN0ZXIudmFsdWUoKSk7CiAgICAgICAgICAgICBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
U291cmNlUHRyKCk7Ci0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1
cm4gaWRlbnRUeXBlOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKFUxNl9JU19TVVJST0dB
VEUobV9jdXJyZW50KSk7CkBAIC0xMTA5LDcgKzExMjUsNyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxD
aGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2Vu
RGF0YQogICAgICAgICBzaGlmdCgpOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZGVudGlm
aWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAg
ICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9OwogCiAgICAgSlNUb2tlblR5cGUgdHlwZSA9
IGZpbGxCdWZmZXIoaWRlbnRpZmllclN0YXJ0ID09IGN1cnJlbnRTb3VyY2VQdHIoKSk7CkBAIC0x
MTQ1LDEzICsxMTYxLDEzIEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJz
ZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgIEFTU0VS
VChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUq
IGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAgICAgICAgaWYgKCFlbnRy
eSkKLSAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5
cGU7CiAgICAgICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+
KGVudHJ5LT5sZXhlclZhbHVlKCkpOwogICAgICAgICBpZiAoKHRva2VuICE9IFJFU0VSVkVEX0lG
X1NUUklDVCkgfHwgc3RyaWN0TW9kZSkKICAgICAgICAgICAgIHJldHVybiBVTkVYUEVDVEVEX0VT
Q0FQRV9FUlJPUlRPSzsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlk
ZW50VHlwZTsKIH0KIAogc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBjaGFyYWN0ZXJSZXF1aXJl
c1BhcnNlU3RyaW5nU2xvd0Nhc2UoTENoYXIgY2hhcmFjdGVyKQpAQCAtMjQ3OCwxNCArMjQ5NCwy
MSBAQCBzdGFydDoKICAgICAgICAgbV9oYXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuID0gdHJ1
ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7Ci0g
ICAgY2FzZSBDaGFyYWN0ZXJIYXNoOgorICAgIGNhc2UgQ2hhcmFjdGVySGFzaDogewogICAgICAg
ICAvLyBIYXNoYmFuZyBpcyBvbmx5IHBlcm1pdHRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHNvdXJj
ZSB0ZXh0LgotICAgICAgICBpZiAocGVlaygxKSA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkg
eworICAgICAgICBhdXRvIG5leHQgPSBwZWVrKDEpOworICAgICAgICBpZiAobmV4dCA9PSAnIScg
JiYgIWN1cnJlbnRPZmZzZXQoKSkgewogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAg
IHNoaWZ0KCk7CiAgICAgICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7CiAgICAgICAg
IH0KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBpdCBjb3VsZCBiZSBhIHZhbGlkIFByaXZhdGVOYW1l
LgorICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkgJiYgKGlzU2lu
Z2xlQ2hhcmFjdGVySWRlbnRTdGFydChuZXh0KSB8fCBuZXh0ID09ICdcXCcpKSB7CisgICAgICAg
ICAgICBsZXhlckZsYWdzLnJlbW92ZShMZXhlckZsYWdzOjpEb250QnVpbGRLZXl3b3Jkcyk7Cisg
ICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CisgICAgICAgIH0KICAgICAgICAgZ290byBpbnZh
bGlkQ2hhcmFjdGVyOworICAgIH0KICAgICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVy
U3RhcnQ6CiAgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICAg
ICBnb3RvIHBhcnNlSWRlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCmluZGV4IDlkNWY5MzFlNzJmNmE1ZTg1MjVkMDYyNDNiMTNhYWRhMTk0
YmExYTAuLjFhMDhmZGIxMmZjNTNkYzU2MDkxYTUyNDEzZmIxMTk5YmM4NmVkMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC0zMjcs
MTAgKzMyNywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
KyAgICBpbmxpbmUgQmFzZURvdE5vZGU6OkJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRG90VHlwZSB0eXBlKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCisgICAgICAgICwg
bV90eXBlKHR5cGUpCisgICAgeworICAgIH0KKworICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6
OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKKyAg
ICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgewog
ICAgIH0KICAgICAKQEAgLTQxOCwxMSArNDI0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxv
Y2F0aW9uKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBh
cmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFz
ZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAg
LCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJn
cyhhcmdzKQogICAgIHsKICAgICB9CkBAIC00MzcsMTQgKzQ0MSwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRp
c3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90
RW5kKQorICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRp
c3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKQogICAgICAgICAsIG1fZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KGRp
c3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5
KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBh
cmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBw
bHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQs
IHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rp
c3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBw
bHkpCiAgICAgewogICAgIH0KQEAgLTc3MiwyMSArNzc2LDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6
OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24s
IGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAg
ICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwg
bV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZWFk
TW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBE
b3RUeXBlIHR5cGUsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
CisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAg
ICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQog
ICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAg
ICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA5ZDFjZmE0ZjE3NjEzMDJhMzNiYmFl
MzFlZjYwZmRmY2FmMjA3ZGY1Li4xMWJmNGE2ODRhMWJkOWEwOTNlYjhlYjE2ZTFlMTM3MjY2MjBk
MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMzM1LDcgKzMz
NSw3IEBAIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHko
Y29uc3QgSWRlbnRpZmllciYgcHJvcE5hbWUpCiBib29sIFByb3BlcnR5TGlzdE5vZGU6OnNob3Vs
ZENyZWF0ZUxleGljYWxTY29wZUZvckNsYXNzKFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCiB7CiAg
ICAgd2hpbGUgKGxpc3QpIHsKLSAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENs
YXNzRmllbGQoKSkKKyAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmll
bGQoKSB8fCBsaXN0LT5tX25vZGUtPmlzUHJpdmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGxpc3QgPSBsaXN0LT5tX25leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCmluZGV4IGMyOTc0ZWFkMTAxMGFjMzJiYTMxODNkY2VlMTFkNDU4Yjdj
MDBkNTEuLjdlMGQyZTA5YTllNGM0ODY4OTQyYTA1ZTM4YzdiYzhmNThkYjhmYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4NSw2ICsxODUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29u
c3RhbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzTG9jYXRpb24o
KTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fzc2lnblJlc29sdmVOb2RlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTcxNSw3ICs3MTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2Us
IFN0YXRpYywgTGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1Ymxp
YyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6
IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVk
ID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyIH07CisgICAgICAgIGVudW0gVHlwZSA6
IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVk
ID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKICAgICAg
ICAgZW51bSBQdXRUeXBlIDogdWludDhfdCB7IFVua25vd24sIEtub3duRGlyZWN0IH07CiAKICAg
ICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5
cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczNCw2ICs3
MzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25z
dCB7IHJldHVybiBpc0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQog
ICAgICAgICBib29sIGlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0
YW5jZUNsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBi
b29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRk
ZW5CeUR1cGxpY2F0ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSAmIFByaXZhdGU7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NG
aWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgp
OyB9CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVy
cmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NDQsNyArNzQ2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWdu
OwotICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA2OworICAgICAgICB1bnNpZ25lZCBtX3R5cGUg
OiA3OwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAg
dW5zaWduZWQgbV9wdXRUeXBlIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxl
bWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwpAQCAtODE2LDkgKzgx
OCwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAg
ZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUgfTsKKyAgICBjbGFzcyBCYXNl
RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBE
b3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RU
eXBlKTsKKworICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudDsgfQorICAgICAgICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Jhc2U7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7Cisg
ICAgICAgIERvdFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5v
ZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RU
eXBlKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudDsgfQpAQCAtODI3LDEwICs4NTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7
IH0KICAgICAgICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CiAKICAgICBjbGFzcyBTcHJlYWRFeHBy
ZXNzaW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKQEAgLTk0Myw5ICs5NjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFz
cyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUg
OiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1l
bnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAg
IEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CkBAIC05NTMsOCArOTc0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0g
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUq
IG1fYXJnczsKICAgICB9OwogCkBAIC05OTEsNyArMTAxMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rp
b25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAg
ICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUq
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRv
SW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKQEAgLTEwMDAsNyArMTAxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNs
YXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxE
b3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CkBAIC0xNDYzLDI4ICsxNDgyLDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1f
cmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkRvdE5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CisgICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
KyAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgYm9v
bCBtX3JpZ2h0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlE
b3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVi
bGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgRG90VHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRv
cjsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjI4MSw3ICsy
Mjk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmlu
YWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNs
YXNzIFR5cGUgeyBOYW1lLCBDb21wdXRlZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBl
IHsgTmFtZSwgUHJpdmF0ZU5hbWUsIENvbXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVs
ZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Np
b25Ob2RlKiwgVHlwZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCmluZGV4IGEzOTcxOWViNzRhZWI5NjY2OTcwY2RmM2Q3ODZkNDBkMjkxZTAx
YmIuLmY3NDVjODY0NTNlOTdlZTRkNzg1YWJlODRkNTk3ZmYxNmY5M2Q3OWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgyNiw2ICs4MjYsOCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVZhcmlhYmxlRGVjbAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAg
ICAgZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsK
KworICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBw
cml2YXRlIG5hbWUgdG8gZGVjbGFyZSBhIHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNw
ZWNJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAo
ZGVjbGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVj
bGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAg
ICAgICAgICAgICAgICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3Ig
YSBMZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTEyODgsNiArMTI5MCw4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURlCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6
RGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9W
YXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKKyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0
dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWls
SWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMg
YSAiLCBkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAg
ICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAn
KScgaW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1h
dGNoKExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQg
fHwga2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5v
dCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlv
biIpOwpAQCAtMjk1Myw2ICsyOTU3LDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFp
bElmRmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJv
cGVydHkgbmFtZSIpOwogICAgICAgICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJS
QUNLRVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJU
KE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4g
dG9rZW4gPSBtX3Rva2VuOworICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVu
dDsKKyAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGlj
LCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAg
IGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0
aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShP
UEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRl
IG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNs
YXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGlj
YXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7Cisg
ICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwg
UHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3Jk
VG9rZW5GbGFnKQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk2OCw4
ICsyOTg1LDEwIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVy
dHksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRp
b25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6Ok1ldGhvZE1vZGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0
dGVyKTsKLSAgICAgICAgICAgIGlmIChpZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewog
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1l
cy5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1
Y3RvciciKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHBy
b3BlcnR5TmFtZXMuY29uc3RydWN0b3JQcml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2
YXRlIGNsYXNzIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAg
IGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVu
dGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOwpAQCAtMzAzMyw2ICszMDUyLDEwIEBA
IHBhcnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9m
ZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9z
aW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2
YXRlQ2xhc3NGaWVsZHMoKSkgeworICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJl
bnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0
ZSBuYW1lcy4KKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZh
dGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZh
dGUgbmFtZXMiKTsKKyAgICB9CiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNy
ZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2Fs
RW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsK
ICAgICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJ
bmZvKTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtMzA1Niw2ICszMDc5LDkgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQ
cm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERl
ZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlw
ZSkgeworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVk
S2V5d29yZDoKQEAgLTMwOTUsNiArMzEyMSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAg
ICAgICAgIGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBE
ZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNj
b3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVu
dCBkZWZpbmVGaWVsZCA9IGNvbnRleHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwg
aWRlbnQsIGluaXRpYWxpemVyLCB0eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1l
bnQoc291cmNlRWxlbWVudHMsIGRlZmluZUZpZWxkKTsKICAgICB9CkBAIC00Nzk1LDYgKzQ4MjQs
MjIgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlw
ZSosIFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KK2Jvb2wgUGFyc2VyPExleGVyVHlwZT46OmVuc3VyZVByaXZhdGVOYW1lVXNl
ZChjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNp
bmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgZm91bmQgPSBm
YWxzZTsKKyAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFByaXZhdGVOYW1lU2NvcGUoJmZv
dW5kKTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFj
dXJyZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICBjdXJyZW50LT51c2VQcml2
YXRlTmFtZSgqaWRlbnQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXIm
IGNvbnRleHQpCiB7CkBAIC00OTA5LDYgKzQ5NTQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJl
cwogCiAgICAgICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KGNv
bnRleHQpOwogICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBpZGVudGlmaWVy
cyBpbiBhbiBvcHRpb25hbCBjaGFpbiIpOwogICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5CUkFD
S0VUKSB8fCBtYXRjaChPUEVOUEFSRU4pIHx8IG1hdGNoKEJBQ0tRVU9URSkpCiAgICAgICAgICAg
ICAgICAgdHlwZSA9IG1fdG9rZW4ubV90eXBlOwogICAgICAgICAgICAgZWxzZSB7CkBAIC00OTk2
LDggKzUwNDIsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBt
X3BhcnNlclN0YXRlLm5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgICAg
ICBKU1RleHRQb3NpdGlvbiBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsK
ICAgICAgICAgICAgICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1
aWxkS2V5d29yZHMgfCBMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50Owor
ICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9IERvdFR5cGU6Ok5hbWU7CisgICAgICAgICAgICAg
ICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
aWRlbnQpOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fu
bm90IGFjY2VzcyBwcml2YXRlIG5hbWVzIGZyb20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKGN1cnJlbnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFs
Q29udGV4dFR5cGU6Okluc3RhbmNlRmllbGRFdmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFt
ZSgqaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIs
IGlkZW50LT5pbXBsKCksICInIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElm
RmFsc2UoZW5zdXJlUHJpdmF0ZU5hbWVVc2VkKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJp
dmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1f
dG9rZW4ubV90eXBlID0gSURFTlQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9w
dGlvbmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2Ug
PSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1f
ZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0
aW9uKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vzcyhz
dGFydExvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNz
aW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShiYXNlSXNTdXBlciAmJiBjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVu
Y3Rpb25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUx
OTIsNiArNTI1MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0
cmljdChjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQg
cHJvcGVydHkgJyIsIG1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4g
c3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0Lmlz
UHJpdmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1f
cGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tl
blN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNTI2OCw3ICs1MzI4LDExIEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBl
Y3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoK
ICAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwg
IiciKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVO
QU1FOgorICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRv
a2VuKCkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURF
TlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tl
bigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggZjFkNWQ5
Mjg5NDQwMGVhNmI4MWUxZGJkOTcyNzYwYTE2ODEyNGU4MS4uNDI5NzMzODAxNjg0YzNjYWEzN2Qx
Nzk5N2FkYWVlYTI5Y2ZlNGFkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZh
bHNlKQogICAgICAgICAsIG1faXNFdmFsQ29udGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hhc05v
blNpbXBsZVBhcmFtZXRlckxpc3QoZmFsc2UpCisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1lU2Nv
cGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0NsYXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9l
dmFsQ29udGV4dFR5cGUoRXZhbENvbnRleHRUeXBlOjpOb25lKQogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpA
QCAtMjkwLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnko
KSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5
bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9v
bCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0
aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNQcml2YXRlTmFtZVNjb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBj
b25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA5LDggKzMxMSwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQog
CisgICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pc1By
aXZhdGVOYW1lU2NvcGUgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3Bl
KCkKICAgICB7CisgICAgICAgIHNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBtX2lz
Q2xhc3NTY29wZSA9IHRydWU7CiAgICAgfQogCkBAIC00NzUsNyArNDgzLDQ0IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQu
Z2V0KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVz
Lmhhc1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xhcmVk
UHJpdmF0ZU5hbWVzKFNjb3BlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlh
Ymxlcy5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMp
OworICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNT
aXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJp
YWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUu
aXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRp
b25zKTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsK
KyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4
aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQg
PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9s
ZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICgh
YWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25S
ZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFy
ZWRQYXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTgzOSw2ICs4ODQsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNBcmd1bWVudHM7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAg
Ym9vbCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5h
bWVTY29wZTsKICAgICBib29sIG1faXNDbGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlwZSBt
X2V2YWxDb250ZXh0VHlwZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAgLTkx
MCw3ICs5NTYsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBh
cnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0Nv
bnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxs
cHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3Im
LCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RG
OjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZl
Y3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVm
b3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24o
KTsgfQpAQCAtMTE4Myw2ICsxMjI5LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29w
ZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBTY29wZVJlZiBjdXJyZW50UHJp
dmF0ZU5hbWVTY29wZShib29sICpmb3VuZCA9IDApCisgICAgeworICAgICAgICB1bnNpZ25lZCBp
ID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0
YWNrLnNpemUoKSk7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2
YXRlTmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisgICAgICAgIGlmIChmb3VuZCkKKyAg
ICAgICAgICAgICpmb3VuZCA9IG1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKTsK
KyAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAg
IGJvb2wgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3Njb3BlU3RhY2suaXNFbXB0eSgpKTsKKyAgICAgICAgU2NvcGVSZWYg
Y3VycmVudCA9IGN1cnJlbnRQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2lnbmVkIGkg
PSBjdXJyZW50LmluZGV4KCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNr
W2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlm
ICghaSkKKyAgICAgICAgICAgIHJldHVybiAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVjbGFyZWRQ
cml2YXRlTmFtZXMoKTsKKworICAgICAgICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFByaXZhdGVO
YW1lcyhtX3Njb3BlU3RhY2tbaV0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAg
ICBTY29wZVJlZiBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgp
CiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CkBA
IC0xNDYyLDYgKzE1MzQsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rv
a2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
bWF0Y2hBbmRVcGRhdGUoSlNUb2tlblR5cGUgZXhwZWN0ZWQsIGNvbnN0IEpTVG9rZW4mIHRva2Vu
KQorICAgIHsKKyAgICAgICAgaWYgKG1hdGNoKGV4cGVjdGVkKSkgeworICAgICAgICAgICAgbV90
b2tlbiA9IHRva2VuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBt
YXRjaENvbnRleHR1YWxLZXl3b3JkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAg
ewpAQCAtMTcxMiw2ICsxNzk0LDggQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChU
cmVlQnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBl
bnN1cmVQcml2YXRlTmFtZVVzZWQoY29uc3QgSWRlbnRpZmllciopOworCiAgICAgQUxXQVlTX0lO
TElORSBpbnQgaXNCaW5hcnlPcGVyYXRvcihKU1Rva2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1
dG9tYXRpY1NlbWljb2xvbigpOwogICAgIApAQCAtMTgwNiw2ICsxODkwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgRnVuY3Rpb25QYXJzZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9u
UGFyc2VQaGFzZTo6Qm9keSB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRp
ZmllciB7IG51bGxwdHIgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9u
TmFtZSB7IG51bGxwdHIgfTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdFByaXZhdGVO
YW1lIHsgbnVsbHB0ciB9OwogICAgICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAg
ICAgIGJvb2wgaXNQYXJzaW5nQ2xhc3NGaWVsZEluaXRpYWxpemVyIHsgZmFsc2UgfTsKICAgICB9
OwpAQCAtMTk1Niw3ICsyMDQxLDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBh
cnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
IGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmll
ciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQg
cGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJU
RFosIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMp
CiB7CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTE5NzEsNiArMjA1
NiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3Rh
cnRDb2x1bW4oKSA+IE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAK
KyAgICBpZiAoaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpICYmIHZhcmlhYmxlc1VuZGVyVERaICYm
IHZhcmlhYmxlc1VuZGVyVERaLT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICAgICAgY3VycmVu
dFNjb3BlKCktPnNldElzUHJpdmF0ZU5hbWVTY29wZSgpOworICAgICAgICB2YXJpYWJsZXNVbmRl
clREWi0+Y29weVByaXZhdGVOYW1lcyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygp
KTsKKyAgICB9CisKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1l
LCBwYXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVt
YmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwpAQCAtMjA1NSw2ICsyMTQ1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJp
dmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1
Z2dlclBhcnNlRGF0YSogZGVidWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBjb25z
dCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVsbHB0
ciwKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlKQogewpAQCAtMjA2
Nyw3ICsyMTU4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBw
YXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBh
cnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxG
dW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2
YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFt
ZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6
RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmll
bGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4o
ZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2lu
Z0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2
YXJpYWJsZXNVbmRlclREWiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBp
ZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAtMjA4
MCw3ICsyMTcxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIH0g
ZWxzZSB7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZEZvclRvcExldmVsRnVuY3Rpb24gPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4
ZWN1dGFibGVzJ3Mgc3BlY2lhbCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJp
dCBzdHJpbmciKTsKICAgICAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3Vy
Y2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVy
QmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2
ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUs
IGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICBy
ZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwg
aXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5n
Q29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsK
KyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBw
YXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFs
IDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJU
RFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFy
c2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBkZTBlYmVhZjg1ZmQ3MTIzNzE3Zjg3
NzExMjdmNzE5MjNmZmU2NzQ4Li43YjNjMWVjM2I3ZjZhNmIxMWJmYzQ1ZjRiYzkxZDA0ODEyZjRj
ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAg
LTExNCw2ICsxMTQsNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBET1VCTEUsCiAgICAgQklH
SU5ULAogICAgIElERU5ULAorICAgIFBSSVZBVEVOQU1FLAogICAgIFNUUklORywKICAgICBURU1Q
TEFURSwKICAgICBSRUdFWFAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCmluZGV4IGY5YmIwN2I0ZGQ0MDg5YzdiMWUzYTBmM2Y1OTU0MWIzMTdhNTJkN2Yu
LmU5YjZkN2U5NDY3NDRlMWEwOGRjMWNjMjhhNDZiNzEzNzczYzk4NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIs
IERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBO
dWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAg
ICBGdW5jdGlvbkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0
RXhwciwgRG90RXhwciwgQ2FsbEV4cHIsCi0gICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RF
eHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sCisgICAgICAgIE5ld0V4
cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hh
aW4sIFByaXZhdGVEb3RFeHByLAogICAgICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRF
eHByLCBUeXBlb2ZFeHByLAogICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByLCBC
aW5kaW5nRGVzdHJ1Y3R1cmluZywgUmVzdFBhcmFtZXRlciwKICAgICAgICAgQXJyYXlEZXN0cnVj
dHVyaW5nLCBPYmplY3REZXN0cnVjdHVyaW5nLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKQEAgLTE4
MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4g
TnVsbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiB0eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lID8gUHJpdmF0ZURv
dEV4cHIgOiBEb3RFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50
aWZpZXImIGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3lu
dGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC00MDMs
NyArNDAzLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMb2NhdGlvbihFeHByZXNzaW9uVHlw
ZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlw
ZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0gQnJhY2tldEV4cHI7CisgICAgICAgIHJldHVybiB0eXBl
ID09IFJlc29sdmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IFByaXZhdGVEb3RF
eHByIHx8IHR5cGUgPT0gQnJhY2tldEV4cHI7CisgICAgfQorCisgICAgYm9vbCBpc1ByaXZhdGVM
b2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUg
PT0gUHJpdmF0ZURvdEV4cHI7CiAgICAgfQogCiAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlv
bihFeHByZXNzaW9uVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggOGU2OTE1MWM3YjZjYjMxMTFiMGZl
NzdjZTg5NzMwNzQwNjJmNWY1YS4uMWY1NzA4OGEzNGM2NjNjYTcwMmY3N2Q0Nzc0MDY5NmUyNjc2
ODhlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwCkBAIC0yOSw2ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
VmFyaWFibGVFbnZpcm9ubWVudCYgVmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQoreworICAgIG1fbWFwID0gb3RoZXIubV9tYXA7
CisgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVy
ZWQ7CisgICAgbV9yYXJlRGF0YS5yZXNldCgpOworICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKQor
ICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6
OlJhcmVEYXRhPigqb3RoZXIubV9yYXJlRGF0YSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiB2
b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBhdXRv
IGZpbmRSZXN1bHQgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOwpAQCAtODAsNiArOTAsNyBAQCB2
b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6OnN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIp
CiB7CiAgICAgbV9tYXAuc3dhcChvdGhlci5tX21hcCk7CiAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5zd2Fw
KG90aGVyLm1fcmFyZURhdGEpOwogfQogCiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtW
YXJpYWJsZUFzSW1wb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRp
ZmllcikKQEAgLTEwMCw3ICsxMTEsNyBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29t
cGFjdFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIDog
bV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChlbnYuaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSkKIHsKICAg
ICBWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgVmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5PiwgMzI+IHNvcnRlZEVudHJpZXM7Ci0gICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGVudi5zaXplKCkpOworICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShlbnYubWFwU2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnYpCiAg
ICAgICAgIHNvcnRlZEVudHJpZXMuYXBwZW5kKHsgcGFpci5rZXkuZ2V0KCksIHBhaXIudmFsdWUg
fSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmly
b25tZW50LmgKaW5kZXggNTMyZDE0NmVmZDFmY2FlNTMyNjllNzVkZjZmNWZkYmVhMTk5MmM1Mi4u
MGMxZDBhYzNlYmFkY2E4ZWMzOGE2Yzg4ZWE2MzEzOWI0OTBhMzM0MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTI3LDYg
KzI3LDggQEAKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFu
Z2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXND
YXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMg
fD0gSXNDb25zdDsgfQpAQCAtNTMsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRh
dGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRl
TmFtZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAm
PSB+SXNWYXI7IH0KIApAQCAtNzQsNyArNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0ltcG9y
dGVkTmFtZXNwYWNlID0gMSA8PCA2LAogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAg
ICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKLSAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdD
YW5kaWRhdGUgPSAxIDw8IDkKKyAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUg
PSAxIDw8IDksCisgICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAogICAgIH07CiAgICAg
dWludDE2X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTgzLDE1ICs4OCw1NSBAQCBzdHJ1Y3QgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5PgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
ID0gZmFsc2U7CiB9OwogCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CitwdWJsaWM6CisgICAg
UHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsg
fQorCisgICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0
cyAmIElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQorCisgICAgdWludDE2
X3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFByaXZhdGVOYW1lRW50cnkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fYml0cyA9PSBvdGhlci5tX2JpdHM7CisgICAgfQorCisgICAgZW51bSBUcmFpdHMgOiB1
aW50MTZfdCB7CisgICAgICAgIElzVXNlZCA9IDEgPDwgMCwKKyAgICAgICAgSXNEZWNsYXJlZCA9
IDEgPDwgMSwKKyAgICB9OworCitwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsK
K307CisKK3N0cnVjdCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJp
dmF0ZU5hbWVFbnRyeT4geworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKK307CisKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogcHJpdmF0ZToKICAg
ICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4g
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVO
YW1lczsKIHB1YmxpYzoKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgPSBkZWZhdWx0OwotICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKSA9IGRlZmF1
bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jikg
PSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9w
ZXJhdG9yPShWYXJpYWJsZUVudmlyb25tZW50JiYpID0gZGVmYXVsdDsKKyAgICBWYXJpYWJsZUVu
dmlyb25tZW50KCkgeyB9CisgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25t
ZW50JiYgb3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisgICAg
ICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVk
KQorICAgICAgICAsIG1fcmFyZURhdGEoV1RGTW92ZShvdGhlci5tX3JhcmVEYXRhKSkKKyAgICB7
CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCYgb3RoZXIpCisgICAgICAgIDogbV9tYXAob3RoZXIubV9tYXApCisgICAgICAgICwgbV9pc0V2
ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAs
IG1fcmFyZURhdGEob3RoZXIubV9yYXJlRGF0YSA/IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVu
dmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpIDogbnVsbHB0cikKKyAgICB7
CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBvdGhlcik7CiAKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3Ig
YmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6
Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CkBAIC05OSw3ICsxNDQsOCBA
QCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJl
c3VsdCBhZGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyBy
ZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsg
fQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5z
aXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRp
ZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgcmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQogICAgIEFM
V0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KQEAg
LTExNiwxMSArMTYyLDEwNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0V2ZXJ5dGhpbmdDYXB0dXJl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9tYXAuc2l6ZSgpOyB9CiAKKyAgICB1c2luZyBQcml2
YXRlTmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9y
PjsKKworICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFt
ZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVu
dGlmaWVyLmltcGwoKSk7IH0KKworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFt
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7
CisgICAgICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOworICAgICAgICBhdXRvIGVudHJ5ID0gVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUo
KTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1
cmVkKCk7CisgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworICAg
IH0KKyAgICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2
YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgbWV0YS5zZXRJc1VzZWQoKTsKKyAg
ICAgICAgaWYgKG1ldGEuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgZmluZChpZGVudGlmaWVy
KS0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJp
dmF0ZU5hbWVzUmFuZ2UgcHJpdmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFVz
ZSBvZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQg
ZmFpbHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQocHJpdmF0ZU5hbWVz
U2l6ZSgpID4gMCk7CisgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQo
KSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBwcml2YXRlTmFtZXNTaXpl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuY29udGFpbnMoaWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBjb3B5UHJpdmF0ZU5hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAoIW90aGVyLm1fcmFyZURhdGEpCisgICAgICAgICAgICBvdGhl
ci5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVE
YXRhPigpOworICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAg
ICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIShlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiBlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpKQor
ICAgICAgICAgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQo
ZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMoVmFy
aWFibGVFbnZpcm9ubWVudCYgb3V0ZXIpIGNvbnN0IHsKKyAgICAgICAgLy8gVXNlZCBieSB0aGUg
UGFyc2VyIHRvIHRyYW5zZmVyIHJlY29yZGVkIHVzZXMgb2YgUHJpdmF0ZU5hbWVzIGZyb20gYW4K
KyAgICAgICAgLy8gaW5uZXIgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBpbnRvIGFuIG91dGVyIG9u
ZSwgaW4gY2FzZSBhIFBORSBpcyB1c2VkCisgICAgICAgIC8vIGVhcmxpZXIgaW4gdGhlIHNvdXJj
ZSBjb2RlIHRoYW4gaXQgaXMgZGVmaW5lZC4KKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUo
KSA+IDApIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52YWx1
ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgICAgICAgICAgICAgIG91dGVyLmdldE9yQWRkUHJpdmF0
ZU5hbWUoZW50cnkua2V5LmdldCgpKS5zZXRJc1VzZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHN0cnVjdCBSYXJlRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKKworICAgICAgICBSYXJlRGF0YSgpIHsgfQorICAgICAgICBS
YXJlRGF0YShSYXJlRGF0YSYmIG90aGVyKQorICAgICAgICAgICAgOiBtX3ByaXZhdGVOYW1lcyhX
VEZNb3ZlKG90aGVyLm1fcHJpdmF0ZU5hbWVzKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAg
ICAgIFJhcmVEYXRhKGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBSYXJlRGF0
YSYgb3BlcmF0b3I9KGNvbnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBQcml2YXRl
TmFtZXMgbV9wcml2YXRlTmFtZXM7CisgICAgfTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDsKIAogICAgIE1hcCBtX21hcDsKICAgICBib29s
IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgeyBmYWxzZSB9OworCisgICAgUHJpdmF0ZU5hbWVFbnRy
eSYgZ2V0T3JBZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1h
a2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0
dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpbXBsLCBQcml2YXRlTmFtZUVudHJ5
KDApKS5pdGVyYXRvci0+dmFsdWU7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ29tcGFj
dFZhcmlhYmxlRW52aXJvbm1lbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FjaGVkVHlwZXMuY3BwCmluZGV4IGJmMzc5YWQ5OGJjMzc3OWY1YTkwYWMyZWE4ZjRlOWJkY2Qz
Y2E5NTYuLmMzYWUzYzZiNWM1MmFjZTRmNjBmM2U1ZDY5MzVmZDIwNTkwZTZkMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg1Nyw2ICs4
NTcsMTIgQEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmNvZGUoZW5jb2Rl
ciwgeyAqc291cmNlIH0pOwogICAgIH0KKworICAgIFNvdXJjZVR5cGU8VD4qIGRlY29kZUFzUHRy
KERlY29kZXImIGRlY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
dGhpcy0+aXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPnRlbXBsYXRlIGJ1ZmZlcjxU
PigpLT5kZWNvZGUoZGVjb2Rlcik7CisgICAgfQogfTsKIAogY2xhc3MgQ2FjaGVkU2ltcGxlSnVt
cFRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gewpA
QCAtMTAwNCwyMyArMTAxMCw0NSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFz
c0ZpZWxkSW5pdGlhbGl6ZXIgOiAxOwogfTsKIAorY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9u
bWVudFJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50OjpS
YXJlRGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAg
ICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1l
cyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFibGVF
bnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9w
cml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5p
cXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxV
bmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwg
SGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhh
c2hUcmFpdHM+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZp
cm9ubWVudCA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudD4gewogcHVi
bGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGVudikKICAgICB7CiAgICAgICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBl
bnYubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICAgICAgbV9tYXAuZW5jb2RlKGVuY29kZXIs
IGVudi5tX21hcCk7CisgICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGVudi5tX3Jh
cmVEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYpIGNvbnN0CiAgICAgewogICAgICAgICBlbnYubV9p
c0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1f
bWFwLmRlY29kZShkZWNvZGVyLCBlbnYubV9tYXApOworICAgICAgICBpZiAoIW1fcmFyZURhdGEu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBlbnYubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1
ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPmRlY29kZShkZWNvZGVyLCAqZW52Lm1fcmFyZURhdGEpOworICAgICAgICB9CiAgICAgfQog
CiBwcml2YXRlOgogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICBDYWNoZWRI
YXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmlu
Z0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IG1f
bWFwOworICAgIENhY2hlZFB0cjxDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE+IG1f
cmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCA6
IHB1YmxpYyBDYWNoZWRPYmplY3Q8Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKQEAgLTEx
NDgsNiArMTE3NiwyMiBAQCBwcml2YXRlOgogICAgIGludHB0cl90IG1fYml0czsKIH07CiAKK2Ns
YXNzIENhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJv
bFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEm
IHJhcmVEYXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIs
IHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEp
IGNvbnN0CisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFy
ZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNo
U2V0PENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBI
YXNoPiBtX3ByaXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxlIDogcHVi
bGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZT4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkKQEAgLTEx
NTgsNiArMTIwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgPSBz
eW1ib2xUYWJsZS5tX25lc3RlZExleGljYWxTY29wZTsKICAgICAgICAgbV9zY29wZVR5cGUgPSBz
eW1ib2xUYWJsZS5tX3Njb3BlVHlwZTsKICAgICAgICAgbV9hcmd1bWVudHMuZW5jb2RlKGVuY29k
ZXIsIHN5bWJvbFRhYmxlLm1fYXJndW1lbnRzLmdldCgpKTsKKyAgICAgICAgbV9yYXJlRGF0YS5l
bmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCiAg
ICAgU3ltYm9sVGFibGUqIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTE3MSw2
ICsxMjE2LDExIEBAIHB1YmxpYzoKICAgICAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHNjb3Bl
ZEFyZ3VtZW50c1RhYmxlID0gbV9hcmd1bWVudHMuZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBp
ZiAoc2NvcGVkQXJndW1lbnRzVGFibGUpCiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9hcmd1
bWVudHMuc2V0KGRlY29kZXIudm0oKSwgc3ltYm9sVGFibGUsIHNjb3BlZEFyZ3VtZW50c1RhYmxl
KTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgc3lt
Ym9sVGFibGUtPm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGU6OlN5bWJv
bFRhYmxlUmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2Rl
ciwgKnN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVy
biBzeW1ib2xUYWJsZTsKICAgICB9CiAKQEAgLTExODEsNiArMTIzMSw3IEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOwogICAgIHVuc2lnbmVkIG1fc2Nv
cGVUeXBlIDogMzsKICAgICBDYWNoZWRQdHI8Q2FjaGVkU2NvcGVkQXJndW1lbnRzVGFibGU+IG1f
YXJndW1lbnRzOworICAgIENhY2hlZFB0cjxDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhPiBtX3Jh
cmVEYXRhOwogfTsKIAogY2xhc3MgQ2FjaGVkSlNWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDllMTcyYjZhZWE3NGIwNjJkZTlmZmVmOGRh
NTZkNDkzNGY5NGQ1NTYuLmU3MmJkMzVmMTViN2YzMTJhYTRhMWJlMmMxMjJkZDFjYTcwM2MyMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNzcs
NyArNzcsNyBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxv
Y2tJbXBsKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIHR5cGVkZWYgdHlwZW5hbWUg
Q2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAg
ICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJs
ZS0+aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3RO
b2RlPiByb290Tm9kZSA9IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgSWRl
bnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCBudWxs
cHRyLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOworICAgICAgICB2bSwgc291cmNlLCBJZGVu
dGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNj
cmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBT
dXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHZhcmlh
Ymxlc1VuZGVyVERaLCBudWxscHRyLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwogICAgIGlm
ICghcm9vdE5vZGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggNjJjMGQ1
OTU3M2E2YTYzOTkwOTM5ZjFjZWY5NGQ5MTlkN2Q3M2M2ZS4uN2VlNzEzYzljNGEyNTkyZmYzMzBm
NjhmNWE2NjQ2ZWQzZTgwOWFjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNkZWZpbmUgSU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZChJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJJ
VkFURV9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGluTmFtZXMtPm5hbWUj
I1ByaXZhdGVOYW1lKCkpCiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5hbWUpICwgbmFtZSMj
U3ltYm9sKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZpbmUgSU5JVElBTEla
RV9QUklWQVRFX0ZJRUxEX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmllbGQoSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1v
bklkZW50aWZpZXJzKFZNJiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQ1LDYgKzQ2
LDcgQEAgQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAg
ICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9Q
Uk9QRVJUWV9OQU1FKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dF
TExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19DT01NT05fSURFTlRJ
RklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAppbmRleCBkMTY0YmE0YmVmOGI0ZWVmZjkzMTczN2IzOTUzZjM0ZmUxMjMyYTI4Li45
ZGZhNzU5ZDgxNDk1NTFiNWEwNjQ1YTA1ZTYwZmYyYThjY2RkZTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIwNSw2ICsy
MDUsOSBAQAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikKIAorI2RlZmlu
ZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChtYWNybykgXAorICAg
IG1hY3JvKGNvbnN0cnVjdG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFD
SF9LRVlXT1JEKG1hY3JvKSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBtYWNybyhicmVhaykg
XApAQCAtMzE5LDYgKzMyMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJ
RVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBKU0Nf
SURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCiAKKyNk
ZWZpbmUgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTChuYW1lKSBj
b25zdCBJZGVudGlmaWVyIG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAgSlNDX0NPTU1PTl9J
REVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX0ZJRUxEX0dMT0JBTCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVf
RklFTERfR0xPQkFMCisKICAgICAgICAgLy8gQ2FsbGVycyBvZiB0aGlzIG1ldGhvZCBzaG91bGQg
bWFrZSBzdXJlIHRoYXQgaWRlbnRpZmllcnMgZ2l2ZW4gdG8gdGhpcyBtZXRob2QgCiAgICAgICAg
IC8vIHN1cnZpdmUgdGhlIGxpZmV0aW1lIG9mIENvbW1vbklkZW50aWZpZXJzIGFuZCByZWxhdGVk
IFZNLgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEV4dGVybmFsTmFtZShj
b25zdCBJZGVudGlmaWVyJiBwdWJsaWNOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBwcml2YXRlTmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCAzOGYwYzkzMmYxZWJhM2Q4ZGRiMDUzMWY2YTdkNTQ1Y2Q0MmZiYTFhLi40MDQw
YzFiZDM0MzA2ODMyZDNiMjQ5NjU1ZjdlYWMwOTk3ZWYwNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEzMDQsNiArMTMw
NCw3MiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCiAg
ICAgUkVUVVJOX1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
c2xvdCkpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3Qp
Cit7CisgICAgQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRCeVZh
bERpcmVjdD4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFz
ZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gR0VUX0MoYnl0ZWNvZGUubV9w
cm9wZXJ0eSkuanNWYWx1ZSgpOworCisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkg
JiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIFN0cnVjdHVyZSYgc3RydWN0dXJl
ID0gKmJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgaWYgKEpTQ2Vs
bDo6Y2FuVXNlRmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxBdG9tU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9tU3RyaW5nID0gYXNTdHJpbmcoc3Vic2Ny
aXB0KS0+dG9FeGlzdGluZ0F0b21TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIENI
RUNLX0VYQ0VQVElPTigpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nQXRvbVN0cmluZykgewor
ICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+
ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbVN0cmluZy5nZXQo
KSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChyZXN1bHQpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigp
KSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9ICZtZXRhZGF0YS5tX2FycmF5UHJvZmlsZTsKKwor
ICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAgUkVUVVJO
X1BST0ZJTEVEKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGdsb2JhbE9iamVjdCwgaSkp
OworICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOworICAgICAgICB9
IGVsc2UgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmNh
bkdldEluZGV4UXVpY2tseShpKSkKKyAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQob2Jq
ZWN0LT5nZXRJbmRleFF1aWNrbHkoaSkpOworCisgICAgICAgICAgICBib29sIHNraXBNYXJraW5n
T3V0T2ZCb3VuZHMgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG9iamVjdC0+aW5kZXhpbmdU
eXBlKCkgPT0gQXJyYXlXaXRoQ29udGlndW91cyAmJiBpIDwgb2JqZWN0LT5idXR0ZXJmbHkoKS0+
cHVibGljTGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogZXhwYW5kIHRoaXMg
dG8gQXJyYXlTdG9yYWdlLCBJbnQzMiwgYW5kIG1heWJlIERvdWJsZToKKyAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTQwCisgICAg
ICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gb2JqZWN0LT5nbG9iYWxPYmplY3Qodm0p
OworICAgICAgICAgICAgICAgIHNraXBNYXJraW5nT3V0T2ZCb3VuZHMgPSBnbG9iYWxPYmplY3Qt
PmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShvYmplY3QtPnN0cnVjdHVyZSh2bSkpICYmIGdsb2Jh
bE9iamVjdC0+YXJyYXlQcm90b3R5cGVDaGFpbklzU2FuZSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoIXNraXBNYXJraW5nT3V0T2ZCb3VuZHMgJiYgIUNvbW1vblNsb3dQYXRo
czo6Y2FuQWNjZXNzQXJndW1lbnRJbmRleFF1aWNrbHkoKm9iamVjdCwgaSkpCisgICAgICAgICAg
ICAgICAgYXJyYXlQcm9maWxlLT5zZXRPdXRPZkJvdW5kcygpOworICAgICAgICB9CisKKyAgICAg
ICAgUkVUVVJOX1BST0ZJTEVEKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIGJhc2VWYWx1
ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2Jh
bE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9w
ZXJ0eSk7CisKKyAgICBib29sIGZvdW5kID0gKGJhc2VWYWx1ZS5hc0NlbGwoKS0+aXNQcm94eSgp
ICYmIHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgPyBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KGFzT2JqZWN0KGJhc2VWYWx1ZSksIGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpCisgICAgICAgIDogYmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWZv
dW5kICYmIHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgVEhST1coY3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgUkVUVVJOX1BST0ZJTEVE
KGZvdW5kID8gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5KSA6IGpzVW5kZWZp
bmVkKCkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhp
cykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAppbmRleCBhODI0OGQ0NTI0YTNjNWRmMDlkYWY2NDk3NDY2Yjk3MjUw
MzMyNTZmLi43YzFkODIzYWE2YTExMWNhMzQ3YWI0MWEyYTA5YTFkNzE4Mjg4NWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjcy
LDYgKzI3Miw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2FzeW5j
X2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsK
K1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3QpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9wZXJ0eSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4
IGFmOThkNGQyN2I0MWQxNDMzNmEwMjE4ZTgwYjc2Y2U0ZDhiNDBiNzIuLmQ4MWU1ODY2NDFiZDZm
YzJiYWNkMGZiNDE3OTkxY2JmMTVmNTliMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMjksNiArMzI5LDE2IEBAIEpT
T2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAg
IHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlk
UHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJl
dHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNj
ZXNzIGludmFsaWQgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVO
b3RoaW5nKTsKK30KKworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IHJlZGVmaW5lIGV4aXN0aW5nIHBy
aXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7Cit9CisK
IEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5o
CmluZGV4IDM3NmYyYWY0MGQ4NDY0NzI2MzQ0YzczNzMyMzJlMWNkNWE5NjhkZjQuLmFjODFkMmJi
YTkyODk4ZmRiNjQ0MWM3YmQyMmMwMTM2MzRhZjFmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTUzLDYgKzUzLDggQEAgSlNP
YmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZh
bHVlTm90RnVuY3Rpb24oSlNHbG8KIEpTT2JqZWN0KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJv
cihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlv
bkVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVjdCogY3JlYXRlRXJyb3JG
b3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYp
OworSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0
Kik7CitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9i
amVjdCopOwogU3RyaW5nIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAxOWE0OGZiOTMwYzVi
ZjBmMzU1MWUzZjM0NmQ2NGM4NzU2ZTQ1NjMxLi5jNmQ3ZDg2ZGI5NmM1MzU0MDA1NTEyYzFjN2I2
OTNmZGM5ZTgyZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC0zMDksNiArMzA5LDEyIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKHRhcmdldC0+aGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgpKSkpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
cmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVO
dWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMTE5Myw2ICsxMTk5LDExIEBA
IGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBm
ZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9u
OjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAs
IFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpKTsKICAgICAgICAgfSk7CiAKKyAg
ICAvLyBQcml2YXRlU3ltYm9scyAvIFByaXZhdGVOYW1lcworICAgIG1fbGlua1RpbWVDb25zdGFu
dHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVT
eW1ib2wpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsK
KyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVT
eW1ib2wpKTsKKyAgICAgICAgfSk7CisKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYmIEVOQUJM
RShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQogICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWlu
ZyBBUEkKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5r
VGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRM
YXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCBiM2MyNzIwMjI4MDZiODExNDM1N2Q4
MWRlOWYzYjVmYzEwMzU0ZDlhLi45Mjc0MDY0ZWY1Yzk3ZTU4ZGQyMDU2YmY1ZmY2ZjdmNzBmZmYz
OTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzM5
LDYgKzMzOSwxMCBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJU
RFooSlNTY29wZSogc2NvcGUsIFZhcmlhYmxlRW52aXJvbm1lbgogICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8g
ZW5kID0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpLCBpdGVyID0gc3ltYm9sVGFibGUtPmJlZ2lu
KGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0
ZXItPmtleSk7CisgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsK
KyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygp
KQorICAgICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAg
ICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCmluZGV4IDU0MjBkMmE3NDk2NDA1MjgxODRmZmQxOGE3NDk1MWQ4MmI3ZjYzMjMuLjg2
NWM4Njg3ZmJlODI2NDAyNWRiMGJjMWQ1YjdjMGFjZjY4NGE4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTA1LDYgKzUwNSw3IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihC
b29sLCB1c2VQdWJsaWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBh
cnNlciB3aWxsIHVuZGVyc3RhbmQgcHVibGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIp
IFwKICAgICB2KEJvb2wsIHVzZUxvZ2ljYWxBc3NpZ25tZW50T3BlcmF0b3JzLCBmYWxzZSwgTm9y
bWFsLCAiRW5hYmxlIHN1cHBvcnQgZm9yIFw/XD89LCB8fD0sIGFuZCAmJj0gbG9naWNhbCBhc3Np
Z25tZW50IG9wZXJhdG9ycy4iKSBcCiAgICAgdihCb29sLCB1c2VSYW5kb21pemluZ0V4ZWN1dGFi
bGVJc2xhbmRBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFsLCAiRm9yIHRoZSBhcm02NCBFeGVjdXRh
YmxlQWxsb2NhdG9yLCBpZiB0cnVlLCBzZWxlY3Qgd2hpY2ggcmVnaW9uIHRvIHVzZSByYW5kb21s
eS4gVGhpcyBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgdGhhdCBqdW1wIGlzbGFuZHMgd29yay4iKSBc
CisgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0
cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lk
ZSBjbGFzc2VzLiIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlv
biwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRl
eCBiYzQ5ZGM5ODJjNzMyODJiZWRlYjJiMWRlZmM3NjdhODVhYjM1YWY5Li43NzkwY2Y1NzNkMjZm
OTUyZjQ5OTlhNTNmM2MyNzVkNjc1MWEzY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODMsNiArMTgzLDExIEBAIFN5bWJvbFRhYmxl
KiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQogICAgICAgICAgICAgZm9yICg7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRh
LT5tX3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGl0ZXItPmtleSwgaXRlci0+dmFsdWUpOwogICAgICAg
ICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcykKKyAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1
cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgK
aW5kZXggZTIzNGQzMTRjNjllZDJkMTExMzIzOTE0YmEyN2QzZDkzMTU1MjY3Ni4uMzFmODFmYWUw
MmZiMjAxZDMyMThiYjBmYjRjNTJkMjIxZjRjZDY0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2F0
Y2hwb2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3ltYm9sSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDUwLDYgKzQ1MCw4
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50
cnkqPiBMb2NhbFRvRW50cnlWZWM7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlTmFtZVNldDsKKyAgICB0eXBl
ZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRlTmFtZVNldDo6aXRlcmF0b3I+
IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxU
eXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9y
KFZNJiB2bSkKQEAgLTU5NCw3ICs1OTYsMjUgQEAgcHVibGljOgogICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGFkZChsb2NrZXIsIGtleSwgc3RkOjpm
b3J3YXJkPEVudHJ5PihlbnRyeSkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0
ZU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSAmJiBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lSXRlcmF0b3JS
YW5nZSBwcml2YXRlTmFtZXMoKQorICAgIHsKKyAgICAgICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRv
clJhbmdlIG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2ZW50IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVj
a1ZhbGlkaXR5KCkuCisgICAgICAgIEFTU0VSVChoYXNQcml2YXRlTmFtZXMoKSk7CisgICAgICAg
IHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdp
bigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgfQorCisgICAgdm9p
ZCBhZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCoga2V5KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgpKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRh
KQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJh
cmVEYXRhPigpOworCisgICAgICAgIEFTU0VSVCghbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
Y29udGFpbnMoa2V5KSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChr
ZXkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5PgogICAgIHZvaWQgc2V0
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXksIEVudHJ5
JiYgZW50cnkpCiAgICAgewpAQCAtNzI5LDE4ICs3NDksMjEgQEAgcHJpdmF0ZToKICAgICBTY29w
ZU9mZnNldCBtX21heFNjb3BlT2Zmc2V0OwogcHVibGljOgogICAgIG11dGFibGUgQ29uY3VycmVu
dEpTTG9jayBtX2xvY2s7Ci1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2
YWwgOiAxOwotICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1
bmN0aW9uIExleGljYWxTY29wZS4KLSAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNj
b3BlVHlwZQotICAgIAorCiAgICAgc3RydWN0IFN5bWJvbFRhYmxlUmFyZURhdGEgewogICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIFVuaXF1ZUlETWFwIG1f
dW5pcXVlSURNYXA7CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVNYXAgbV9vZmZzZXRUb1Zhcmlh
YmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAg
ICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CisgICAgICAgIFByaXZh
dGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOwogICAgIH07CisKK3ByaXZhdGU6CisgICAgdW5zaWdu
ZWQgbV91c2VzTm9uU3RyaWN0RXZhbCA6IDE7CisgICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2Fs
U2NvcGUgOiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4aWNhbFNjb3BlLgorICAgIHVuc2lnbmVkIG1f
c2NvcGVUeXBlIDogMzsgLy8gU2NvcGVUeXBlCisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3ltYm9s
VGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIAogICAgIFdyaXRlQmFycmllcjxTY29wZWRBcmd1
bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRmMDI1YzM0NDA4N2YzOWIzMDczZjAxYzU1N2UxMTJl
MDUxODUwZWQuLmFhNjg3YjQ2YTM2YjdiNmJhMzkwM2Q0OWUxMzNiZGQ5NmM0YWRiODMgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMjAtMDQtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4K
KworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cGFuZHMgdXBv
biB0aGUgZWFybGllciBwdWJsaWMgZmllbGRzIHBhdGNoLCBhZGRpbmcgYSBudW1iZXIgb2YgcHJp
dmF0ZQorICAgICAgICBmaWVsZCB0ZXN0cy4KKworICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanM6CisgICAgICAgICog
c3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanM6IEFk
ZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDQtMjAgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBTa2lwIHRlc3Qy
NjIgZm9yIG5vbi1zYWZlLWludGVnZXIgcmFuZ2UgQmlnSW50Q29uc3RydWN0b3IKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODhhMTE2M2UxNjdlZDBkNmM1ZjY3NjU2ZDAxYjM0ZDg4Y2I3NGYyZgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9u
LmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2Qo
KSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBD
KCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJh
NGY0MzU0Zjg5N2YxMTM3NDA4NzEyNjA0NmM2ZjFkZmQzZTdlOQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpA
QCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAi
ICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNmID0gMzsKKworICAgIG1ldGhvZCgpIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3Nl
cnQoYy5tZXRob2QoKSwgMyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxZjcxOGQ5NzQyNzBhYzhhMTllNWY3YmYw
NTIwMGRlYjkzNzZjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzCkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBl
LCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30K
KworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5sZW5n
dGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVbaV0s
ICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBlW2ld
KTsKK30KKworbGV0IGFyciA9IFtdOworCitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAgIGdl
dDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAgICAgICAgICAgIGFyci5wdXNoKHByb3Ap
OworICAgICAgICAgICAgICAgIHJldHVybiBvYmpbcHJvcF07CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pOworICAgIH0KK30KKworY2xhc3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7CisgICAg
I2YgPSAzOworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQor
fQorCitsZXQgdCA9IG5ldyBUZXN0KCk7CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwg
MywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFy
ciwgWydtZXRob2QnXSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtb3V0LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkODYyMTYwMWQ1ZGUzNGE0MjgzNDZk
NTFjY2Y4MjJmYmY1NjBhOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9
IGAKK3ZhciBDID0gY2xhc3MgeworICAgIGFzc2VydE91dE9mTGluZVZhbHVlKCkgeworICAgICAg
ICBhc3NlcnQodGhpcy4jZjIwMCwgImZvbyIpOworICAgIH0KK2A7CisKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAyMDA7IGkrKykgeworICAgIGtsYXNzU291cmNlICs9ICIgICAgI2YiICsgaSArICI7
XG4iOworfQorCitrbGFzc1NvdXJjZSArPSAiICAgICNmMjAwID0gXCJmb29cIjtcbn0iOworCitl
dmFsKGtsYXNzU291cmNlKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hc3NlcnRPdXRPZkxpbmVWYWx1ZSgpOworfQorCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmY5Nzg4MDU3YjFiZjQ5NTUwYTBlOGYzZDk4YTk0MWE4MzdjZjExYzMKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpA
QCAtMCwwICsxLDE1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPTEiLCAiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdl
KTsKK30KKworbGV0IGluc3QgPSBuZXcgY2xhc3MgeworICBhID0gZXZhbCgiKGkpID0+IGkuI2Ii
KTsKKworICAjYiA9IHt9OworfTsKKworaW5zdC5hKGluc3QpLnggPSAxOworYXNzZXJ0KGluc3Qu
YShpbnN0KS54ID09IDEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXN0cmVzcy1pbnN0YW5jZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3Mt
aW5zdGFuY2UuanMKaW5kZXggZTUxNjI5OWE3OTJjNjM4NGI4NDJjNjk3ZjQxZmNlZDdmNWNmZmZj
Zi4uNTA2OWE3ZGE1YTE1NWRjYzA2MDRlNDYzMmI5MGU4MzA5MzlmZTgzNiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCkBAIC0xLDExICsxLDE1
IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9dHJ1ZSIpCisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKIAogY2xhc3MgQSB7CiAgICAgYSA9IDA7CiAgICAgYiA9
IDE7CisgICAgI2MgPSAwOworICAgICNkID0gMTsKICAgICBlID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gMDsgfTsKKyAgICAjZiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfTsKICAgICBbImciXSA9
IDA7CiAgICAgaCA9IGV2YWwoInRydWUiKTsKKyAgICAjaSA9IGV2YWwoImZhbHNlIik7CiB9CiAK
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQt
YnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNjMzNjJmYWE2M2U0MDU2
MjVkMWZlY2VjZTk5YmNkMjY2YjllYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMjkgQEAKKy8vIFRP
RE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0Ag
cnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCisvLyBHZXRCeVZhbERpcmVjdCBzaG91bGQgdGhy
b3cgd2hlbiB0aGUgcmVjZWl2ZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWVzdGVkIHByaXZhdGUg
cHJvcGVydHkKK2xldCBpLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3ggPSBpOwor
ICAgIGNvbnN0cnVjdG9yKCkgeyBpZiAoaSA9PT0gMzApIHJldHVybiB7IFtTeW1ib2wudG9TdHJp
bmdUYWddOiAid2l0aG91dCAjeCJ9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBvYmou
I3g7IH0KKyAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCI7
IH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBs
ZXQgYyA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KGMpOworICAgICAgICBpZiAo
cmVzdWx0ICE9PSBpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBDLngo
JHtjfSkgdG8gYmUgJHtpfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0Y2gg
KGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUuY29uc3RydWN0
b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0
aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWQ4
ZTIxOTIzZjIwMjRkMDIyMDJmM2EyZTE2YmI0OWUxZjk1YjNkCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5q
cwpAQCAtMCwwICsxLDIwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NG
aWVsZHM9MSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsK
KyAgICB0aHJvd3M6IChleHBlY3RlZEVycm9yLCBmdW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUg
KyAiIGJ1dCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisgICAgfQorfQorCithc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBb
e30uI3hdID0gMTsgCisgICAgICAgICN4ID0gImZvbyI7CisgICAgfQorfSk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUw
NGRlNmY1MjUyOTIwNzJhMTZhNTA0ODUwOTAxNWVjYTViOTlhZWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAg
KzEsMzQgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9MSIpCisvL0AgcnVuRGVmYXVsdCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisv
L0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCisvLyBHUFZEIHdpdGggIlB1dEJ5VmFsVGhy
b3dJZkV4aXN0cyIgc2hvdWxkIHRocm93IGlmIG92ZXJ3cml0aW5nIGFuIGFscmVhZHkgZXhpc3Rp
bmcgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsK
KyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGkgPCAyOSA/IHRoaXMgOiBjOwor
ICAgIH0KK30KKworY2xhc3MgQ0MgZXh0ZW5kcyBDIHsKKyAgICAjeCA9IGkrKzsKKyAgICB4KCkg
eyByZXR1cm4gdGhpcy4jeDsgfQorfQorCitjID0gbmV3IENDOwordHJ5IHsKKyAgICBmb3IgKGxl
dCBqID0gMTsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IHggPSBuZXcgQ0M7CisgICAgICAg
IGlmICh4LngoKSAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
eC54KCkgdG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7eC54KCl9YCk7CisgICAgfQorfSBjYXRjaCAo
ZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3Rv
ciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRo
cmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12
YWwtZGlyZWN0LXB1dHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVj
dC1wdXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU0MjNjM2U0YzJkOTc2NzU0NzRmN2RkNzJjNGMz
M2NiODQyYWE5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFs
LWRpcmVjdC1wdXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vIFRPRE86IC8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQoIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPTEiKQorCisvLyBHUFZEIHdpdGggIlB1dEJ5VmFsUHJpdmF0ZU5hbWUiIHNob3Vs
ZCB0aHJvdyBpZiB3cml0aW5nIHRvIGEgbm9uLWV4aXN0ZW50IFByaXZhdGVOYW1lLgorbGV0IGMs
IGkgPSAwLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3g7CisgICAgY29uc3RydWN0
b3IoKSB7IHJldHVybiBpIDwgMzAgPyB0aGlzIDogeyBbU3ltYm9sLnRvU3RyaW5nVGFnXTogIndp
dGhvdXQgI3giIH07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeCA9IGkrKzsg
fQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRoICN4IiB9Cit9
CisKK3RyeSB7CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGxl
dCBvYmogPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChvYmopOworICAgICAgICBp
ZiAocmVzdWx0ICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBD
LngoJHtvYmp9KSB0byBiZSAke2p9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQorfSBj
YXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAvLyBydmFsIG9mIEFzc2lnbm1lbnRF
eHByZXNzaW9uIGlzIGV2YWx1YXRlZCBiZWZvcmUgUHJpdmF0ZUZpZWxkRmluZCgjeCwgbHJlZikg
aXMgcGVyZm9ybWVkLAorICAgIC8vIHRodXMgYGlgIGhhcyBhbHJlYWR5IGJlZW4gaW5jcmVtZW50
ZWQuCisgICAgaWYgKGkgIT09IDMxIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgewor
ICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKaW5kZXggNmI1ZjkxOGI2ZTFlZjFiY2M5NWU2OTZmOGVhYzlkMzlmOGZk
YTFmYi4uYzdmNTNjYjMyM2VjNjkzMzk1YWY0Zjk4NmY2NzBkNWRhM2VlNGVmNSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbApAQCAtNSw2ICs1LDcgQEAgZmxhZ3M6CiAgIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
OiB1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZzCiAgIGNs
YXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCisgIGNsYXNzLWZpZWxkcy1w
cml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMKICAgbG9naWNhbC1hc3NpZ25tZW50LW9wZXJh
dG9yczogdXNlTG9naWNhbEFzc2lnbm1lbnRPcGVyYXRvcnMKIHNraXA6CiAgIGZlYXR1cmVzOgpA
QCAtMTMsNyArMTQsNiBAQCBza2lwOgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDkzMQogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKIAotICAgIC0gY2xh
c3MtZmllbGRzLXByaXZhdGUKICAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xh
c3Mtc3RhdGljLWZpZWxkcy1wdWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397121</attachid>
            <date>2020-04-21 14:34:09 -0700</date>
            <delta_ts>2020-04-22 12:12:07 -0700</delta_ts>
            <desc>Patch v16</desc>
            <filename>bug-206431-20200421173408.patch</filename>
            <type>text/plain</type>
            <size>184876</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNDI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
Zjc4MjBhYzhkZjI5ZjA5ODk0NmYxYjQzMzY5ZWFhOWYwM2M5NzRhLi5kM2YyMjI5NjNmODg0N2I2
NDY3Yjg4YzNkNGU1ZGFhNzAxMzFlZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTQgQEAKKzIwMjAtMDQtMjEgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVy
ZW5jZXMgYXJlCisgICAgICAgIHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Ig
bm90IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAg
ICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRo
ZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0
aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUg
ZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVk
IGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVk
IGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5
IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAg
ICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBs
aWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAg
IDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAg
ICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxE
b05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAs
IDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHBy
b2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAg
ICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xv
YmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNj
b3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxO
b3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNl
aXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZh
dGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJs
eSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlW
YWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRk
ZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgSlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29k
ZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdz
OjpjcmVhdGVEaXJlY3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2
YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRl
RmllbGRQdXQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc0RpcmVjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHV0QnlWYWxGbGFnczo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkQWNjZXNzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRQdXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFkZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OlB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAqIGJ5dGVj
b2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5v
ZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9k
ZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNs
YXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgor
ICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklU
UHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KToKKyAgICAgICAg
KEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXRQcml2YXRlRmllbGQpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2ln
bk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVy
PExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VUNoYXI+Ojpw
YXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFy
c2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4V2l0aG91
dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6CisgICAgICAg
IChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6
OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6c2hv
dWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5o
OgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRpb24gY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkJhc2VEb3ROb2RlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5v
ZGU6OnR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlTmFt
ZSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1l
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tl
blRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6
OlNjb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6
CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAo
SlNDOjpTY29wZTo6c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1By
aXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5h
bWVzKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5h
bWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnVzZVByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6cHJpdmF0ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZXhwZWN0UHJpdmF0
ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y29weVVuZGVjbGFyZWRQcml2YXRl
TmFtZXNUb091dGVyU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Om1hdGNoQW5kVXBkYXRl
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpT
Qzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBw
YXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNr
UG9wKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnQ6OnN3YXApOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVF
bnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAgICAqIHBhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeTo6aXNQcml2YXRlTmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVO
YW1lRW50cnk6OlByaXZhdGVOYW1lRW50cnkpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVu
dHJ5Ojppc1VzZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0Rl
Y2xhcmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNVc2Vk
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNEZWNsYXJlZCk6CisgICAg
ICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpQ
cml2YXRlTmFtZUVudHJ5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjptYXBTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpw
cml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpw
cml2YXRlTmFtZXNTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpj
b3B5UHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpnZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFz
UHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVE
YXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFy
ZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6
OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6
OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29k
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJv
cik6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
Y29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVz
VW5kZXJURFopOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25l
U2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDQt
MjEgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBOb24tdW5pZmllZCBidWlsZCBmaXhlcyBsYXRlIEZlYnJ1YXJ5IDIwMjAgZWRpdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDIyYmYxYTMxOGZmMWVkNzk2NjcyYmUz
YzllNTJhY2YyNmI2N2I2N2IuLmY1NzIzNzI1OWI5MjQyMGFhY2I2YmJjMTRiYjVkZmI4Y2E1ZGY5
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0MCw2ICs1NDAsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVj
b2RlL09wZXJhbmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0
ZWNvZGUvUHV0QnlJZEZsYWdzLmgKKyAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBi
eXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAg
ICBieXRlY29kZS9TdXBlclNhbXBsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAyMDQ2YjA4YTRhMzFlNTZhYWY0MTBiNDQ0ZDljODI3YmFlZGI0ODYzLi43MDVmNTlhNGFjNDAx
MTM1MDA4NmNlM2RmODlhYWM0MDY0ZmE5MjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTI1MSw2ICsxMjUxLDcgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
NzA0QjgwMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njc2QzZF
ODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1
dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQw
MENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzEx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0lu
dFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY5NzZFNUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTE5LDYgKzQxMjAs
OCBAQAogCQk4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFlhcnJQYXR0ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4u
aDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHV0QnlWYWxGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2
QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQdXRCeVZhbEZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4
ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJp
dmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MDEsNiArODQwNCw4IEBACiAJCQkJ
MEY5MzMyOUExNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkz
QjRBNzE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNC
NEE4MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICovLAorCQkJCTg2NzZDNkU3
MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywKKwkJCQk4Njc2QzZFNjIz
NDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1
RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3
MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggKi8sCkBAIC04OTY5LDcgKzg5NzQsNiBAQAogCQkJCTBG
RUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJGRCAvKiBBbGxvY2F0aW5n
U2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBT
Y3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFFNjIwOTAwNkYzOTAxIC8q
IEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NUEwNjMyMDBE
MjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMENCNUUx
RkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBIZWFkZXJzICovLApAQCAt
MTAxNTMsNiArMTAxNTcsNyBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYwMDMxRkZEMyAvKiBQdXRC
eUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAv
KiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzQjRBQTE4QjkyQzREMDAx
NzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTg2NzZDNkU4MjM0
NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBD
RDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDIwMyw2ICsxMDIwOCw3IEBACiAJCQkJMEZFMDUwMjkxQUE5MDk1
NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlw
dEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0
IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDZFMTg5QjAw
QUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDBmNGM1MGRmMzY3YzY1NjA4YTBhZjYyODNhMGRjNTI2YTk0
MTBhNWUuLjU4MTE0YTEzMmYwZjJhMDQ0ZDcwNmU2Y2U4NDE3M2ZhOGI3NGFlNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OCw2ICsyNjgsNyBAQCBieXRlY29kZS9Qcm94eWFi
bGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9S
ZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMTM2MjVmNWJh
ODk5Y2NkZWJiNTYzNTQ4N2ZkYzE1MjQ2ZTcyYjgyMi4uMGYyNTMxYzMwNjgyZDFiODNmYjI2YThk
MjFlNjJkZWU0N2Q3MGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9C
dWlsdGluTmFtZXMuaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1h
Y3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5h
bCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkg
XAotICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgCisgICAgbWFjcm8oaW5zdGFu
Y2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAog
bmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZTUJP
TFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJv
bEltcGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QucmIKaW5kZXggNDk4NTc5MDMzMGNjOWU1MzI5YjMxYWVlN2MyNmJjYzEyZTQ5
YzEzOC4uOWMwOTcyYzEzZWNkN2ZlMmYwOWY4YzMxYzY4NTE1MzBjOWRmNTljYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00OSw2ICs0
OSw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3Bl
cnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAg
OlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTQ5
LDYgKzU1MCwxNyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBH
ZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3ZhbF9kaXJlY3QsCisgICAgYXJn
czogeworICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYmFzZTogVmlydHVh
bFJlZ2lzdGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisg
ICAgbWV0YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAg
IGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTc0LDcgKzU4Niw3
IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVy
LAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmly
dHVhbFJlZ2lzdGVyLAotICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCisgICAgICAgIGZsYWdz
OiBQdXRCeVZhbEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQ
cm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCBlMzFiMTM0YzI4YzFmMjgzNGVmY2I3OGUwMTY1
ZWQ3ZmY2ZDgxZjNhLi4xMTI0YTNmNmYyZTNkNTVlYTUzYzkxMjBjOWIwZWFkNTY2N2EwMzRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAKQEAgLTIxMiw2ICsyMTIsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleElt
cGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMo
T3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMo
T3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9w
R2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BHZXRCeVZhbERpcmVjdCwgYmFz
ZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVT
RVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUp
CiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC00MjMsNiArNDI0
LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZh
cnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wSW5zdGFuY2VvZiwgZHN0
KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5VmFs
LCBkc3QpCisgICAgREVGUyhPcEdldEJ5VmFsRGlyZWN0LCBkc3QpCiAgICAgREVGUyhPcFR5cGVv
ZiwgZHN0KQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3QpCiAgICAgREVG
UyhPcElzRW1wdHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4
IDBkOTU3MDkyNmFiMTQ3Mzc4ZWMzMTcyODM4ZGIyMzU4ODJkYjdiY2QuLjlkNzNiZjFlYTA3OTBi
MjcyYmM2ZTE0MmQzMDU1MjYxMzc3OWJiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0ZpdHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKICNpbmNs
dWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5o
IgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAj
aW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVn
aXN0ZXIuaCIKQEAgLTI1Niw2ICsyNTcsNDcgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBz
aXplPiB7CiAgICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGly
ZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKTsKICAgICB9CiB9
OworCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQdXRCeVZhbEZsYWdz
LCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6
ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBib29sZWFucyBh
bmQgYSAyIGJpdCBlbnVtLCBlbmNvZGVkIGFzOgorICAgIC8vICAgICAgICAgIGlzU3RyaWN0Cisg
ICAgLy8gICAgICAgICAgICAgdgorICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlzRGlyZWN0Cisg
ICAgLy8gICAgICAgICAgIF4KKyAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHswID0g
Tm9uZSwgMSA9IFB1dCwgMiA9IENyZWF0ZSB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19p
c0RpcmVjdEJpdCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0cmljdEJpdCA9
IDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFz
ayA9IDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3MpCisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGFyZ2V0VHlwZSBj
b252ZXJ0KFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlzRGlyZWN0
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAgIGF1dG8g
aXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0
KCkpOworICAgICAgICBhdXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihmbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOworICAgICAgICByZXR1cm4g
KHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQp
IHwgKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQorCisgICAgc3RhdGljIFB1dEJ5
VmFsRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7CisgICAgICAgIGF1dG8gaXNE
aXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKKyAgICAgICAg
YXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOwor
ICAgICAgICBhdXRvIGFjY2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ+
KChncGkgJiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmRTaGlmdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFN
b2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICAgICAgcmV0dXJuIGFjY2Vz
cyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lID8KKyAgICAgICAgICAgIGlzRGlyZWN0
ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6
OmNyZWF0ZShlY21hTW9kZSkgOgorICAgICAgICAgICAgYWNjZXNzID09IFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVByaXZhdGVGaWVsZFB1dChlY21h
TW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRlRmllbGRBZGQoZWNtYU1vZGUpOwor
ICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVj
dCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3Rk
Ojppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6
OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IGUyYzFhNDliNDM0YzBjYzUxNTg0
OTQ0NWFjZDlmZWRiZjU5N2EwMzcuLjcwNDI1NGJiYjdhNWRhMzE2OTFiMzEwNjY4YmYzNmNhMDQ1
NGVjNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGlt
ZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaApAQCAtMTA0LDYgKzEwNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAg
IHYoQXJyYXksIG51bGxwdHIpIFwKICAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAg
ICB2KGNhbGxGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwg
bnVsbHB0cikKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNv
ZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlOTBmZDA3ZDBkMzcxMzAyMmRkZDg5ZTk2NjU2M2IwNWY2
NDBhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4K
KyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYg
b3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQoreworICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIp
OworICAgIGlmIChmbGFncy5pc0RpcmVjdCgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJE
aXJlY3QiKTsKKyAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRQdXQoKSkKKyAgICAgICAgb3V0
LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZh
dGVGaWVsZEFkZCgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRk
Iik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg1ZThlMGY3MmU2Yzg1NTQ4YmQz
ZDI1Nzg1MWM5YzFmYzI4M2EwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJs
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIDogdWludDhfdCB7CisgICAgTm9uZSwKKyAgICBQdXQsCisgICAgQ3JlYXRlLAorfTsKKwor
Y2xhc3MgUHV0QnlWYWxGbGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRC
eVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgLy8gQSBkaXJl
Y3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hl
Y2tpbmcgaWYgdGhlCisgICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KKyAgICBj
b25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFN
b2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUp
OworICAgIH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQcml2
YXRlRmllbGRBZGQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0
QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKKyAg
ICB9CisKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHJpdmF0ZUZp
ZWxkUHV0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFs
RmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0LCBlY21hTW9kZSk7CisgICAgfQorCisg
ICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01B
TW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKyAgICBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3Qg
eyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQ6OlB1dDsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRl
OyB9CisKK3ByaXZhdGU6CisKKyAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGly
ZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQor
ICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5k
OjpOb25lKQorICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgeworICAgIH0KKwor
ICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNz
LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCisgICAgICAg
ICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKGFjY2VzcykKKyAgICAgICAgLCBtX2VjbWFNb2Rl
KGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1faXNEaXJlY3Q7CisgICAgUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CisgICAgRUNNQU1v
ZGUgbV9lY21hTW9kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RG
IHsKKworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKaW5kZXggNjExMjc5ZjYwOWEwODU4OWFkY2U5
MWMyYTVjOGFmNjQ4MDgwYzRjNi4uZjkwZDUyOWQyYWViYjNjZDk1YzhiNDU3YjY0OGI1Zjc0Yjhm
YjEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCkBAIC0yNyw2
ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5v
dERpcmVjdCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZh
dGVGaWVsZENyZWF0ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0IH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMGJmMzAyOGQ4MTBjNjE2ZWIwN2Fk
YTY2YzU3ZGE5Mjk5ZTFiYmNjZS4uNWY4ZWJiYzE4MzMwMzZiM2UxZGU0MmNjODQ1OTllNzQwM2Ey
YTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2soCiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCkpKTsKICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zID0gZXhlY3V0YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0aW9ucygpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAg
ICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1
cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJp
dmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0ciwgaW5z
dGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5h
bWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4
dFR5cGU6Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwog
CiAgICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKaW5kZXggYzE5ZTYxYzUyODliN2MxMDVkZjdjNjlmZjU3NzQ1NWQ0OGU1
MjQ4Mi4uNjQzZDYxM2U0NmRlM2E0YjJlZTYyY2FlZGIxMjMwYWU0ODhhMmU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKQEAgLTE4ODksNiArMTg4OSwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpp
bnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbAog
CiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSA6IFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgICAgICBzeW1i
b2xUYWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRy
eSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4g
ZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRl
ZC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY2NjMKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCisg
ICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQo
KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpA
QCAtMjY3Niw5ICsyNjgxLDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJu
IHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdl
dEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHkpCit7CisgICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHBy
b3BlcnR5KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0
KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CisgICAgT3BQdXRCeVZh
bERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6
OmNyZWF0ZURpcmVjdChlY21hTW9kZSgpKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0y
NzAwLDYgKzI3MTEsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJ
bnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0
ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3Bl
cnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHJpdmF0ZUZpZWxkQWRkKGVjbWFNb2Rl
KCkpKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0
KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHJpdmF0
ZUZpZWxkUHV0KGVjbWFNb2RlKCkpKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNh
bXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAzOTdkZGRjN2U1YjhmMTAw
ZTlhOTdkN2MzNGE2OTY4NjQ2MWU2ZGQ5Li41Mzc0NTZkYzIxMWZjNWU4Mjk5MWYxMmQzNTg2NjQ0
NTg2MjAzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03ODcsMTEgKzc4NywxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1Zh
bHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRE
aXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBS
ZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRl
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAg
ICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1
cGVyU2FtcGxlckVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDZmMzdhOGNlZDFkOTlhNmFjZDY0OTQwYTEzOTU1
MTE3YThhMDc2MGQuLjdhMWY2OTAzMTcxYjNiM2VkMGRjMGViYjU0NjEwMDExNGM3NjQ2N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKQEAgLTU0OSwxMSArNTQ5LDMwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9t
ZU9iamVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGZ1bmN0aW9uLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSgpLCBob21lT2JqZWN0KTsKIH0K
IAordm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIC8v
IFdhbGsgdGhlIGxpc3QgYW5kIGRlY2xhcmUgYW55IFByaXZhdGUgcHJvcGVydHkgbmFtZXMgKGUu
Zy4gYCNmb29gKSBpbiB0aGUgcHJvdmlkZWQgc2NvcGUuCisgICAgZm9yIChQcm9wZXJ0eUxpc3RO
b2RlKiBwID0gdGhpczsgcDsgcCA9IHAtPm1fbmV4dCkgeworICAgICAgICBjb25zdCBQcm9wZXJ0
eU5vZGUmIG5vZGUgPSAqcC0+bV9ub2RlOworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9w
ZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVh
dGVQcml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIs
IExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmlu
ZWQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ltYm9sID0gZ2VuZXJhdG9y
LmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZh
dGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGFyZ3VtZW50cywgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVi
dWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9y
LnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoc2NvcGUsIHZhciwgc3ltYm9sLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwogUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lz
dGVySUQqIHByb3RvdHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucykKIHsKLSAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVn
dWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwog
ICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisKKyAgICAvLyBGYXN0IGNhc2U6IHRoaXMg
bG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIGZvciAoOyBw
ICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+
bV9uZXh0KSB7CiAgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVy
dHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CiAKQEAgLTcxNSw2ICs3MzQsOSBA
QCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQ
dXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAgIC8vIFByaXZhdGUgZmllbGRz
IGFyZSBoYW5kbGVkIGluIHRoZSBzeW50aGV0aWMgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyIGZ1
bmN0aW9uLCBub3QgaGVyZS4KKyAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9k
ZTo6UHJpdmF0ZSkpOworCiAgICAgYm9vbCBzaG91bGRTZXRGdW5jdGlvbk5hbWUgPSBnZW5lcmF0
b3Iuc2hvdWxkU2V0RnVuY3Rpb25OYW1lKG5vZGUubV9hc3NpZ24pOwogCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHByb3BlcnR5TmFtZTsKQEAgLTg0NSwxNiArODY3LDY2IEBAIFJlZ2lzdGVySUQq
IERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVyCiAgICAgfQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsK
LSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNW
YWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHJldCA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwg
bV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQq
IHJldCA9IGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZmluYWxEZXN0LmdldCgpLCBi
YXNlLmdldCgpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0Lmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0
cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsK
KyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFt
ZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShw
cml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQp
OworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJhc2Us
IHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9k
ZSgpKSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0g
Z2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChkc3QsIGJhc2UsIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgfQorCisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkc3QsIGJhc2UsIG1faWRlbnQpOworfQorCitS
ZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKQorewor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKGdlbmVyYXRvciwgZHN0LCBiYXNlLCB0aGlzVmFsdWUpOworfQorCitSZWdpc3Rl
cklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0
ZXJJRD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3Qg
YmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UsIHByaXZhdGVOYW1l
LmdldCgpLCB2YWx1ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
eworICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVy
YXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1ZSk7Cit9CisKK1Jl
Z2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdFB1dFByb3BlcnR5
KGdlbmVyYXRvciwgYmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNzM4LDEx
ICsxODEwLDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0T3B0aW9uYWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwg
c3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgaWYgKGJhc2VJ
c1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50
KTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
OworICAgIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rpb24uZ2V0KCksIGJh
c2UuZ2V0KCkpOwogCiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAgLTIwNjMsNiArMjEz
MywyMiBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3Rh
cnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRvdEFjY2Vzc29yLT5p
c1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJp
dmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
KworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVj
dEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5h
bWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9z
dEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1
ZS5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVl
LmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
KGRzdCwgb2xkVmFsdWUuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChiYXNlSXNT
dXBlcikgewpAQCAtMjI4Niw2ICsyMzcyLDIxIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVt
aXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90
QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJl
Z2lzdGVySUQqIHZhbHVlOworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTmFtZSgpKSB7
CisgICAgICAgIEFTU0VSVCghYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpOworICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVO
YW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgZW1pdEluY09yRGVjKGdl
bmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgp
LCB2YWx1ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3Qs
IHByb3BEc3QuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFs
dWU7CiAgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIHRoaXNWYWx1
ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CkBAIC0zMTI4LDExICszMjI5LDcgQEAgUmVnaXN0
ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJh
dG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChi
YXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkp
OwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
bV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CisgICAgZW1pdFB1dFByb3BlcnR5KGdlbmVy
YXRvciwgYmFzZS5nZXQoKSwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkp
OwogfQpAQCAtMzE0NCwyMyArMzI0MSwxNSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJh
dG9yKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25E
aXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1
ZTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBlbWl0R2V0UHJvcGVy
dHlWYWx1ZShnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgdGhpc1ZhbHVlKTsKKwogICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRS
ZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3Bl
cmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2Ny
aXB0b3IoKSkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOwot
ICAgIGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCks
IG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldCA9IGVt
aXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0KCksIHVwZGF0ZWRWYWx1ZSwgdGhpc1Zh
bHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXQuZ2V0
KCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTaG9ydENpcmN1aXRS
ZWFkTW9kaWZ5RG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
NDYyMiw2ICs0NzExLDE3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVy
dHlOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0
aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpU
eXBlOjpQcml2YXRlTmFtZTogeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoKm1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwo
KSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFi
bGVzIik7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigp
LCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3Vu
ZCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5h
bWU6IHsKICAgICAgICAgLy8gRklYTUU6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgcHVibGljIGNs
YXNzIGZpZWxkcwogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4MzMwCkBAIC00NjMyLDcgKzQ3MzIsNyBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIkNvbXB1dGVkIG5hbWVz
IG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24o
KSArIDEpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxw
dHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
cHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwg
bV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQtPmxlbmd0aCgpKTsKQEAgLTQ3MjUsNiAr
NDgyNSw4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
RGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZU5hbWVSZWdpc3Rlci5n
ZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCBtX3Bvc2l0aW9uKTsK
IAogICAgIGlmIChtX2NsYXNzRWxlbWVudHMpIHsKKyAgICAgICAgbV9jbGFzc0VsZW1lbnRzLT5l
bWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnNjb3BlUmVn
aXN0ZXIoKSk7CisKICAgICAgICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBpbnN0YW5jZUZpZWxk
TG9jYXRpb25zOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERlZmluZUNsYXNzRWxlbWVudHMobV9j
bGFzc0VsZW1lbnRzLCBjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZUZpZWxkTG9jYXRpb25zLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCAzNGRhM2IxZmM3NTFiZmNlOWJmOTVkYzI2YTk0YTJkODdlOTE1NTE0Li5k
MGU4YzI3NTE2ZDNiMWE2Yjc2OGYwNDc1YjFjMjE2MGNkMzcyMmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzIsNiArNzIsNyBA
QAogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFn
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdz
LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1l
bnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgpAQCAtMTI1Nyw2ICsxMjU4LDE4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9Owog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitFQ01BTW9kZSBlY21hTW9kZShCeXRl
Y29kZSBieXRlY29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKK30KKwor
dGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGly
ZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxv
Y2F0ZVRhcmdldGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAg
QVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpAQCAtODE4Niw3ICs4MTk5LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIHVuc2lnbmVkIGluc3Ry
dWN0aW9uU2l6ZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkK
LSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51
bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBpbnN0cnVjdGlvblNpemUsIGJ5
dGVjb2RlLm1fZWNtYU1vZGUpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVu
dGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qs
IGluc3RydWN0aW9uU2l6ZSwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKICAgICB9CiAKICAgICBpZiAo
IWNvbXBpbGVkQXNQdXRCeUlkKSB7CkBAIC04MTk3LDcgKzgyMTAsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25TaXplKQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAg
ICBhZGRWYXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBh
ZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5
VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1v
ZGUpKTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlW
YWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhl
Y21hTW9kZShieXRlY29kZSkpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlW
YWwgYW5kIFB1dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIg
ZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IDY1MzI5ZjVjNDVmNDMxNTgzZjM5ZTFmMDA3ZTRlMDY1MzllNTk0NzUuLmIwZjRjZGVmZWRm
ZGNmNDFjYjU3ODhjMWJkMmE1YmI1Y2FmNmU1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5Nyw2ICsyOTcsNyBAQCBDYXBhYmlsaXR5
TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgY29uc3QgSQogCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX2NyZWF0ZV9n
ZW5lcmF0b3JfZnJhbWVfZW52aXJvbm1lbnQ6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX2RpcmVj
dDogLy8gRklYTUU6IG9wX2dldF9ieV92YWxfZGlyZWN0IHdpbGwgbmVlZCBERkcvRlRMIHN1cHBv
cnQgdG8gc2hpcCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
OgogICAgIGNhc2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVsZV9w
cm9ncmFtX3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCBlNjUzMWVjM2ZmODI2MjMzYzVkN2JlNTM1ZDEwZmZjMTZjZTVh
ZjNjLi5lZjY5YzQ3MzQyOTE3MjM1M2ZjMjhjZDIwZDRmMGFkZjA5ZTk1ODY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQwOTgs
NyArMTQwOTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmln
aW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXls
b2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9k
ZSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1f
aml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CmluZGV4IDUzNjY1MGQ2ZWVjZTZhZTFhY2EwMWJmNDczM2JhNjNlYzA1ZGUyMTkuLmM1ODk5OTdm
NTQzN2Y0ZjI4NzMxMTEwNDgwNWI4YThmOTRkYzk0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQxNDQsNyArNDE0NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFp
bGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigp
KSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BS
SW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7
CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5
YzE2YjEwYzgzMS4uZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTE0MSw2ICsxNDEsNyBAQCBt
b2R1bGUgRFNMCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0
MjY1NmMxNDkuLjk1ZTYxYmNiMzljODZkNjYyNTJhMzc5OTEyZDdlODQyNDZhNGZiNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QpIFwKICAg
ICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAorICAgIG1hY3Jv
KE9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkgXAorICAgIG1h
Y3JvKE9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSkgXAogICAg
IG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJlcGxhY2VX
aXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA5NGIwZTU2NjEzODEyZWVlZjM2ZGIxYTkyMjM2NDIzZDM4NzM5Nzc3
Li4zMGJkNTI5YzNlNGQyMmEyZWQxZjY3ODk5YjQwYWQxNDExNWYzMGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC0yOTgsNiArMjk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXNoX3dpdGhfc2NvcGUpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogICAgICAg
ICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX3dpdGhfdGhpcykKKyAgICAgICAgREVGSU5FX1NM
T1dfT1AoZ2V0X2J5X3ZhbF9kaXJlY3QpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9ieV9p
ZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9ieV92YWxfd2l0aF90aGlz
KQogICAgICAgICBERUZJTkVfU0xPV19PUChyZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19mdW5j
X2RlY2xfaW5fZXZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDM0ZjNkNTBmMDRiYzJi
OTZlMGY5NTljN2M2YjU1M2Y3NDcwMDU1MWQuLjY2OTgzNjI4ZTJkNjUwYTVlYWRlMGIzZjYyOGJm
N2Q0MDU4NTZjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDAxLDcgKzQwMSwxNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAgICAg
IEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOwogCi0gICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sg
aGVscGVyIGZvciBQdXRCeVZhbC4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CisgICAg
ICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHRoZSB0
eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgorICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRl
RmllbGRBY2Nlc3NLaW5kKE9wKTsKKworICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhlbHBl
ciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElkZW50
aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVhYmxl
SWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDIyNmU2Yjc5ODUxYjYxYmNjYmQ1MTA3Y2ZhNWZjYzMw
MjYwZTc5NWIuLmY0NjIzM2JkZmY1OGE0YjVlMTU1ZGIxYjM3MTJmMDg4OWNhMzE5YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCkBAIC0xMzcsMTEgKzEzNywxMSBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dlbmVy
YXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0QnlJZEdl
bmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBSZWdp
c3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBKU1ZhbHVl
UmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVDTUFN
b2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9yKAot
ICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQs
IHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQotICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkK
LSAgICAsIG1fcHV0S2luZChwdXRLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5k
IHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkK
KyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNp
dGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAgICAg
ICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkKKyAg
ICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJpdmF0ZUZpZWxkQWNjZXNzS2luZCkK
IHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwogfQpAQCAt
MTUzLDYgKzE1MywxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBh
dGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9wcml2YXRlRmll
bGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKKyAgICAgICAg
QVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgICAgICBBU1NFUlQobV9lY21hTW9kZS5p
c1N0cmljdCgpKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgfQorCiAgICAgaWYgKG1fZWNt
YU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAobV9wdXRLaW5kID09IERpcmVjdCkKICAg
ICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKaW5kZXggZjAzZTA5MjUzODU0MWZiMDM0MGYxMmM2YmE4YTYxMTExZjMzNjc3NS4uZWJmY2I1
NTk2NDA5OGM2MjRiMDI4ZmQ3ZmRhMDlmN2M2NDE0ZWMyMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNp
bmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIApAQCAtMTMwLDEx
ICsxMzEsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6IHB1YmxpYyBKSVRCeUlkR2Vu
ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkKICAgICAgICAgOiBt
X2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKICAgICB7IH0KIAogICAgIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIENhbGxT
aXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFs
dWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBwcml2YXRlQWNjZXNzKTsKICAgICAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoTWFj
cm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0Myw2ICsxNDUsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAgUHV0S2luZCBtX3B1dEtpbmQ7CisgICAg
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CiB9OwogCiBj
bGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDliNmMwNTI0OGJh
MjkyOTZmOTllZDM3NmZiOTQ4MjhmYmM5MzNjYmYuLmQ1M2U2OTc3ZDM5ZDc1OWU2NzQxMmZkOWFk
MWI5ZTY3ODJiOTdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBA
IC02ODYsNiArNjg2LDM2IEBAIEFMV0FZU19JTkxJTkUgQmluYXJ5QXJpdGhQcm9maWxlIEpJVDo6
Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQogICAgIHJldHVybiBhcml0aFBy
b2ZpbGU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wPgorQUxXQVlTX0lOTElORSBFQ01BTW9k
ZSBKSVQ6OmVjbWFNb2RlKE9wIG9wKQoreworICAgIHJldHVybiBvcC5tX2VjbWFNb2RlOworfQor
Cit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRC
eUlkPihPcFB1dEJ5SWQgb3ApCit7CisgICAgcmV0dXJuIG9wLm1fZmxhZ3MuZWNtYU1vZGUoKTsK
K30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9w
UHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCit7CisgICAgcmV0dXJuIG9wLm1f
ZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitQcml2YXRlRmll
bGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCkKK3sKKyAgICByZXR1
cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlT
X0lOTElORSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQoreworICAgIHJldHVybiBv
cC5tX2ZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMmM4NWM1MjY4M2ZmYzg1ODE3NmY4NWQ2Yzc3MDE5MWVi
YTNjYjdjNS4uMGVhZmVmYWI0N2RmMDVhMjNhM2IzNDA3Y2U0Y2MzNjQ1OGQ5YmEwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC03MTEsNiArNzEx
LDExNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmlj
dE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXBhdGNoUHV0QnlJRChn
bG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3RydWN0dXJlLCBpZGVudGlmaWVy
LCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKK30gLy8gZXh0ZXJuICJDIgorCit1c2lu
ZyBQdXRQcml2YXRlRmllbGRDYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZChWTSYsIENvZGVC
bG9jayosIFN0cnVjdHVyZSosIFB1dFByb3BlcnR5U2xvdCYsIGNvbnN0IElkZW50aWZpZXImKT47
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dFByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJh
c2VWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRLaW5kIHB1dEtpbmQsIGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFjayA9
IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrKCkpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZy
b21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVO
YW1lKCkpOworICAgIEFTU0VSVChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSB8
fCBwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCk7CisKKyAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KTsKKyAgICBib29sIGZvdW5kID0gYmFzZU9iamVjdC0+aXNQcm94eSgpID8gSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90KQor
ICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBpZGVu
dCwgc2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAg
IGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSAmJiBmb3VuZCkKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVkZWZpbmVkUHJp
dmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICBlbHNlIGlmIChwdXRLaW5kID09IERp
cmVjdFByaXZhdGVGaWVsZFB1dCAmJiAhZm91bmQpCisgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9i
amVjdCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBudWxscHRyOworICAgIFB1dFByb3BlcnR5U2xvdCBwdXRTbG90KGJh
c2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgQ29tbW9u
U2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVj
dCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90LCAmc3RydWN0dXJlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxs
YmFjayh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30KKworZXh0
ZXJuICJDIiB7CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0
ZVN0cmljdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNl
VmFsdWUsIGlkZW50aWZpZXIsIHZhbHVlLCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworfQor
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFN1cGVyU2Ft
cGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBBY2Nl
c3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNj
ZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHV0UHJpdmF0ZUZp
ZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9iamVjdCwgaWRlbnRpZmllciwg
dmFsdWUsIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSwgWz1dKFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3Qs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3Bl
cmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0LT5j
bGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOworCisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOworCisgICAgICAgIGlmIChzdHVi
SW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgc3RydWN0dXJlLCBpZGVudGlm
aWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2Nr
LCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywg
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICB9KTsKK30KKwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFi
bGVJZGVudGlmaWVyKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwg
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFsdWUsIERp
cmVjdFByaXZhdGVGaWVsZFB1dCk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlk
ZW50aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFs
c2UpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVy
KTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
cHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9iamVjdCwg
aWRlbnRpZmllciwgdmFsdWUsIERpcmVjdFByaXZhdGVGaWVsZFB1dCwgWyZdKFZNJiB2bSwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3Qm
IHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNF
dmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplLCBiYXNl
T2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVj
dCkpOworCisgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBz
dGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOworCisgICAgICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgc3RydWN0dXJl
LCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpz
dHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0KTsKKyAgICB9KTsKK30KKwogc3RhdGljIHZv
aWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFs
dWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1ZhbHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5m
bywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5ZWEzY2Jk
OTM0ZWI0NzM2OTcxZDZmOWUxYjI3ZTc4MTg4ZDQ2NDEwLi40YTYzNGRiOWY2NTg4NjE4OTU1NzBk
NTBhYzUyZjRiZDlmZjQ5OTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaApAQCAtMTg4LDYgKzE4OCwxMCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Ygogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5B
TDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RG
X0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRl
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0
ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50
cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
UHV0UHJpdmF0ZVN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9J
TlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGlt
aXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYTQwODA1
OTM2NTBhNmVjNTY4YWE2MTA2OTE3ZmU5N2IzOGYxMzM4Yi4uOGU4ZjNhZGJmN2FhZjM4ZTA4Y2Y2
N2ViMTQzNGM0N2VjOTI2NTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBKSVRQdXRCeUlkR2VuZXJh
dG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1
dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxv
Y2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2Rl
SW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5
TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJl
Z1QyLCBieXRlY29kZS5tX2VjbWFNb2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3Mo
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1
dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0
aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2Ug
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1
Y2UgY29kZSBzaXplLgpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAg
ICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CisgICAgICAgIGVjbWFNb2RlID0g
SklUOjplY21hTW9kZShieXRlY29kZSk7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAg
LTY3MCw4ICs2NzAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigK
ICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNp
dGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlm
aWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1v
ZGUoYnl0ZWNvZGUpLAorICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0
UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3Bw
CmluZGV4IDQwOTFjNDRmN2Q3MTdmYzJiM2EwMWIyNDExMmVmYThkMzdhOWY1MDUuLmYzMjVjNmE0
YjUwMDc2NGVlOWUzYTZiZGRlNDQ5YmEyNzdiNDk5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzc4LDcgKzM3
OCw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
T3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBD
YWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFi
bGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9h
ZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgYnl0ZWNvZGUu
bV9lY21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29k
ZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwog
CkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2Rl
T3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFi
bGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2Rl
QmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2Zs
YWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIHJl
Z1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVy
YXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAxOGJkNmU0NTNlOGQ2MDU3
MGI5M2IxMjQ3ZWI2NWI4MmVmMjNlZTY3Li4yOThhZGU1YjZhZDhlMzBhZWFiMTY1NWExZjM4Y2Y1
ZWQzZjA3MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUyMCw2
ICs1MjAsMTAgQEAgc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9u
KGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2kKICAgICBpZiAoc2xvdC5pc1N0cmlj
dE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQ
cml2YXRlRmllbGRQdXQpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVTdHJpY3Q7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OwogICAg
IH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC01MzIsNiArNTM2LDEwIEBAIHN0YXRp
YyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9w
ZXJ0eVNsb3QgJnNsb3QsIFB1CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAg
ICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
UHJpdmF0ZUZpZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRB
ZGRQcml2YXRlU3RyaWN0T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFBy
aXZhdGVGaWVsZFB1dCkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZVN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmlj
dE9wdGltaXplOwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC02MjUsNiAr
NjMzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAg
ICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAg
ICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1dEtpbmQg
IT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBj
YWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2Vs
bCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY0Miw2ICs2NTEs
MTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFBy
aXZhdGVGaWVsZENyZWF0ZSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQuaXNQ
cml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJh
dGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwg
bmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNv
bmRpdGlvblNldC5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2
ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5h
bWUsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RG
TW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVy
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKaW5kZXggNzEyNWJkNGY1MWFmODE1YjlkNTA2NjFlYjdhM2MyNDFhNWFk
NjAzYi4uNzU2OGQyMzZkM2FmYjVmYzE0YTYzODc0NTE4NzZmODk5MmY5NDY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNs
dWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBmZmQ2YjVlMTE1
YjZmZDllYjVlNmI4OTgyOGRiZDdmZTk2YmNhOWQwLi5hOWUxMWVmZWM5N2U5MDM4MTkwZTgyNDJl
ODNiOGEyOGQwNTg0Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTExMTksMTUgKzExMTksMTggQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
YmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmpl
Y3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1v
ZGUuaXNTdHJpY3QoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKS5pc1N0cmljdCgpOworICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBi
eXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CiAgICAgaWYgKExJS0VMWShz
dWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNW
YWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBp
bnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAg
ICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOworICAgICAgICBBU1NFUlQo
IWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHQuYXNVSW50MzIoKSwgdmFsdWUsIDAsIGlzU3RyaWN0
TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5v
dFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCiAgICAgaWYgKHN1YnNjcmlw
dC5pc0RvdWJsZSgpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwog
ICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsK
ICAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc3Vic2NyaXB0QXNEb3VibGUpOwogICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0g
c3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKQEAgLTEx
NDEsOSArMTE0NCwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
bF9kaXJlY3QpCiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAg
ICAgICBMTElOVF9FTkQoKTsKIAorICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkg
PT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOwogICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3MpIHsKKyAg
ICAgICAgICAgIC8vIFRocm93IGEgVHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8g
YSBub24tZXhpc3RlbnQgcHJpdmF0ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxp
a2UgYmVoYXZpb3VyLgorICAgICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAg
ICBib29sIGZvdW5kID0gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBn
bG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBi
eXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCisgICAgICAgICAgICAgICAgTExJ
TlRfVEhST1coZm91bmQgPyBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9i
amVjdCkgOiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAg
ICAgICAgfQogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmlj
dE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwg
Z2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KaW5kZXggNTdlMzk4MmI4MzllYWY5ZWE5OGNmNDgyOTBkNjE0MjMyMDQ0
YTVhNi4uNmUzYjQyZDhlOGM1MjU3MmEzMTczMDg0OWQxMGJhYTgzZWM5NWQ2NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KQEAgLTE1MTksODQgKzE1MTksODkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9w
dXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQK
IAogZW5kKQogCittYWNybyBnZXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2xv
d1BhdGhOYW1lLCBvc3JFeGl0UG9pbnQpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsICVvcGNvZGVTdHJ1Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKKyAgICAgICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdFBh
eWxvYWQsIHNjcmF0Y2gpCisgICAgICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAg
ICAgICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhd
CisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUs
IEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAg
ICBlbmQKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBm
aW5pc2hJbnRHZXRCeVZhbChyZXN1bHRQYXlsb2FkLCBzY3JhdGNoKQotICAgICAgICBnZXQobV9k
c3QsIHNjcmF0Y2gpCi0gICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2Ny
YXRjaCwgOF0KLSAgICAgICAgc3RvcmVpIHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2Zy
LCBzY3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxl
LCB0NSwgSW50MzJUYWcsIHJlc3VsdFBheWxvYWQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBl
bmQKKyAgICAgICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwg
c2NyYXRjaDIsIHNjcmF0Y2gzKQorICAgICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoMSkKKyAg
ICAgICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gzCisgICAgICAgICAgICBz
dG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQorICAgICAgICAgICAg
c3RvcmVpIHNjcmF0Y2gyLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCisgICAgICAg
ICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gz
LCBzY3JhdGNoMikKKyAgICAgICAgICAgIGRpc3BhdGNoKCkKKyAgICAgICAgZW5kCiAKLSAgICBt
YWNybyBmaW5pc2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2Ny
YXRjaDMpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaDEpCi0gICAgICAgIGZkMmlpIHJlc3Vs
dCwgc2NyYXRjaDIsIHNjcmF0Y2gzCi0gICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0
W2Nmciwgc2NyYXRjaDEsIDhdCi0gICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHNjcmF0Y2gxLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9w
cm9maWxlLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIp
CisgICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAg
bW92ZSB0MCwgdDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0
MykKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMy
VGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0
ZXJmbHlbdDBdLCB0MworICAgICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAg
ICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBi
aW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAg
IC5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRl
eGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwg
Lm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0Mgor
ICAgICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAu
b3BHZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAg
YmluZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFl
cSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEs
IDhdLCBmdDAKKyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAg
ICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAg
ZmQyaWkgZnQwLCB0MSwgdDIKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5v
cEdldEJ5VmFsTm90RW1wdHkKKworICAgIC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBz
dWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0
b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAg
YmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxv
YWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQx
CisKKyAgICAub3BHZXRCeVZhbERvbmU6CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAg
IGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFs
Tm90RW1wdHk6CisgICAgICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVBy
b2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKICAgICAgICAgZGlz
cGF0Y2goKQotICAgIGVuZAogCi0gICAgbWV0YWRhdGEodDUsIHQyKQotICAgIGdldChtX2Jhc2Us
IHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFn
LCB0MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxl
KE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLSAgICBn
ZXQobV9wcm9wZXJ0eSwgdDMpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6
ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0MF0sIHQzCi0gICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAg
ICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVx
IHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRC
eVZhbElzQ29udGlndW91czoKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxT
bG93Ci0gICAgbG9hZGkgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFt0MywgdDEsIDhdLCB0MQotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0
QnlWYWxOb3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlW
YWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4
aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0g
ICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5
VmFsU2xvdwotICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4K
LSAgICBmZDJpaSBmdDAsIHQxLCB0MgotICAgIGdldChtX2RzdCwgdDApCi0gICAgam1wIC5vcEdl
dEJ5VmFsTm90RW1wdHkKLQotLm9wR2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0
b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFy
cmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEg
dDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZl
Y3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBBcnJheVN0b3Jh
Z2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQotCi0ub3BHZXRCeVZh
bERvbmU6Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAu
b3BHZXRCeVZhbFNsb3cKLS5vcEdldEJ5VmFsTm90RW1wdHk6Ci0gICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQot
ICAgIGRpc3BhdGNoKCkKKyAgICAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOiAgIAorICAg
ICAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNo
RG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKIAotLm9wR2V0QnlWYWxOb3RJbmRleGVk
U3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZh
bCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAub3BHZXRCeVZh
bFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3Bh
dGNoKCkKIAotLm9wR2V0QnlWYWxTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2goKQorICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAg
ICAgICAgb3NyRXhpdFBvaW50KHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZW5kKQorZW5k
CiAKLS5vc3JSZXR1cm5Qb2ludDoKK2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwg
X2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsLCBtYWNybyhzaXplLCBtZXRhZGF0YSwgcmV0dXJu
KQogICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXpl
KQogICAgIG1ldGFkYXRhKHQyLCB0MykKICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9w
cm9maWxlLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlW
YWxPcChnZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRf
YnlfdmFsX2RpcmVjdCwgbWFjcm8oYSwgYiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9w
Y29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA2NTU5MmU4MjRkNjQwODFk
MDczY2I2MzIxMGFjNjYzNjg4NzdmMWQxLi5iZjEyNDQwMmM3Y2VjNjc3NGQ1NThmNzUyMWJiY2Y3
NDRkNDIzZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTU2NSw5MCArMTU2NSw5MyBAQCBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdAogCiBlbmQpCiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWN0LCBzbG93UGF0aE5hbWUpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsICVvcGNvZGVTdHJ1Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKKyAgICAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3Jh
dGNoKQorICAgICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQorICAgICAgICAgICAgc3RvcmVx
IHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bj
b2RlU3RydWN0JSwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2go
KQorICAgICAgICBlbmQKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAg
ICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2Rz
dCwgc2NyYXRjaCkKLSAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAg
ICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKLSAg
ICAgICAgZGlzcGF0Y2goKQotICAgIGVuZAorICAgICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCisgICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKKyAg
ICAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgZW5kCiAK
LSAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9y
cSBudW1iZXJUYWcsIHJlc3VsdAotICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0
Y2gpCi0gICAgZW5kCisgICAgICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwg
c2NyYXRjaDEsIHNjcmF0Y2gyLCB1bnVzZWQpCisgICAgICAgICAgICBmZDJxIHJlc3VsdCwgc2Ny
YXRjaDEKKyAgICAgICAgICAgIHN1YnEgbnVtYmVyVGFnLCBzY3JhdGNoMQorICAgICAgICAgICAg
ZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgICAgICBlbmQKIAotICAgIG1h
Y3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCB1bnVz
ZWQpCi0gICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdWJxIG51bWJlclRh
Zywgc2NyYXRjaDEKLSAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQot
ICAgIGVuZAorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0YSh0NSwgdDIp
CisgICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
Q2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAotICAgIGdldChtX2Jhc2UsIHQy
KQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlW
YWxTbG93KQotCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6
TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0KG1fcHJvcGVy
dHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5v
cEdldEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKLQotICAgIGxvYWRDYWdlZEpTVmFsdWUo
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKLSAgICBtb3ZlIFRhZ051
bWJlciwgbnVtYmVyVGFnCi0KLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJp
ZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIs
IENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFs
SXNDb250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5k
ZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cK
LSAgICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXog
dDIsIC5vcEdldEJ5VmFsU2xvdwotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlW
YWxOb3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxO
b3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5n
SGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAg
Z2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBm
dDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmQycSBmdDAsIHQyCi0gICAgc3VicSBudW1i
ZXJUYWcsIHQyCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotICAgIAotLm9wR2V0QnlWYWxOb3RE
b3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQ
dXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdElu
ZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRl
eGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwot
ICAgIGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0Mywg
dDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotCi0ub3BHZXRCeVZhbERv
bmU6Ci0gICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgbV9wcm9maWxlLCB0NSwgdDIpCi0gICAgZGlzcGF0Y2goKQorICAgICAgICBtb3ZlIHQw
LCB0MgorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Fy
cmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKIAotLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToK
LSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNo
RG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgZ2V0KG1fcHJvcGVydHks
IHQzKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgICAgIHN4aTJxIHQxLCB0MQogCi0ub3BHZXRCeVZhbFNsb3c6
Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNw
YXRjaCgpCisgICAgICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3Qw
XSwgdDMsIG51bWJlclRhZykKKyAgICAgICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwogCi0u
b3NyUmV0dXJuUG9pbnQ6Ci0gICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dl
dF9ieV92YWwsIHNpemUpCi0gICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShP
cEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgICAgIGFu
ZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCisgICAgICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5v
cEdldEJ5VmFsSXNDb250aWd1b3VzCisgICAgICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUs
IC5vcEdldEJ5VmFsTm90Q29udGlndW91cworCisgICAgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6
CisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFk
ZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAg
Z2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZHEgW3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGJ0
cXogdDIsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBqbXAgLm9wR2V0QnlWYWxEb25lCisKKyAg
ICAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6CisgICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFw
ZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5v
cEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkZCBbdDMs
IHQxLCA4XSwgZnQwCisgICAgICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdwor
ICAgICAgICBmZDJxIGZ0MCwgdDIKKyAgICAgICAgc3VicSBudW1iZXJUYWcsIHQyCisgICAgICAg
IGptcCAub3BHZXRCeVZhbERvbmUKKyAgICAgICAgCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6
CisgICAgICAgIHN1YmkgQXJyYXlTdG9yYWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xv
d1B1dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90
SW5kZXhlZFN0b3JhZ2UKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIg
KyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFs
U2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkcSBBcnJheVN0b3JhZ2U6
Om1fdmVjdG9yW3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xv
dworCisgICAgLm9wR2V0QnlWYWxEb25lOgorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4
XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHQy
KQorICAgICAgICBkaXNwYXRjaCgpCiAKLWVuZCkKKyAgICAub3BHZXRCeVZhbE5vdEluZGV4ZWRT
dG9yYWdlOgorICAgICAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRC
eVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKworICAgIC5vcEdl
dEJ5VmFsU2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAg
ZGlzcGF0Y2goKQorCisgICAgLm9zclJldHVyblBvaW50OgorICAgICAgICBnZXR0ZXJTZXR0ZXJP
U1JFeGl0UmV0dXJuUG9pbnQob3BfJW9wY29kZU5hbWUlLCBzaXplKQorICAgICAgICBtZXRhZGF0
YSh0NSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxl
LCB0NSwgcjApCisgICAgICAgIHJldHVybihyMCkKKyAgICBlbmQpCitlbmQKKworZ2V0QnlWYWxP
cChnZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCiAK
K2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbF9kaXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3Bh
dGhfZ2V0X2J5X3ZhbF9kaXJlY3QpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bj
b2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bj
b2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmlu
ZGV4IGQ5NTU4MDhjNmEzMjhkY2UwNmRhNzNlNzUxZDYyMjM3ZGQ3N2JhNjIuLmJjZjY5ZjE2M2U0
MTY2YzY5OTkyYTIyNGZlMjYwYjBhMTI2NDg5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nl
c3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkK
KyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9w
ZXJ0eSwgRG90VHlwZSB0eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAg
ICAgICAgIGlmIChiYXNlLT5pc1N1cGVyTm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJv
cGVydHkoKTsKICAgICAgICAgCi0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkp
OworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERv
dEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CkBAIC02NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG5vZGUtPmlzQXNzaWdubWVudExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBp
c1ByaXZhdGVMb2NhdGlvbihjb25zdCBFeHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5vZGUtPmlzUHJpdmF0ZUxvY2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09i
amVjdExpdGVyYWwoY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBub2RlLT5pc09iamVjdExpdGVyYWwoKTsKQEAgLTE0MzgsMTUgKzE0NDMsMTUgQEAgRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24KICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0
PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUg
PSBudWxscHRyOwogICAgIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRp
ZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05h
bWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmNhbGxQcml2YXRlTmFtZSgpKSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJB
cmVuYSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JB
cHBseUNoaWxkRGVwdGgpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxs
T3JBcHBseUNoaWxkRGVwdGgpOwogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAm
JiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5hcHBseVB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgY2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdo
dCB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFw
cGx5IHlldC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2
NjguCiAgICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNf
Y2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0
IikKLSAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7Cisg
ICAgICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBl
KCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERl
cHRoKTsKICAgICB9CiAgICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAg
IG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8o
ZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsK
IH0KQEAgLTE1ODcsNyArMTU5Miw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
QXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgRG90
QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwog
CiAgICAgaWYgKG9wID09IE9wZXJhdG9yOjpFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgQXNzaWduRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQs
IGVuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4
cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAogICAg
IGlmIChvcCA9PSBPcGVyYXRvcjo6Q29hbGVzY2VFcSB8fCBvcCA9PSBPcGVyYXRvcjo6T3JFcSB8
fCBvcCA9PSBPcGVyYXRvcjo6QW5kRXEpIHsKICAgICAgICAgYXV0byogbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywg
ZGl2b3QsIHN0YXJ0LCBlbmQpOwpAQCAtMTU5NSw3ICsxNjAwLDcgQEAgRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHIKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURv
dE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0
aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNz
aWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9k
ZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIG9wLCBleHByLCBleHBySGFz
QXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNz
aW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVy
biBub2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA5YWEy
NjczMDMzMGQ2NTM4ZjQ4YjBjMDE1MzZiN2MyMzIxNTI3NWM1Li5mNmIzNjkyZDYwMmFmZDQyMWUz
MmRmY2RjMTExZDhmYWNiNGI3NmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcApAQCAtOTUwLDEwICs5NTAsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAg
ICAgICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9k
ZSA/IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29sIGlz
UHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bjsKKworICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9v
bCBpc0J1aWx0aW5OYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVu
Y3Rpb247CiAgICAgYm9vbCBpc1dlbGxLbm93blN5bWJvbCA9IGZhbHNlOwotICAgIGlmIChpc1By
aXZhdGVOYW1lKSB7CisgICAgaWYgKGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbik7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJ0AnKSB7CkBAIC05NjEsOCArOTYyLDEyIEBAIHRlbXBsYXRlIDxib29sIHNo
b3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENo
YXI+OjpwCiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAg
ICAgY29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKwor
ICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgQVNTRVJUKGlz
SWRlbnRTdGFydChtX2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAo
aXNJZGVudFBhcnQobV9jdXJyZW50KSkKICAgICAgICAgc2hpZnQoKTsKQEAgLTk3NCw3ICs5Nzks
OCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgIAogICAgIGlmIChzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRl
bnRpZmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKLSAg
ICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc1ByaXZhdGVOYW1lKSB7Cisg
ICAgICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVy
TGVuZ3RoKTsKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc0J1aWx0
aW5OYW1lKSB7CiAgICAgICAgICAgICBpZiAoaXNXZWxsS25vd25TeW1ib2wpCiAgICAgICAgICAg
ICAgICAgaWRlbnQgPSAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woaWRlbnRpZmllclN0
YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC05OTYsMjAgKzEw
MDIsMjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lO
TElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9r
ZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8
IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25v
cmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICBhdXRvIGlkZW50VHlw
ZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5UOworICAgIGlmIChVTkxJS0VM
WSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExl
eGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAg
ICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUq
IGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAgICAgICAgICAgIEFTU0VS
VCgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFlbnRyeSk7CiAgICAgICAgICAgICBp
ZiAoIWVudHJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0
aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2Vu
IDogSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklD
VCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogaWRlbnRUeXBlOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBJREVOVDsKKyAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAogdGVtcGxhdGUgPD4KQEAg
LTEwMjYsNyArMTAzMywxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVy
PiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICB9CiAg
ICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKICAgICBj
b25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworCisgICAg
aWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAgICBVQ2hhciBvckFsbENo
YXJzID0gMDsKICAgICBBU1NFUlQoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFN0YXJ0KG1fY3VycmVu
dCkgfHwgVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsK
ICAgICB3aGlsZSAoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFBhcnQobV9jdXJyZW50KSkgewpAQCAt
MTA1MCw2ICsxMDYyLDkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4g
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9IGVsc2UKICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAgICAgCisgICAgaWYgKGlzUHJpdmF0
ZU5hbWUpCisgICAgICAgIHJldHVybiBQUklWQVRFTkFNRTsKKwogICAgIGlmIChVTkxJS0VMWSgo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVy
RmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
ewpAQCAtMTA3NCw2ICsxMDg5LDE0IEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+
OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgQVNT
RVJUKG1fYnVmZmVyMTYuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIXRva2VuRGF0YS0+ZXNjYXBl
ZCk7CiAKKyAgICBhdXRvIGlkZW50Q2hhcnNTdGFydCA9IGlkZW50aWZpZXJTdGFydDsKKyAgICBi
b29sIGlzUHJpdmF0ZU5hbWUgPSAqaWRlbnRpZmllclN0YXJ0ID09ICcjJzsKKyAgICBpZiAoaXNQ
cml2YXRlTmFtZSkKKyAgICAgICAgKytpZGVudENoYXJzU3RhcnQ7CisKKyAgICBKU1Rva2VuVHlw
ZSBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBB
U1NFUlQoIWlzUHJpdmF0ZU5hbWUgfHwgaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQ
dHIoKSk7CisKICAgICBhdXRvIGZpbGxCdWZmZXIgPSBbJl0gKGJvb2wgaXNTdGFydCA9IGZhbHNl
KSB7CiAgICAgICAgIC8vIFx1WFhYWCB1bmljb2RlIGNoYXJhY3RlcnMgb3IgU3Vycm9nYXRlIHBh
aXJzLgogICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSkK
QEAgLTEwOTMsNyArMTExNiw3IEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+Ojpw
YXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgICAg
ICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICByZWNvcmRVbmlj
b2RlQ29kZVBvaW50KGNoYXJhY3Rlci52YWx1ZSgpKTsKICAgICAgICAgICAgIGlkZW50aWZpZXJT
dGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKLSAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAg
ICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQo
VTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpKTsKQEAgLTExMDksMTAgKzExMzIsMTAgQEAgSlNU
b2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpT
VG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwotICAgICAgICBy
ZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfTsKIAotICAgIEpT
VG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50aWZpZXJTdGFydCA9PSBjdXJyZW50U291
cmNlUHRyKCkpOworICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50Q2hhcnNT
dGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOwogICAgIGlmIChVTkxJS0VMWSh0eXBlICYgRXJy
b3JUb2tlbkZsYWcpKQogICAgICAgICByZXR1cm4gdHlwZTsKIApAQCAtMTE0NSwxMyArMTE2OCwx
MyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xv
d0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6
bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAg
ICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBK
U1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJW
YWx1ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0
cmljdE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gVU5FWFBFQ1RFRF9FU0NBUEVfRVJST1JUT0s7
CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAK
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFjdGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Ns
b3dDYXNlKExDaGFyIGNoYXJhY3RlcikKQEAgLTI0NzgsMTQgKzI1MDEsMjEgQEAgc3RhcnQ6CiAg
ICAgICAgIG1faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbiA9IHRydWU7CiAgICAgICAgIG1f
bGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OwotICAgIGNhc2UgQ2hhcmFj
dGVySGFzaDoKKyAgICBjYXNlIENoYXJhY3Rlckhhc2g6IHsKICAgICAgICAgLy8gSGFzaGJhbmcg
aXMgb25seSBwZXJtaXR0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzb3VyY2UgdGV4dC4KLSAgICAg
ICAgaWYgKHBlZWsoMSkgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKKyAgICAgICAgYXV0
byBuZXh0ID0gcGVlaygxKTsKKyAgICAgICAgaWYgKG5leHQgPT0gJyEnICYmICFjdXJyZW50T2Zm
c2V0KCkpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAg
ICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwogICAgICAgICB9CisgICAgICAgIC8v
IE90aGVyd2lzZSwgaXQgY291bGQgYmUgYSB2YWxpZCBQcml2YXRlTmFtZS4KKyAgICAgICAgaWYg
KE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpICYmIChpc1NpbmdsZUNoYXJhY3Rlcklk
ZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkgeworICAgICAgICAgICAgbGV4ZXJGbGFn
cy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5d29yZHMpOworICAgICAgICAgICAgZ290
byBwYXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsK
KyAgICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgogICAgICAg
ICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAgICAgZ290byBwYXJzZUlk
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAppbmRleCA5ZDVmOTMxZTcyZjZhNWU4NTI1ZDA2MjQzYjEzYWFkYTE5NGJhMWEwLi4xYTA4ZmRi
MTJmYzUzZGM1NjA5MWE1MjQxM2ZiMTE5OWJjODZlZDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMzI3LDEwICszMjcsMTYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEb3RBY2Nlc3Nvck5v
ZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgaW5saW5lIEJh
c2VEb3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlw
ZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQor
ICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUpCisgICAgICAgIDogQmFzZURv
dE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgIHsKICAgICB9CiAgICAgCkBA
IC00MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBp
bmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0
aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2Up
Ci0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7
CiAgICAgfQpAQCAtNDM3LDE0ICs0NDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJt
b3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
YmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxp
bmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJt
b3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
YmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAg
ICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJt
b3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBG
dW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6
OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUg
dHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6
IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJt
b3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAg
ICB9CkBAIC03NzIsMjEgKzc3NiwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwg
dHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3Np
Z25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6
OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBP
cGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJh
c2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2Fi
bGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAg
ICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3Jp
Z2h0KHJpZ2h0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgLCBtX3JpZ2h0
SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAKaW5kZXggOWQxY2ZhNGYxNzYxMzAyYTMzYmJhZTMxZWY2MGZkZmNhZjIw
N2RmNS4uMTFiZjRhNjg0YTFiZDlhMDkzZWI4ZWIxNmUxZTEzNzI2NjIwZDM5MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIFBy
b3BlcnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0IElkZW50aWZp
ZXImIHByb3BOYW1lKQogYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2Fs
U2NvcGVGb3JDbGFzcyhQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQogewogICAgIHdoaWxlIChsaXN0
KSB7Ci0gICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCisg
ICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgfHwgbGlzdC0+
bV9ub2RlLT5pc1ByaXZhdGUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBs
aXN0ID0gbGlzdC0+bV9uZXh0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAppbmRleCBjMjk3NGVhZDEwMTBhYzMyYmEzMTgzZGNlZTExZDQ1OGI3YzAwZDUxLi5jZTUyZWU5
ZmJjNmRjY2QyZTdiZWRlYzlkMWFiZGRlODFkMmIwYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3Np
Z25tZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBpc0xvY2F0aW9uKCk7IH0KICAgICAgICAg
dmlydHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25SZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC03MTUsNyArNzE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFz
cyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RU
YWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFG
cmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29u
c3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFu
ZCA9IDE2LCBTcHJlYWQgPSAzMiB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29u
c3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFu
ZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CiAgICAgICAgIGVudW0gUHV0VHlw
ZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVjdCB9OwogCiAgICAgICAgIFByb3BlcnR5
Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBT
dXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03MzQsNiArNzM1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXND
bGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBp
c0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3Bl
cnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRk
ZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7
IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2
YXRlOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9l
eHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7
IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2
b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGlj
YXRlID0gdHJ1ZTsgfQpAQCAtNzQ0LDcgKzc0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4
cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5z
aWduZWQgbV90eXBlIDogNjsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsKICAgICAgICAg
dW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0
VHlwZSA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxk
bid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKQEAgLTc3Miw2ICs3NzQsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
KTsKIAorICAgICAgICB2b2lkIGVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBzY29wZSk7CisKICAgICBwcml2YXRlOgogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0ID0gbnVsbHB0cikgb3ZlcnJpZGUKICAgICAgICAgewpAQCAtODE2LDkgKzgy
MCwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAg
ZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUgfTsKKyAgICBjbGFzcyBCYXNl
RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBE
b3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RU
eXBlKTsKKworICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudDsgfQorICAgICAgICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Jhc2U7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7Cisg
ICAgICAgIERvdFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5v
ZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RU
eXBlKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudDsgfQpAQCAtODI3LDEwICs4NTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7
IH0KICAgICAgICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CiAKICAgICBjbGFzcyBTcHJlYWRFeHBy
ZXNzaW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKQEAgLTk0Myw5ICs5NjYsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFz
cyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUg
OiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1l
bnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAg
IEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CkBAIC05NTMsOCArOTc2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0g
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUq
IG1fYXJnczsKICAgICB9OwogCkBAIC05OTEsNyArMTAxMiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rp
b25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAg
ICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUq
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRv
SW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKQEAgLTEwMDAsNyArMTAyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNs
YXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxE
b3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CkBAIC0xNDYzLDI4ICsxNDg0LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1f
cmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkRvdE5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CisgICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
KyAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgYm9v
bCBtX3JpZ2h0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlE
b3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVi
bGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgRG90VHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRv
cjsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjI4MSw3ICsy
Mjk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmlu
YWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNs
YXNzIFR5cGUgeyBOYW1lLCBDb21wdXRlZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBl
IHsgTmFtZSwgUHJpdmF0ZU5hbWUsIENvbXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVs
ZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Np
b25Ob2RlKiwgVHlwZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCmluZGV4IGEzOTcxOWViNzRhZWI5NjY2OTcwY2RmM2Q3ODZkNDBkMjkxZTAx
YmIuLjFlMDVlOWY2ZTY3Y2E1YzkxOTJlNjI0MzBkZGI3NjY4YmIxMWE0NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgyNiw2ICs4MjYsOCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVZhcmlhYmxlRGVjbAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAg
ICAgZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsK
KworICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBw
cml2YXRlIG5hbWUgdG8gZGVjbGFyZSBhIHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNw
ZWNJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAo
ZGVjbGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVj
bGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAg
ICAgICAgICAgICAgICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3Ig
YSBMZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTEyODgsNiArMTI5MCw4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURlCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6
RGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAg
ICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9W
YXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKKyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0
dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWls
SWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMg
YSAiLCBkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAg
ICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAn
KScgaW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1h
dGNoKExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQg
fHwga2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5v
dCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlv
biIpOwpAQCAtMjk1Myw2ICsyOTU3LDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFp
bElmRmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJv
cGVydHkgbmFtZSIpOwogICAgICAgICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJS
QUNLRVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJU
KE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4g
dG9rZW4gPSBtX3Rva2VuOworICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVu
dDsKKyAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGlj
LCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAg
IGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0
aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShP
UEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRl
IG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNs
YXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGlj
YXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7Cisg
ICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwg
UHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3Jk
VG9rZW5GbGFnKQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk2OCw4
ICsyOTg1LDEwIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVy
dHksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRp
b25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6Ok1ldGhvZE1vZGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0
dGVyKTsKLSAgICAgICAgICAgIGlmIChpZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewog
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1l
cy5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1
Y3RvciciKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHBy
b3BlcnR5TmFtZXMuY29uc3RydWN0b3JQcml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2
YXRlIGNsYXNzIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAg
IGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVu
dGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOwpAQCAtMzAzMyw2ICszMDUyLDEwIEBA
IHBhcnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9m
ZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9z
aW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2
YXRlQ2xhc3NGaWVsZHMoKSkgeworICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJl
bnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0
ZSBuYW1lcy4KKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZh
dGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZh
dGUgbmFtZXMiKTsKKyAgICB9CiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNy
ZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2Fs
RW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsK
ICAgICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJ
bmZvKTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtMzA1Niw2ICszMDc5LDkgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQ
cm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERl
ZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlw
ZSkgeworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsK
ICAgICAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVk
S2V5d29yZDoKQEAgLTMwOTUsNiArMzEyMSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAg
ICAgICAgIGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBE
ZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNj
b3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVu
dCBkZWZpbmVGaWVsZCA9IGNvbnRleHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwg
aWRlbnQsIGluaXRpYWxpemVyLCB0eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1l
bnQoc291cmNlRWxlbWVudHMsIGRlZmluZUZpZWxkKTsKICAgICB9CkBAIC00Nzk1LDYgKzQ4MjQs
MjIgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlw
ZSosIFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KK2Jvb2wgUGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0
aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGF1dG8gbWF5YmVDdXJyZW50
ID0gcHJpdmF0ZU5hbWVTY29wZSgpKSB7CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBtYXli
ZUN1cnJlbnQudmFsdWUoKTsKKyAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNQcml2YXRlTmFtZSgq
aWRlbnQpKQorICAgICAgICAgICAgY3VycmVudC0+dXNlUHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQogewpAQCAtNDk5Niw4ICs1MDQxLDIxIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
TWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFsRXhw
cmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gZXhwcmVzc2lv
bkVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgbmV4dEV4cGVj
dElkZW50aWZpZXIoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtleXdvcmRzIHwgTGV4ZXJGbGFnczo6
SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CisgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBhdXRvIHR5cGUg
PSBEb3RUeXBlOjpOYW1lOworICAgICAgICAgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgICAgICAg
ICAgZmFpbElmVHJ1ZShiYXNlSXNTdXBlciwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBuYW1lcyBm
cm9tIHN1cGVyIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50U2Nv
cGUoKS0+ZXZhbENvbnRleHRUeXBlKCkgPT0gRXZhbENvbnRleHRUeXBlOjpJbnN0YW5jZUZpZWxk
RXZhbENvbnRleHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxz
ZShjdXJyZW50U2NvcGUoKS0+aGFzUHJpdmF0ZU5hbWUoKmlkZW50KSwgIkNhbm5vdCByZWZlcmVu
Y2UgdW5kZWNsYXJlZCBwcml2YXRlIGZpZWxkICciLCBpZGVudC0+aW1wbCgpLCAiJyIpOworICAg
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50
KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7Cisg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7
CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwg
ZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7
CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gSURFTlQ7CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBw
cm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIp
OwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExv
Y2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHBy
ZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBj
b250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwg
ZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShiYXNlSXNTdXBlciAmJiBjdXJyZW50U2NvcGUoKS0+
aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25T
Y29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAg
ICAgICAgICAgIG5leHQoKTsKQEAgLTUxOTIsNiArNTI1MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlF
eHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAg
ICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNh
bm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkgJyIsIG1fcGFyc2VyU3RhdGUubGFzdElk
ZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJpdmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90IGRl
bGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lLT5pbXBs
KCkpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24s
IGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCks
IGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNTI2
OCw3ICs1MzI3LDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2Vy
PExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBJTlZBTElE
X1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZh
dGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0
ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2VuKCkpOworICAgICAgICByZXR1cm47CisKICAgICBj
YXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3Rl
ZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggZjFkNWQ5Mjg5NDQwMGVhNmI4MWUxZGJkOTcyNzYwYTE2ODEyNGU4
MS4uMmZmYzM2ZGU4MWQwNzE4NzhmMzBmODc3NDA0YzEyNjBkYjZiNWVjNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogICAg
ICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQogICAgICAgICAsIG1faXNFdmFsQ29udGV4dChm
YWxzZSkKICAgICAgICAgLCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3QoZmFsc2UpCisgICAg
ICAgICwgbV9pc1ByaXZhdGVOYW1lU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0NsYXNzU2Nv
cGUoZmFsc2UpCiAgICAgICAgICwgbV9ldmFsQ29udGV4dFR5cGUoRXZhbENvbnRleHRUeXBlOjpO
b25lKQogICAgICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpAQCAtMjkwLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzR2VuZXJhdG9yQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91
bmRhcnk7IH0KICAgICBib29sIGlzQXN5bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNB
c3luY0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0
ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRlTmFtZVNjb3BlOyB9CiAgICAg
Ym9vbCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAg
ICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpA
QCAtMzA5LDggKzMxMSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xh
cmF0aW9ucyA9IHRydWU7CiAgICAgfQogCisgICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUo
KQorICAgIHsKKyAgICAgICAgbV9pc1ByaXZhdGVOYW1lU2NvcGUgPSB0cnVlOworICAgIH0KKwog
ICAgIHZvaWQgc2V0SXNDbGFzc1Njb3BlKCkKICAgICB7CisgICAgICAgIHNldElzUHJpdmF0ZU5h
bWVTY29wZSgpOwogICAgICAgICBtX2lzQ2xhc3NTY29wZSA9IHRydWU7CiAgICAgfQogCkBAIC00
NzUsNyArNDgzLDQ0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxW
YXJpYWJsZXMuY29udGFpbnMoaWRlbnQuZ2V0KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wg
aGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmhhc1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisK
KyAgICB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKFNjb3BlJiBvdGhlcikKKyAgICB7
CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhv
dGhlci5tX2xleGljYWxWYXJpYWJsZXMpOworICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVu
ZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNh
bFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFy
ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVz
LnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xh
cmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFt
ZShpZGVudCk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAg
ICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlv
bjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewog
ICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQYXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTgz
OSw2ICs4ODQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBcmd1bWVudHM7CiAgICAgYm9v
bCBtX2lzRXZhbENvbnRleHQ7CiAgICAgYm9vbCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Q7
CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5hbWVTY29wZTsKICAgICBib29sIG1faXNDbGFzc1Njb3Bl
OwogICAgIEV2YWxDb250ZXh0VHlwZSBtX2V2YWxDb250ZXh0VHlwZTsKICAgICB1bnNpZ25lZCBt
X2NvbnN0cnVjdG9yS2luZDsKQEAgLTkxMCw3ICs5NTYsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNl
cigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNv
dXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25z
dHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9y
PEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2Vk
Tm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VN
b2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7
CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9s
ZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMTE4Myw2ICsxMjI5LDQ0IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAK
KyAgICBPcHRpb25hbDxTY29wZVJlZj4gcHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Nj
b3BlU3RhY2suc2l6ZSgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tp
XS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAo
bV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgcmV0dXJu
IFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgfQorCisgICAgU2NvcGVSZWYgZXhwZWN0UHJpdmF0ZU5hbWVTY29wZSgpCisgICAg
eworICAgICAgICBBU1NFUlQobV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVk
IGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2Nv
cGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAg
ICAgICBBU1NFUlQobV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKTsKKyAgICAg
ICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wg
Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAgICAg
U2NvcGVSZWYgY3VycmVudCA9IGV4cGVjdFByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdW5z
aWduZWQgaSA9IGN1cnJlbnQuaW5kZXgoKSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Nj
b3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAg
ICAgICAgaWYgKCFpKQorICAgICAgICAgICAgcmV0dXJuICFjdXJyZW50LT5oYXNVc2VkQnV0VW5k
ZWNsYXJlZFByaXZhdGVOYW1lcygpOworCisgICAgICAgIGN1cnJlbnQtPmNvcHlVbmRlY2xhcmVk
UHJpdmF0ZU5hbWVzKG1fc2NvcGVTdGFja1tpXSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIFNjb3BlUmVmIGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNh
bFNjb3BlKCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgp
IC0gMTsKQEAgLTE0NjIsNiArMTU0NiwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdG9rZW4ubV90eXBlID09IGV4cGVjdGVkOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBtYXRjaEFuZFVwZGF0ZShKU1Rva2VuVHlwZSBleHBlY3RlZCwgY29uc3QgSlNUb2tl
biYgdG9rZW4pCisgICAgeworICAgICAgICBpZiAobWF0Y2goZXhwZWN0ZWQpKSB7CisgICAgICAg
ICAgICBtX3Rva2VuID0gdG9rZW47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElO
RSBib29sIG1hdGNoQ29udGV4dHVhbEtleXdvcmQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKICAgICB7CkBAIC0xNzEyLDYgKzE4MDYsOCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTaW1wbGVBc3NpZ25tZW50
VGFyZ2V0KFRyZWVCdWlsZGVyJiwgVHJlZUV4cHJlc3Npb24pOwogCisgICAgQUxXQVlTX0lOTElO
RSBib29sIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19J
TkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dB
dXRvbWF0aWNTZW1pY29sb24oKTsKICAgICAKQEAgLTE4MDYsNiArMTkwMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgIEZ1bmN0aW9uUGFyc2VQaGFzZSBmdW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlv
blBhcnNlUGhhc2U6OkJvZHkgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdElkZW50
aWZpZXIgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlv
bk5hbWUgeyBudWxscHRyIH07CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRl
TmFtZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAg
ICAgICBib29sIGlzUGFyc2luZ0NsYXNzRmllbGRJbml0aWFsaXplciB7IGZhbHNlIH07CiAgICAg
fTsKQEAgLTE5NTYsNyArMjA1Myw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBj
b25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQ
YXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZp
ZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0
IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
KQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xOTcxLDYgKzIw
NjgsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0
YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwog
CisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAm
JiB2YXJpYWJsZXNVbmRlclREWi0+cHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJl
bnRTY29wZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5k
ZXJURFotPmNvcHlQcml2YXRlTmFtZXMoY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMo
KSk7CisgICAgfQorCiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFt
ZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAgICBpbnQgbGluZU51
bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKQEAgLTIwNTUsNiArMjE1Nyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVy
aXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250
ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVi
dWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKKyAgICBjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsCiAgICAgY29u
c3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IG51bGxw
dHIsCiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKQEAgLTIw
NjcsNyArMjE3MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChzb3VyY2UucHJvdmlk
ZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4g
cGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBw
YXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVs
RnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBl
dmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5h
bWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6
OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZp
ZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+
KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNp
bmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwg
dmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAo
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAg
aWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTIw
ODAsNyArMjE4Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9
IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5F
eGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNlIGEgOC1i
aXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291
cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBl
ckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBl
LCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAg
cmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUs
IGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2lu
Z0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7
CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwg
cGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZh
bCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVy
VERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBh
cnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGUwZWJlYWY4NWZkNzEyMzcxN2Y4
NzcxMTI3ZjcxOTIzZmZlNjc0OC4uN2IzYzFlYzNiN2Y2YTZiMTFiZmM0NWY0YmM5MWQwNDgxMmY0
Y2QyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tl
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBA
IC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9VQkxFLAogICAgIEJJ
R0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJTkcsCiAgICAgVEVN
UExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAppbmRleCBmOWJiMDdiNGRkNDA4OWM3YjFlM2EwZjNmNTk1NDFiMzE3YTUyZDdm
Li5lOWI2ZDdlOTQ2NzQ0ZTFhMDhkYzFjYzI4YTQ2YjcxMzc3M2M5ODRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHBy
LCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlzRXhwciwg
TnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKICAgICAg
ICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwgQnJhY2tl
dEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0
RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAorICAgICAgICBOZXdF
eHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENo
YWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHByLCBBc3NpZ25tZW50
RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRlcmFsRXhwciwg
QmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFycmF5RGVzdHJ1
Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQsCkBAIC0x
ODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4o
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJu
IE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2ws
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBl
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQor
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/IFByaXZhdGVE
b3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVu
dGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5
bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7
IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpAQCAtNDAz
LDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24oRXhwcmVzc2lvblR5
cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHByIHx8IHR5
cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAgICByZXR1cm4gdHlw
ZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBQcml2YXRlRG90
RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJvb2wgaXNQcml2YXRl
TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBl
ID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRp
b24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2Y2IzMTExYjBm
ZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3NDA2OTZlMjY3
Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPShjb25z
dCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9IG90aGVyLm1fbWFw
OworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1
cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkK
KyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAqdGhpczsKK30KKwog
dm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1cmVkSWZEZWZpbmVk
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0
byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgwLDYgKzkwLDcgQEAg
dm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVy
KQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEuc3dh
cChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJr
VmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNv
bXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQKICAgICA6
IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkpCiB7CiAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZW52KQog
ICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgpLCBwYWlyLnZhbHVl
IH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJlYTE5OTJjNTIu
LjBjMWQwYWMzZWJhZGNhOGVjMzhhNmM4OGVhNjMxMzliNDkwYTMzNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC0yNyw2
ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJh
bmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1YmxpYzoKICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElORSBib29s
IGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElz
Q2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRz
IHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFyYW1ldGVy
OyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlk
YXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0
ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMg
Jj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNJbXBv
cnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwgNywKICAg
ICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5n
Q2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRl
ID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKICAgICB9OwogICAg
IHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUgQEAgc3RydWN0IFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworcHVibGljOgorICAg
IFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMgPSB0cmFpdHM7
IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KKworICAgIHVpbnQx
Nl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVudW0gVHJhaXRzIDog
dWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAgIElzRGVjbGFyZWQg
PSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07
Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFBy
aXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9u
ID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+
IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRl
TmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0gZGVmYXVsdDsKLSAg
ICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikgPSBkZWZh
dWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYp
ID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBv
cGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7CisgICAgVmFyaWFibGVF
bnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9u
bWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQorICAg
ICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJl
ZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJlRGF0YSkpCisgICAg
eworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAgICAgICAsIG1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAgICAg
LCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVF
bnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51bGxwdHIpCisgICAg
eworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9y
IGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFw
OjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAtOTksNyArMTQ0LDgg
QEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBj
b25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRS
ZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsg
cmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7
IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0gICAgQUxX
QVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9
CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
c2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lO
TElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0KICAgICBB
TFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9CkBA
IC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVy
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisgICAgdXNpbmcgUHJp
dmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRv
cj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5h
bWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVzZVByaXZh
dGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0ZU5hbWUoaWRl
bnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5h
bWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7Cisg
ICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkp
OworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0byBlbnRyeSA9IFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1l
KCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0
dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKyAg
ICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJp
dmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNVc2VkKCk7Cisg
ICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZpbmQoaWRlbnRpZmll
ciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFBy
aXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAgICAvLyBV
c2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQgQVNTRVJU
IGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKHByaXZhdGVOYW1l
c1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5k
KCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0ZU5hbWVzU2l6
ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUo
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmlyb25tZW50JiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICAgICAgb3Ro
ZXIubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJl
RGF0YT4oKTsKKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAg
aWYgKCEoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKSkK
KyAgICAgICAgICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRk
KGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKFZh
cmlhYmxlRW52aXJvbm1lbnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQgYnkgdGhl
IFBhcnNlciB0byB0cmFuc2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFu
CisgICAgICAgIC8vIGlubmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBv
bmUsIGluIGNhc2UgYSBQTkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSBzb3Vy
Y2UgY29kZSB0aGFuIGl0IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXpl
KCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkg
eworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFs
dWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRPckFkZFByaXZh
dGVOYW1lKGVudHJ5LmtleS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9T
VFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAgICAgICAg
UmFyZURhdGEoUmFyZURhdGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2YXRlTmFtZXMo
V1RGTW92ZShvdGhlci5tX3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAgICAgfQorICAg
ICAgICBSYXJlRGF0YShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUmFyZURh
dGEmIG9wZXJhdG9yPShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUHJpdmF0
ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAgICAgYm9v
bCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVOYW1lRW50
cnkmIGdldE9yQWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisgICAgewor
ICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjpt
YWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJl
dHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5hbWVFbnRy
eSgwKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJp
YWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENvbXBh
Y3RWYXJpYWJsZUVudmlyb25tZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcAppbmRleCBiZjM3OWFkOThiYzM3NzlmNWE5MGFjMmVhOGY0ZTliZGNk
M2NhOTU2Li5jM2FlM2M2YjVjNTJhY2U0ZjYwZjNlNWQ2OTM1ZmQyMDU5MGU2ZDEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04NTcsNiAr
ODU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5jb2RlKGVuY29k
ZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNvZGVBc1B0
cihEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IXRoaXMtPmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8
VD4oKS0+ZGVjb2RlKGRlY29kZXIpOworICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNpbXBsZUp1
bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IHsK
QEAgLTEwMDQsMjMgKzEwMTAsNDUgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyIDogMTsKIH07CiAKK2NsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6
UmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAg
ICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFt
ZXMpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxl
RW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1f
cHJpdmF0ZU5hbWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVu
aXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8
VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gs
IEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlI
YXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52
aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKIHB1
YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBlbnYpCiAgICAgewogICAgICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0g
ZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmVuY29kZShlbmNvZGVy
LCBlbnYubV9tYXApOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBlbnYubV9y
YXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KSBjb25zdAogICAgIHsKICAgICAgICAgZW52Lm1f
aXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBt
X21hcC5kZWNvZGUoZGVjb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRh
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlx
dWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVE
YXRhLT5kZWNvZGUoZGVjb2RlciwgKmVudi5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQogICAgIH0K
IAogcHJpdmF0ZToKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgQ2FjaGVk
SGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJp
bmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJs
ZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBt
X21hcDsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhPiBt
X3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQg
OiBwdWJsaWMgQ2FjaGVkT2JqZWN0PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50PiB7CkBAIC0x
MTQ4LDYgKzExNzYsMjIgQEAgcHJpdmF0ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7CiB9OwogCitj
bGFzcyBDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxTeW1i
b2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRh
JiByYXJlRGF0YSkKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVy
LCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRh
KSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJh
cmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFz
aFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVw
SGFzaD4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1
YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCkBAIC0x
MTU4LDYgKzEyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmVzdGVkTGV4aWNhbFNjb3BlID0g
c3ltYm9sVGFibGUubV9uZXN0ZWRMZXhpY2FsU2NvcGU7CiAgICAgICAgIG1fc2NvcGVUeXBlID0g
c3ltYm9sVGFibGUubV9zY29wZVR5cGU7CiAgICAgICAgIG1fYXJndW1lbnRzLmVuY29kZShlbmNv
ZGVyLCBzeW1ib2xUYWJsZS5tX2FyZ3VtZW50cy5nZXQoKSk7CisgICAgICAgIG1fcmFyZURhdGEu
ZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAog
ICAgIFN5bWJvbFRhYmxlKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTExNzEs
NiArMTIxNiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBzY29w
ZWRBcmd1bWVudHNUYWJsZSA9IG1fYXJndW1lbnRzLmRlY29kZShkZWNvZGVyKTsKICAgICAgICAg
aWYgKHNjb3BlZEFyZ3VtZW50c1RhYmxlKQogICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fYXJn
dW1lbnRzLnNldChkZWNvZGVyLnZtKCksIHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1bWVudHNUYWJs
ZSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN5
bWJvbFRhYmxlLT5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlOjpTeW1i
b2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29k
ZXIsICpzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1
cm4gc3ltYm9sVGFibGU7CiAgICAgfQogCkBAIC0xMTgxLDYgKzEyMzEsNyBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25lZCBtX3Nj
b3BlVHlwZSA6IDM7CiAgICAgQ2FjaGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBt
X2FyZ3VtZW50czsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YT4gbV9y
YXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA5ZTE3MmI2YWVhNzRiMDYyZGU5ZmZlZjhk
YTU2ZDQ5MzRmOTRkNTU2Li5lNzJiZDM1ZjE1YjdmMzEyYWE0YTFiZTJjMTIyZGQxY2E3MDNjMjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJs
b2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICB0eXBlZGVmIHR5cGVuYW1l
IENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAg
ICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4ZWN1dGFi
bGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290
Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElk
ZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwg
c2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5k
OjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgbnVs
bHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRl
bnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJp
YWJsZXNVbmRlclREWiwgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKICAgICBp
ZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDYyYzBk
NTk1NzNhNmE2Mzk5MDkzOWYxY2VmOTRkOTE5ZDdkNzNjNmUuLjdlZTcxM2M5YzRhMjU5MmZmMzMw
ZjY4ZjVhNjY0NmVkM2U4MDlhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQo
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpFX1BS
SVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1l
IyNQcml2YXRlTmFtZSgpKQogI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUj
I1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjU3ltYm9sKCkpCisjZGVmaW5lIElOSVRJQUxJ
WkVfUFJJVkFURV9GSUVMRF9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICIjIiAjbmFtZSkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21t
b25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00NSw2ICs0
Niw3IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQog
ICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKKyAgICBKU0NfQ09NTU9OX0lERU5U
SUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKaW5kZXggZDE2NGJhNGJlZjhiNGVlZmY5MzE3MzdiMzk1M2YzNGZlMTIzMmEyOC4u
OWRmYTc1OWQ4MTQ5NTUxYjVhMDY0NWEwNWU2MGZmMmE4Y2NkZGU3OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMDUsNiAr
MjA1LDkgQEAKICAgICBtYWNybyh3cml0YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAKKyNkZWZp
bmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQobWFjcm8pIFwKKyAg
ICBtYWNybyhjb25zdHJ1Y3RvcikKKwogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VB
Q0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGF3YWl0KSBcCiAgICAgbWFjcm8oYnJlYWsp
IFwKQEAgLTMxOSw2ICszMjIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19DT01N
T05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElG
SUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYgSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAogCisj
ZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkg
Y29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlRmllbGQ7CisgICAgICAgIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJ
VkFURV9GSUVMRF9HTE9CQUwpCisjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRF
X0ZJRUxEX0dMT0JBTAorCiAgICAgICAgIC8vIENhbGxlcnMgb2YgdGhpcyBtZXRob2Qgc2hvdWxk
IG1ha2Ugc3VyZSB0aGF0IGlkZW50aWZpZXJzIGdpdmVuIHRvIHRoaXMgbWV0aG9kIAogICAgICAg
ICAvLyBzdXJ2aXZlIHRoZSBsaWZldGltZSBvZiBDb21tb25JZGVudGlmaWVycyBhbmQgcmVsYXRl
ZCBWTS4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRFeHRlcm5hbE5hbWUo
Y29uc3QgSWRlbnRpZmllciYgcHVibGljTmFtZSwgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKaW5kZXggMzhmMGM5MzJmMWViYTNkOGRkYjA1MzFmNmE3ZDU0NWNkNDJmYmExYS4uNDA0
MGMxYmQzNDMwNjgzMmQzYjI0OTY1NWY3ZWFjMDk5N2VmMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xMzA0LDYgKzEz
MDQsNzIgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQog
ICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHNsb3QpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0
KQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlW
YWxEaXJlY3Q+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jh
c2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEdFVF9DKGJ5dGVjb2RlLm1f
cHJvcGVydHkpLmpzVmFsdWUoKTsKKworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgp
ICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVy
ZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlmIChKU0Nl
bGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICBS
ZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbVN0cmluZyA9IGFzU3RyaW5nKHN1YnNj
cmlwdCktPnRvRXhpc3RpbmdBdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJpbmcpIHsK
KyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCkt
PmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21TdHJpbmcuZ2V0
KCkpKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIo
KSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAg
QXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisK
KyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgaWYgKGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIFJFVFVS
Tl9QUk9GSUxFRChhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkp
KTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKKyAgICAgICAg
fSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5j
YW5HZXRJbmRleFF1aWNrbHkoaSkpCisgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKG9i
amVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKworICAgICAgICAgICAgYm9vbCBza2lwTWFya2lu
Z091dE9mQm91bmRzID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5n
VHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA8IG9iamVjdC0+YnV0dGVyZmx5KCkt
PnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlz
IHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CisgICAgICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAorICAg
ICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKKyAgICAgICAgICAgICAgICBza2lwTWFya2luZ091dE9mQm91bmRzID0gZ2xvYmFsT2JqZWN0
LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSAmJiBnbG9i
YWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCFza2lwTWFya2luZ091dE9mQm91bmRzICYmICFDb21tb25TbG93UGF0
aHM6OmNhbkFjY2Vzc0FyZ3VtZW50SW5kZXhRdWlja2x5KCpvYmplY3QsIGkpKQorICAgICAgICAg
ICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIFJFVFVSTl9QUk9GSUxFRChqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBiYXNlVmFs
dWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQ
VElPTigpOworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9i
YWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworCisgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJv
cGVydHkpOworCisgICAgYm9vbCBmb3VuZCA9IChiYXNlVmFsdWUuYXNDZWxsKCktPmlzUHJveHko
KSAmJiBwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgID8gSlNPYmplY3Q6OmdldE93
blByb3BlcnR5U2xvdChhc09iamVjdChiYXNlVmFsdWUpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFm
b3VuZCAmJiBwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgIFRIUk9XKGNyZWF0ZUlu
dmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgIFJFVFVSTl9QUk9GSUxF
RChmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkgOiBqc1VuZGVm
aW5lZCgpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3Ro
aXMpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYTgyNDhkNDUyNGEzYzVkZjA5ZGFmNjQ5NzQ2NmI5NzI1
MDMzMjU2Zi4uN2MxZDgyM2FhNmExMTFjYTM0N2FiNDFhMmEwOWExZDcxODI4ODVmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI3
Miw2ICsyNzIsNyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3lu
Y19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVz
dCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7
CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRl
eCBhZjk4ZDRkMjdiNDFkMTQzMzZhMDIxOGU4MGI3NmNlNGQ4YjQwYjcyLi5kODFlNTg2NjQxYmQ2
ZmMyYmFjZDBmYjQxNzk5MWNiZjE1ZjU5YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI5LDYgKzMyOSwxNiBAQCBK
U09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fubm90IGFjY2Vz
cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIpOwogfQogCitKU09iamVjdCogY3JlYXRlSW52YWxp
ZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBy
ZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFj
Y2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBl
Tm90aGluZyk7Cit9CisKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBw
cml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQor
CiBFeGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3Qp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aAppbmRleCAzNzZmMmFmNDBkODQ2NDcyNjM0NGM3MzczMjMyZTFjZDVhOTY4ZGY0Li5hYzgxZDJi
YmE5Mjg5OGZkYjY0NDFjN2JkMjJjMDEzNjM0YWYxZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC01Myw2ICs1Myw4IEBAIEpT
T2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VW
YWx1ZU5vdEZ1bmN0aW9uKEpTR2xvCiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJy
b3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rp
b25FcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUVycm9y
Rm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
KTsKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVj
dCopOworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxP
YmplY3QqKTsKIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVt
b3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTlhNDhmYjkzMGM1
YmYwZjM1NTFlM2YzNDZkNjRjODc1NmU0NTYzMS4uYzZkN2Q4NmRiOTZjNTM1NDAwNTUxMmMxYzdi
NjkzZmRjOWU4MmQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtMzA5LDYgKzMwOSwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsTwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoKSkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y3JlYXRlUHJpdmF0ZVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRl
TnVsbFN5bWJvbCgpLmdldCgpKSk7Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKQEAgLTExOTMsNiArMTE5OSwxMSBA
QCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0g
ZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlv
bjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAw
LCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KSk7CiAgICAgICAgIH0pOwogCisg
ICAgLy8gUHJpdmF0ZVN5bWJvbHMgLyBQcml2YXRlTmFtZXMKKyAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRl
U3ltYm9sKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7
CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0
PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRl
U3ltYm9sKSk7CisgICAgICAgIH0pOworCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFC
TEUoV0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkKICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1p
bmcgQVBJCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlu
a1RpbWVDb25zdGFudDo6d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggYjNjMjcyMDIyODA2YjgxMTQzNTdk
ODFkZTlmM2I1ZmMxMDM1NGQ5YS4uOTI3NDA2NGVmNWM5N2U1OGRkMjA1NmJmNWZmNmY3ZjcwZmZm
MzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMz
OSw2ICszMzksMTAgQEAgdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVy
VERaKEpTU2NvcGUqIHNjb3BlLCBWYXJpYWJsZUVudmlyb25tZW4KICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRv
IGVuZCA9IHN5bWJvbFRhYmxlLT5lbmQobG9ja2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdp
bihsb2NrZXIpOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChp
dGVyLT5rZXkpOworICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7
CisgICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMo
KSkKKyAgICAgICAgICAgICAgICByZXN1bHQudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAg
ICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCA1NDIwZDJhNzQ5NjQwNTI4MTg0ZmZkMThhNzQ5NTFkODJiN2Y2MzIzLi44
NjVjODY4N2ZiZTgyNjQwMjVkYjBiYzFkNWI3YzBhY2Y2ODRhOGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUwNSw2ICs1MDUsNyBAQCBjb25z
dGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYo
Qm9vbCwgdXNlUHVibGljQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBw
YXJzZXIgd2lsbCB1bmRlcnN0YW5kIHB1YmxpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4i
KSBcCiAgICAgdihCb29sLCB1c2VMb2dpY2FsQXNzaWdubWVudE9wZXJhdG9ycywgZmFsc2UsIE5v
cm1hbCwgIkVuYWJsZSBzdXBwb3J0IGZvciBcP1w/PSwgfHw9LCBhbmQgJiY9IGxvZ2ljYWwgYXNz
aWdubWVudCBvcGVyYXRvcnMuIikgXAogICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdFeGVjdXRh
YmxlSXNsYW5kQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgIkZvciB0aGUgYXJtNjQgRXhlY3V0
YWJsZUFsbG9jYXRvciwgaWYgdHJ1ZSwgc2VsZWN0IHdoaWNoIHJlZ2lvbiB0byB1c2UgcmFuZG9t
bHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nIHRoYXQganVtcCBpc2xhbmRzIHdvcmsuIikg
XAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNp
ZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRp
b24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5k
ZXggYmM0OWRjOTgyYzczMjgyYmVkZWIyYjFkZWZjNzY3YTg1YWIzNWFmOS4uNzc5MGNmNTczZDI2
Zjk1MmY0OTk5YTUzZjNjMjc1ZDY3NTFhM2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTgzLDYgKzE4MywxMSBAQCBTeW1ib2xUYWJs
ZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgICAgIGZvciAo
OyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0
YS0+bV91bmlxdWVUeXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAg
ICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CmluZGV4IGUyMzRkMzE0YzY5ZWQyZDExMTMyMzkxNGJhMjdkM2Q5MzE1NTI2NzYuLjMxZjgxZmFl
MDJmYjIwMWQzMjE4YmIwZmI0YzUyZDIyMWY0Y2Q2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldh
dGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1MCw2ICs0NTAs
OCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVu
dHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7CisgICAgdHlw
ZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9y
PiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCkBAIC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIHN0ZDo6
Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZh
dGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9y
UmFuZ2UgcHJpdmF0ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0
b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hl
Y2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVzKCkpOworICAgICAg
ICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVn
aW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIHZv
aWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVS
YXJlRGF0YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQo
a2V5KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lkIHNl
dChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRy
eSYmIGVudHJ5KQogICAgIHsKQEAgLTcyOSwxOCArNzQ5LDIxIEBAIHByaXZhdGU6CiAgICAgU2Nv
cGVPZmZzZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJl
bnRKU0xvY2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RF
dmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1m
dW5jdGlvbiBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBT
Y29wZVR5cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1hcCBt
X3VuaXF1ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJp
YWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQcml2
YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRlOgorICAgIHVuc2ln
bmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNh
bFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25lZCBt
X3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJv
bFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVkQXJn
dW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNjkxMmIxOThhZDQyYTc3MzJhZjIwMzk2N2ExNmUw
Y2Q4MjcxNTgzLi40MGU5NTA3OTkwYzFhOTBiYjMzYWYxMmNlNjliZGRlZjJhOTE1OTI4IDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDIwLTA0LTIxICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRzIHVw
b24gdGhlIGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9mIHBy
aXZhdGUKKyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmll
bGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzOgorICAgICAgICAq
IHN0cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA0LTIxICBQYXVs
byBNYXRvcyAgPHBtYXRvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtBUk12N11bRVdTXSBzdHJl
c3MvY2hlY2stc3RhY2stb3ZlcmZsb3ctYmVmb3JlLXZhbHVlLXByb2ZpbGluZy1hcmd1bWVudHMu
anMgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtYXMtZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1hcy1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGExMTYzZTE2N2VkMGQ2YzVmNjc2NTZkMDFi
MzRkODhjYjc0ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKQEAgLTAsMCArMSwxOCBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20gPSAo
KSA9PiAyNTsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAg
ICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAyNSk7CisKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRl
Y29kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRl
Y29kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMmE0ZjQzNTRmODk3ZjExMzc0MDg3MTI2MDQ2YzZmMWRmZDNl
N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtY2FjaGVkLWJ5dGVjb2RlLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCBydW5CeXRlY29kZUNh
Y2hlKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEs
IGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI2YgPSAz
OworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisK
K2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAzKTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjFm
NzE4ZDk3NDI3MGFjOGExOWU1ZjdiZjA1MjAwZGViOTM3NmNkCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanMKQEAgLTAsMCAr
MSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikK
KworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3NlcnRBcnJheUNvbnRlbnQoYSwg
ZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJTaXplIG9mIGFycmF5cyBkb2Vz
bid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQorICAg
ICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9ICIgKyBhW2ldICsgIiBidXQg
ZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJyID0gW107CisKK2NsYXNzIFBy
b3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJveHko
dGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBwcm9wKSB7CisgICAgICAg
ICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9ialtwcm9w
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFzcyBUZXN0IGV4
dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjZiA9IDM7CisgICAgbWV0aG9kKCkgeworICAgICAgICBy
ZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3IFRlc3QoKTsKK2xldCByID0g
dC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMgYnV0IGdvdDogIiArIHIpOwor
Cithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
OWQ4NjIxNjAxZDVkZTM0YTQyODM0NmQ1MWNjZjgyMmZiZjU2MGE5Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanMKQEAg
LTAsMCArMSwyOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsK
K30KKworbGV0IGtsYXNzU291cmNlID0gYAordmFyIEMgPSBjbGFzcyB7CisgICAgYXNzZXJ0T3V0
T2ZMaW5lVmFsdWUoKSB7CisgICAgICAgIGFzc2VydCh0aGlzLiNmMjAwLCAiZm9vIik7CisgICAg
fQorYDsKKworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDsgaSsrKSB7CisgICAga2xhc3NTb3Vy
Y2UgKz0gIiAgICAjZiIgKyBpICsgIjtcbiI7Cit9CisKK2tsYXNzU291cmNlICs9ICIgICAgI2Yy
MDAgPSBcImZvb1wiO1xufSI7CisKK2V2YWwoa2xhc3NTb3VyY2UpOworCitmb3IgKGxldCBpID0g
MDsgaSA8IDI7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLmFzc2VydE91dE9m
TGluZVZhbHVlKCk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXVzZS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtdXNlLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3ODgwNTdiMWJmNDk1NTBhMGU4ZjNkOThhOTQx
YTgzN2NmMTFjMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXVzZS1ldmFsLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIsICItLXVzZVB1YmxpY0NsYXNzRmllbGRzPTEi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgbWVzc2FnZSkgeworICAgIGlmICghYSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworfQorCitsZXQgaW5zdCA9IG5ldyBjbGFzcyB7Cisg
IGEgPSBldmFsKCIoaSkgPT4gaS4jYiIpOworCisgICNiID0ge307Cit9OworCitpbnN0LmEoaW5z
dCkueCA9IDE7Cithc3NlcnQoaW5zdC5hKGluc3QpLnggPT0gMSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwppbmRleCBlNTE2Mjk5YTc5MmM2Mzg0
Yjg0MmM2OTdmNDFmY2VkN2Y1Y2ZmZmNmLi41MDY5YTdkYTVhMTU1ZGNjMDYwNGU0NjMyYjkwZTgz
MDkzOWZlODM2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNz
LWluc3RhbmNlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5z
dGFuY2UuanMKQEAgLTEsMTEgKzEsMTUgQEAKLS8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJs
aWNDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJsaWNDbGFz
c0ZpZWxkcz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQogCiBjbGFzcyBB
IHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7CisgICAgI2QgPSAxOwogICAg
IGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAgICNmID0gZnVuY3Rpb24oKSB7IHJl
dHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZhbCgidHJ1ZSIpOworICAgICNp
ID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJpdmF0ZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjE2MzM2MmZhYTYzZTQwNTYyNWQxZmVjZWNlOTliY2QyNjZiOWVhOQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMK
QEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdl
dEJ5VmFsRGlyZWN0IHNob3VsZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZl
IHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3ID0gZmFsc2U7Citj
bGFzcyBDIHsKKyAgICAjeCA9IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkg
cmV0dXJuIHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0
aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFn
XSgpIHsgcmV0dXJuICJ3aXRoICN4IjsgfQorfQorCit0cnkgeworICAgIGZvciAoaSA9IDA7IGkg
PCA1MDsgKytpKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQg
PSBDLngoYyk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGkpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke2N9KSB0byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1
bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAo
aSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93
IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHku
anMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3Bl
cnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE5ZDhlMjE5MjNmMjAyNGQwMjIwMmYzYTJlMTZiYjQ5ZTFmOTVi
M2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNz
LWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogKGV4cGVjdGVkRXJyb3IsIGZ1bmN0
b3IpID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJv
cikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4cGVjdGVkRXJyb3IubmFtZSArICIgYnV0IHRocm93czogIiArIGUubmFtZSk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAg
Y2xhc3MgQmFzZSB7CisgICAgICAgIFt7fS4jeF0gPSAxOyAKKyAgICAgICAgI3ggPSAiZm9vIjsK
KyAgICB9Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJl
Y3QtYWRkcHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHBy
aXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA0ZGU2ZjUyNTI5MjA3MmExNmE1MDQ4NTA5MDE1ZWNhNWI5
OWFlYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0
LWFkZHByaXZhdGUuanMKQEAgLTAsMCArMSwzNCBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5EZWZhdWx0KCItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8v
IEdQVkQgd2l0aCAiUHV0QnlWYWxUaHJvd0lmRXhpc3RzIiBzaG91bGQgdGhyb3cgaWYgb3Zlcndy
aXRpbmcgYW4gYWxyZWFkeSBleGlzdGluZyBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhy
ZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1
cm4gaSA8IDI5ID8gdGhpcyA6IGM7CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgewor
ICAgICN4ID0gaSsrOworICAgIHgoKSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcg
Q0M7Cit0cnkgeworICAgIGZvciAobGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBs
ZXQgeCA9IG5ldyBDQzsKKyAgICAgICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4Lngo
KX1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChp
ICE9PSAzMCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cg
ZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQyM2Mz
ZTRjMmQ5NzY3NTQ3NGY3ZGQ3MmM0YzMzY2I4NDJhYTlhNAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwz
MSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVu
Tm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0
QnlWYWxQcml2YXRlTmFtZSIgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3Rl
bnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsK
KyAgICAjeDsKKyAgICBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIGkgPCAzMCA/IHRoaXMgOiB7IFtT
eW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91dCAjeCIgfTsgfQorICAgIHN0YXRpYyB4KG9iaikg
eyByZXR1cm4gb2JqLiN4ID0gaSsrOyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkg
eyByZXR1cm4gIndpdGggI3giIH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9iaiA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0
ID0gQy54KG9iaik7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGopCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke29ian0pIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAk
e3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAg
IC8vIHJ2YWwgb2YgQXNzaWdubWVudEV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGJlZm9yZSBQcml2
YXRlRmllbGRGaW5kKCN4LCBscmVmKSBpcyBwZXJmb3JtZWQsCisgICAgLy8gdGh1cyBgaWAgaGFz
IGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4KKyAgICBpZiAoaSAhPT0gMzEgfHwgZS5jb25zdHJ1
Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAo
IXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA2YjVmOTE4YjZlMWVm
MWJjYzk1ZTY5NmY4ZWFjOWQzOWY4ZmRhMWZiLi5jN2Y1M2NiMzIzZWM2OTMzOTVhZjRmOTg2ZjY3
MGQ1ZGEzZWU0ZWY1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysr
IGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoKICAg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ6IHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQKICAgV2Vh
a1JlZjogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzogdXNlUHVibGljQ2xhc3NG
aWVsZHMKKyAgY2xhc3MtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcwogICBs
b2dpY2FsLWFzc2lnbm1lbnQtb3BlcmF0b3JzOiB1c2VMb2dpY2FsQXNzaWdubWVudE9wZXJhdG9y
cwogc2tpcDoKICAgZmVhdHVyZXM6CkBAIC0xMyw3ICsxNCw2IEBAIHNraXA6CiAgICAgIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAt
bG9va2JlaGluZAogCi0gICAgLSBjbGFzcy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0
aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xh
c3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397231</attachid>
            <date>2020-04-22 12:12:09 -0700</date>
            <delta_ts>2020-04-30 13:13:30 -0700</delta_ts>
            <desc>Patch v17</desc>
            <filename>bug-206431-20200422151206.patch</filename>
            <type>text/plain</type>
            <size>185236</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NWM1NWMzNjdiMzE5MjU2YzhmNzJhYTUxMTE5ZmM2Y2FmOGFhYzA2Li4wZGUxYmY0YjE4MTMzYjE5
ZWE1ZmVjYTAwYWE5YjUyOWJiMTE0NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTUgQEAKKzIwMjAtMDQtMjIgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVy
ZW5jZXMgYXJlCisgICAgICAgIHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Ig
bm90IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAg
ICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRo
ZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0
aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUg
ZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVk
IGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVk
IGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5
IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAg
ICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBs
aWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAg
IDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAg
ICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxE
b05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAs
IDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHBy
b2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAg
ICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xv
YmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNj
b3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxO
b3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNl
aXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZh
dGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJs
eSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlW
YWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRk
ZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgSlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29k
ZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdz
OjpjcmVhdGVEaXJlY3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2
YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRl
RmllbGRQdXQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc0RpcmVjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHV0QnlWYWxGbGFnczo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkQWNjZXNzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRQdXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFkZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OlB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAqIGJ5dGVj
b2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5v
ZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9k
ZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNs
YXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgor
ICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklU
UHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KToKKyAgICAgICAg
KEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXRQcml2YXRlRmllbGQpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjphcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1By
aXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAg
ICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPExDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VUNoYXI+OjpwYXJzZUlkZW50aWZp
ZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVy
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4V2l0aG91dENsZWFyaW5nTGlu
ZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAg
ICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkRvdEFj
Y2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxs
RG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAg
ICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAgICAgIChKU0M6OlJl
YWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4
aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAo
SlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRpb24gY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2Rl
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OnR5cGUgY29u
c3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlTmFtZSBjb25zdCk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6
c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1ByaXZhdGVOYW1lKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6Omhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cHJpdmF0ZU5h
bWVTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZXhwZWN0UHJpdmF0ZU5hbWVTY29wZSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVy
U2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Om1hdGNoQW5kVXBkYXRlKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4
Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEb3RBY2Nlc3Mp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAg
ICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJv
bm1lbnQ6OnN3YXApOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6
Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQ
cml2YXRlTmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eTo6c2V0SXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OlBy
aXZhdGVOYW1lRW50cnkpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1VzZWQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0RlY2xhcmVkIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNVc2VkKToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNEZWNsYXJlZCk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVOYW1lRW50cnk6OmJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVu
dHJ5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjptYXBT
aXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6dXNlUHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXNT
aXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6aGFzUHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpjb3B5UHJpdmF0ZU5h
bWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVj
bGFyZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpnZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFzUHRyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjplbmNvZGUp
OgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmRlY29k
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmVuY29k
ZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY29kZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmVuY29kZSk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRTeW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVD
YWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAg
IChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgor
ICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDQtMjIgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBKU0JpZ0ludCBpbmMg
b3BlcmF0aW9uIGRvZXMgbm90IHByb2R1Y2UgcmlnaHQgSGVhcEJpZ0ludCB6ZXJvCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjJiZjFhMzE4ZmYxZWQ3OTY2NzJiZTNjOWU1
MmFjZjI2YjY3YjY3Yi4uZjU3MjM3MjU5YjkyNDIwYWFjYjZiYmMxNGJiNWRmYjhjYTVkZjliNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQwLDYgKzU0MCw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUv
T3BlcmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29k
ZS9QdXRCeUlkRmxhZ3MuaAorICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAgIGJ5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5
dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIw
NDZiMDhhNGEzMWU1NmFhZjQxMGI0NDRkOWM4MjdiYWVkYjQ4NjMuLjcwNWY1OWE0YWM0MDExMzUw
MDg2Y2UzZGY4OWFhYzQwNjRmYTkyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMjUxLDYgKzEyNTEsNyBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJ
VC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRC
ODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFy
clBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2NzZDNkU4MjM0
NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlW
YWxGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0Iy
QjlBIC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMw
Q0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMTksNiArNDEyMCw4IEBA
CiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gWWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBw
YXRoID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU3
MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYx
QjE0MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsg
cGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklU
NjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRl
TmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQwMSw2ICs4NDA0LDggQEAKIAkJCQkwRjkz
MzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3
MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgx
OEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCisJCQkJODY3NkM2RTcyMzQ2
NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAorCQkJCTg2NzZDNkU2MjM0NjQ1
MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAw
RDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyog
UmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8q
IFJlY29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTg5NjksNyArODk3NCw2IEBACiAJCQkJMEZFQzg1
OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpclZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMgLyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIxREI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29w
ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmli
YmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxs
b2NhdGlvbkZhaWx1cmVNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFG
MDAzOEUyQ0YgLyogQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0
RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9yRm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE1
Myw2ICsxMDE1Nyw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRG
bGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1
dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY3NkM2RTgyMzQ2NDY3
RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMENENEMy
MTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMjAzLDYgKzEwMjA4LDcgQEAKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBE
MzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1
MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJn
dW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyog
U2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNkUxODlCMDBBQTAw
NjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKaW5kZXggMGY0YzUwZGYzNjdjNjU2MDhhMGFmNjI4M2EwZGM1MjZhOTQxMGE1
ZS4uNTgxMTRhMTMyZjBmMmEwNDRkNzA2ZTZjZTg0MTczZmE4Yjc0YWU2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4LDYgKzI2OCw3IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFj
Y2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCitieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVj
ZVdoaXRlc3BhY2UuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAxMzYyNWY1YmE4OTlj
Y2RlYmI1NjM1NDg3ZmRjMTUyNDZlNzJiODIyLi4wZjI1MzFjMzA2ODJkMWI4M2ZiMjZhOGQyMWU2
MmRlZTQ3ZDcwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCkBAIC0xNjksNyArMTY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8o
bWV0YSkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsKSBc
CiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKSBcCi0g
ICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSAKKyAgICBtYWNybyhpbnN0YW5jZUZp
ZWxkSW5pdGlhbGl6ZXIpIFwKKyAgICBtYWNybyhjcmVhdGVQcml2YXRlU3ltYm9sKQogCiBuYW1l
c3BhY2UgU3ltYm9scyB7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUyhu
YW1lKSBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1w
bCBuYW1lIyNTeW1ib2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYgppbmRleCA0OTg1NzkwMzMwY2M5ZTUzMjliMzFhZWU3YzI2YmNjMTJlNDljMTM4
Li45YzA5NzJjMTNlY2Q3ZmUyZjA5ZjhjMzFjNjg1MTUzMGM5ZGY1OWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ5LDYgKzQ5LDcg
QEAgdHlwZXMgWwogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlP
ZmZzZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKKyAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVz
b2x2ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NDksNiAr
NTUwLDE3IEBAIG9wIDpnZXRfYnlfdmFsLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdldEJ5
VmFsSGlzdG9yeSwKICAgICB9CiAKK29wIDpnZXRfYnlfdmFsX2RpcmVjdCwKKyAgICBhcmdzOiB7
CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBt
ZXRhZGF0YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJn
czogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NzQsNyArNTg2LDcgQEAg
b3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAg
ICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFs
UmVnaXN0ZXIsCi0gICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKKyAgICAgICAgZmxhZ3M6IFB1
dEJ5VmFsRmxhZ3MsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGUzMWIxMzRjMjhjMWYyODM0ZWZjYjc4ZTAxNjVlZDdm
ZjZkODFmM2EuLjExMjRhM2Y2ZjJlM2Q1NWVhNTNjOTEyMGM5YjBlYWQ1NjY3YTAzNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApA
QCAtMjEyLDYgKzIxMiw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChW
aXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVu
dW1lcmF0b3JTdHJ1Y3R1cmVQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEVu
dW1lcmF0b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRC
eVZhbCwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhPcEdldEJ5VmFsRGlyZWN0LCBiYXNlLCBw
cm9wZXJ0eSkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhP
cE92ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAg
ICBVU0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTQyMyw2ICs0MjQsNyBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJbnN0YW5jZW9mLCBkc3QpCiAg
ICAgREVGUyhPcEluc3RhbmNlb2ZDdXN0b20sIGRzdCkKICAgICBERUZTKE9wR2V0QnlWYWwsIGRz
dCkKKyAgICBERUZTKE9wR2V0QnlWYWxEaXJlY3QsIGRzdCkKICAgICBERUZTKE9wVHlwZW9mLCBk
c3QpCiAgICAgREVGUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9w
SXNFbXB0eSwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggMGQ5
NTcwOTI2YWIxNDczNzhlYzMxNzI4MzhkYjIzNTg4MmRiN2JjZC4uOWQ3M2JmMWVhMDc5MGIyNzJi
YzZlMTQyZDMwNTUyNjEzNzc5YmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0
cy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgogI2luY2x1ZGUg
IlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisj
aW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNs
dWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rl
ci5oIgpAQCAtMjU2LDYgKzI1Nyw0NyBAQCBzdHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+
IHsKICAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3Qo
ZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpOwogICAgIH0KIH07CisK
K3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNp
emU+IHsKKyAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6
dW5zaWduZWRUeXBlOworCisgICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFuZCBh
IDIgYml0IGVudW0sIGVuY29kZWQgYXM6CisgICAgLy8gICAgICAgICAgaXNTdHJpY3QKKyAgICAv
LyAgICAgICAgICAgICB2CisgICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKKyAgICAv
LyAgICAgICAgICAgXgorICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBOb25l
LCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGly
ZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsK
KyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0g
MTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hp
ZnQgPSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZl
cnQoUHV0QnlWYWxGbGFncyBmbGFncykKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKKyAgICAgICAgYXV0byBpc1N0
cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7
CisgICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7CisgICAgICAgIHJldHVybiAocHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAo
aXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgUHV0QnlWYWxG
bGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVj
dCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOworICAgICAgICBhdXRv
IGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAg
ICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdw
aSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZFNoaWZ0KTsKKyAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6
OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgICAgICByZXR1cm4gYWNjZXNzID09
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPworICAgICAgICAgICAgaXNEaXJlY3QgPyBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3Jl
YXRlKGVjbWFNb2RlKSA6CisgICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHJpdmF0ZUZpZWxkUHV0KGVjbWFNb2Rl
KSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVByaXZhdGVGaWVsZEFkZChlY21hTW9kZSk7CisgICAg
fQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZp
dHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6Omlz
X2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggZTJjMWE0OWI0MzRjMGNjNTE1ODQ5NDQ1
YWNkOWZlZGJmNTk3YTAzNy4uNzA0MjU0YmJiN2E1ZGEzMTY5MWIzMTA2NjhiZjM2Y2EwNDU0ZWM1
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihB
cnJheSwgbnVsbHB0cikgXAogICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYo
Y2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihjcmVhdGVQcml2YXRlU3ltYm9sLCBudWxs
cHRyKQogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkg
bmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0MGE5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
VmFsRmxhZ3MuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorCisjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCit7CisgICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Cisg
ICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVj
dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7CisgICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZp
ZWxkQWRkKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5VmFsRmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODVlOGUwZjcyZTZjODU1NDhiZDNkMjU3
ODUxYzljMWZjMjgzYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
OiB1aW50OF90IHsKKyAgICBOb25lLAorICAgIFB1dCwKKyAgICBDcmVhdGUsCit9OworCitjbGFz
cyBQdXRCeVZhbEZsYWdzIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFs
RmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICAvLyBBIGRpcmVjdCBw
dXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2lu
ZyBpZiB0aGUKKyAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgorICAgIGNvbnN0
ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7Cisg
ICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVByaXZhdGVG
aWVsZEFkZChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeVZh
bEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOworICAgIH0K
KworICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQcml2YXRlRmllbGRQ
dXQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFn
cyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICBi
b29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQorICAgIEVDTUFNb2Rl
IGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQorICAgIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZTsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7IHJl
dHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6
UHV0OyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7IH0K
KworcHJpdmF0ZToKKworICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJlY3Qs
IEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAg
ICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5v
bmUpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisgICAg
Y29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3MsIEVD
TUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKKyAgICAgICAgLCBt
X3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQorICAgICAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9pc0RpcmVjdDsKKyAgICBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBFQ01BTW9kZSBt
X2VjbWFNb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgewor
CitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpQdXRCeVZhbEZsYWdzKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCA2MTEyNzlmNjA5YTA4NTg5YWRjZTkxYzJh
NWM4YWY2NDgwODBjNGM2Li5mOTBkNTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKQEAgLTI3LDYgKzI3
LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGly
ZWN0IH07CitlbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0ZUZp
ZWxkQ3JlYXRlLCBEaXJlY3RQcml2YXRlRmllbGRQdXQgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAwYmYzMDI4ZDgxMGM2MTZlYjA3YWRhNjZj
NTdkYTkyOTllMWJiY2NlLi41ZjhlYmJjMTgzMzAzNmIzZTFkZTQyY2M4NDU5OWU3NDAzYTJhM2Ew
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
aygKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUo
KSkpOwogICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMg
PSBleGVjdXRhYmxlLT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAg
ICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJC
aW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2ZWRD
b250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgp
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VN
b2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAg
ICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCBjMTllNjFjNTI4OWI3YzEwNWRmN2M2OWZmNTc3NDU1ZDQ4ZTUyNDgy
Li42NDNkNjEzZTQ2ZGUzYTRiMmVlNjJjYWVkYjEyMzBhZTQ4OGEyZTY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtMTg4OSw2ICsxODg5LDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3Rh
bnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAKICAg
ICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IDogUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5KTsK
KworICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBldmFs
KCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVkLgor
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NjY2MworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAg
ICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0y
Njc2LDkgKzI2ODEsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlW
YWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSkKK3sKKyAgICBPcEdldEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVy
dHkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKKyAgICBPcFB1dEJ5VmFsRGly
ZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3Jl
YXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3MDAs
NiArMjcxMSwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEludGVy
bmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogICAgIHJldHVybiB2YWx1ZTsK
IH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmll
bGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHks
IHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRlRmllbGRBZGQoZWNtYU1vZGUoKSkp
OworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhp
cywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRlRmll
bGRQdXQoZWNtYU1vZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVyU2FtcGxl
ckJlZ2luOjplbWl0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM5N2RkZGM3ZTViOGYxMDBlOWE5
N2Q3YzM0YTY5Njg2NDYxZTZkZDkuLjUzNzQ1NmRjMjExZmM1ZTgyOTkxZjEyZDM1ODY2NDQ1ODYy
MDM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc4NywxMSArNzg3LDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUs
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVj
dFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lz
dGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZhdGVGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAgICAg
ICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJT
YW1wbGVyRW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMTNkNGJhNzQ4MTIxMTE1YTc5ZGE5MjQyZTZmMjE4YWNi
ZTZjYTY4NS4uMTYwODJmMTA2OTZmMDJjYzk5YzIwYzkxYjI5Y2MxMzdjOWUzYzg4NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtNTQ5LDExICs1NDksMzAgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRIb21lT2Jq
ZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoZnVuY3Rpb24sIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCksIGhvbWVPYmplY3QpOwogfQogCit2
b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAgLy8gV2Fs
ayB0aGUgbGlzdCBhbmQgZGVjbGFyZSBhbnkgUHJpdmF0ZSBwcm9wZXJ0eSBuYW1lcyAoZS5nLiBg
I2Zvb2ApIGluIHRoZSBwcm92aWRlZCBzY29wZS4KKyAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUq
IHAgPSB0aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGNvbnN0IFByb3BlcnR5Tm9k
ZSYgbm9kZSA9ICpwLT5tX25vZGU7CisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5
Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVBy
aXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlu
a1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisKKyAgICAgICAgICAgIENhbGxB
cmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzeW1ib2wgPSBnZW5lcmF0b3IuZW1p
dENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJpdmF0ZVN5
bWJvbC5nZXQoKSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgYXJndW1lbnRzLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBEZWJ1Z2dh
YmxlQ2FsbDo6Tm8pOworCisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29w
ZShzY29wZSwgdmFyLCBzeW1ib2wuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFs
aXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICB9CisgICAgfQorfQor
CiBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVnaXN0ZXJJ
RCogcHJvdG90eXBlLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zKQogewotICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFy
IHZhbHVlIHByb3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAgICAg
UmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKKworICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29w
IGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgZm9yICg7IHAgJiYg
KHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBwLT5tX25l
eHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgp
ID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAtNzE1LDYgKzczNCw5IEBAIFJl
Z2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENv
bnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
bmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgYXJl
IGhhbmRsZWQgaW4gdGhlIHN5bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIgZnVuY3Rp
b24sIG5vdCBoZXJlLgorICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQ
cml2YXRlKSk7CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9IGdlbmVyYXRvci5z
aG91bGRTZXRGdW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJvcGVydHlOYW1lOwpAQCAtODQ1LDE2ICs4NjcsNjYgQEAgUmVnaXN0ZXJJRCogRG90
QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAg
IGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVl
ID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lk
ZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZp
bmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJRCogcmV0
ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERlc3QuZ2V0KCksIGJhc2Uu
Z2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QuZ2V0KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAorUmVnaXN0
ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJl
Z2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBt
dXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2
YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZh
dGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7Cisg
ICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwgcHJp
dmF0ZU5hbWUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkp
IHsKKyAgICAgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5l
cmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGRzdCwgYmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKKyAgICB9CisKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgbV9pZGVudCk7Cit9CisKK1JlZ2lz
dGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCit7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdEdldFByb3BlcnR5
VmFsdWUoZ2VuZXJhdG9yLCBkc3QsIGJhc2UsIHRoaXNWYWx1ZSk7Cit9CisKK1JlZ2lzdGVySUQq
IEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklE
PiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgVmFy
aWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBz
dG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5n
ZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0
KCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Cisg
ICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9y
LmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIG1faWRlbnQsIHZhbHVlKTsKK30KKworUmVnaXN0
ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0UHV0UHJvcGVydHkoZ2Vu
ZXJhdG9yLCBiYXNlLCB2YWx1ZSwgdGhpc1ZhbHVlKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTE3MzgsMTEgKzE4
MTAsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRPcHRpb25hbENoZWNrKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJl
eHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBpZiAoYmFzZUlzU3Vw
ZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyQmFzZSA9IGVtaXRTdXBlckJh
c2VGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1
bmN0aW9uLmdldCgpLCBzdXBlckJhc2UuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOwor
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBiYXNlSXNTdXBlciA/IGVtaXRTdXBlckJh
c2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCk7Cisg
ICAgZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmdW5jdGlvbi5nZXQoKSwgYmFzZS5n
ZXQoKSk7CiAKICAgICBpZiAoaXNPcHRpb25hbENoYWluQmFzZSgpKQogICAgICAgICBnZW5lcmF0
b3IuZW1pdE9wdGlvbmFsQ2hlY2soZnVuY3Rpb24uZ2V0KCkpOwpAQCAtMjA2Myw2ICsyMTMzLDIy
IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9
IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgp
LCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CisKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJp
dmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJhc2VJc1N1cGVyKTsKKyAgICAgICAgVmFy
aWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFy
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRl
TmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0
QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5j
T3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdl
dCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0
LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVl
OwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VJc1N1cGVy
KSB7CkBAIC0yMjg2LDYgKzIzNzIsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERv
dChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nl
c3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0
ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1lKCkpIHsKKyAg
ICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUu
Z2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKworICAgICAg
ICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQoKSwgYmFz
ZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJh
dG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZh
bHVlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgcHJv
cERzdC5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsK
ICAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpIHsKICAgICAgICAgdGhpc1ZhbHVlID0g
Z2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKQEAgLTMxMjgsMTEgKzMyMjksNyBAQCBSZWdpc3RlcklE
KiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSkgPyByZXN1bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgaWYgKG1fYmFzZS0+aXNT
dXBlck5vZGUoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2Vu
ZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2Uu
Z2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lk
ZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKKyAgICBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9y
LCBiYXNlLmdldCgpLCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiB9
CkBAIC0zMTQ0LDIzICszMjQxLDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUo
bV9iYXNlLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3Ip
KTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90
KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwot
ICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgdGhpc1ZhbHVlID0gZ2Vu
ZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUu
Z2V0KCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1f
aWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGVtaXRHZXRQcm9wZXJ0eVZh
bHVlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCB0aGlzVmFsdWUpOworCiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRN
b2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5k
VHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRv
cigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChtX2Jh
c2UtPmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChi
YXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAg
ZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9p
ZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1pdFB1
dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFsdWUp
OwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5nZXQoKTsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNob3J0Q2lyY3VpdFJlYWRN
b2RpZnlEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NjI0
LDYgKzQ3MTMsMTcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9wZXJ0eU5h
bWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRv
cjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0
YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24p
OwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6
OlByaXZhdGVOYW1lOiB7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZSgqbV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAi
UHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMi
KTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBv
c2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50LT5sZW5ndGgoKSk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJp
dmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVQcml2YXRlRmllbGQoZ2VuZXJhdG9yLnRoaXNS
ZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTog
ewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xhc3Mg
ZmllbGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTgzMzAKQEAgLTQ2MzQsNyArNDczNCw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiQ29tcHV0ZWQgbmFtZXMgbXVz
dCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsg
MSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVz
b2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2
YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBtX3Bv
c2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwpAQCAtNDcyNyw2ICs0ODI3
LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZp
bmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgp
LCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9zaXRpb24pOwogCiAg
ICAgaWYgKG1fY2xhc3NFbGVtZW50cykgeworICAgICAgICBtX2NsYXNzRWxlbWVudHMtPmVtaXRE
ZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iuc2NvcGVSZWdpc3Rl
cigpKTsKKwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IGluc3RhbmNlRmllbGRMb2Nh
dGlvbnM7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lQ2xhc3NFbGVtZW50cyhtX2NsYXNz
RWxlbWVudHMsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIGluc3RhbmNlRmll
bGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAoIWluc3RhbmNlRmllbGRMb2NhdGlvbnMuaXNFbXB0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDM0ZGEzYjFmYzc1MWJmY2U5YmY5NWRjMjZhOTRhMmQ4N2U5MTU1MTQuLmQwZThj
Mjc1MTZkM2IxYTZiNzY4ZjA0NzViMWMyMTYwY2QzNzIyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03Miw2ICs3Miw3IEBACiAj
aW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5o
IgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0xMjU3LDYgKzEyNTgsMTggQEAg
cHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07CiB9Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK0VDTUFNb2RlIGVjbWFNb2RlKEJ5dGVjb2Rl
IGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOworfQorCit0ZW1w
bGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+
KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2RlLm1fZmxh
Z3MuZWNtYU1vZGUoKTsKK30KKwogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRl
VGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBBU1NF
UlQoYnl0ZWNvZGVJbmRleCk7CkBAIC04MTg2LDcgKzgxOTksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25TaXplKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAg
ICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIGluc3RydWN0aW9uU2l6ZSwgYnl0ZWNv
ZGUubV9lY21hTW9kZSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZp
ZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgaW5z
dHJ1Y3Rpb25TaXplLCBlY21hTW9kZShieXRlY29kZSkpOwogICAgIH0KIAogICAgIGlmICghY29t
cGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTgxOTcsNyArODIxMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCB1bnNpZ25lZCBpbnN0cnVjdGlv
blNpemUpCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAgIGFk
ZFZhckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWws
IE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkp
OworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERp
cmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVjbWFN
b2RlKGJ5dGVjb2RlKSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBh
bmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0
IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXgg
NjUzMjlmNWM0NWY0MzE1ODNmMzllMWYwMDdlNGUwNjUzOWU1OTQ3NS4uYjBmNGNkZWZlZGZkY2Y0
MWNiNTc4OGMxYmQyYTViYjVjYWY2ZTVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk3LDYgKzI5Nyw3IEBAIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBJCiAKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3BfY3JlYXRlX2dlbmVy
YXRvcl9mcmFtZV9lbnZpcm9ubWVudDoKKyAgICBjYXNlIG9wX2dldF9ieV92YWxfZGlyZWN0OiAv
LyBGSVhNRTogb3BfZ2V0X2J5X3ZhbF9kaXJlY3Qgd2lsbCBuZWVkIERGRy9GVEwgc3VwcG9ydCB0
byBzaGlwIGNsYXNzIGZpZWxkcy4KICAgICBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAg
ICAgY2FzZSBsbGludF9ldmFsX3Byb2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfbW9kdWxlX3Byb2dy
YW1fcHJvbG9ndWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDRkMGFjM2U1Njk0MTUzNGYwNGExYzFhY2I0OTM4YzIyMmFiNzc5ZDYu
Ljk2N2FjNTQ5NDUzMzlhNTE2M2EzNDI2ZWM2OWQ4OTNhMTQxNzA1YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDA5OCw3ICsx
NDA5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
ciBnZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
dXNlZFJlZ2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBw
dXRLaW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5k
ZXggMzIwNTExYWUwMjcxNDI4NTdkNDRhMjUwN2I0MjYzZGI4OWY1N2EyNi4uODhmYzAxZTYzNWUy
MWZkNjE1Y2IzMGM1YzliOTA1MzdjNzYwYTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDE0Nyw3ICs0MTQ3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAog
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZv
OjpwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDog
Tm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgICAgICAgICAg
ICAgIGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Z2VuZXJhdG9yL0RTTC5yYgppbmRleCA5NGRlMzhjYjcxNjc4YWQ4NmFiYWM2YjdjNjI4NzljMTZi
MTBjODMxLi5kOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQxLDYgKzE0MSw3IEBAIG1vZHVs
ZSBEU0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2lu
Y2x1ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9JQ1N0YXRzLmgKaW5kZXggOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2
YzE0OS4uOTVlNjFiY2IzOWM4NmQ2NjI1MmEzNzk5MTJkN2U4NDI0NmE0ZmI1MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1h
Y3JvKE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QpIFwKICAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KSBcCisgICAgbWFjcm8oT3Bl
cmF0aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKSBcCisgICAgbWFjcm8o
T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKSBcCiAgICAgbWFj
cm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlkUmVwbGFjZVdpdGhK
dW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCmluZGV4IDk0YjBlNTY2MTM4MTJlZWVmMzZkYjFhOTIyMzY0MjNkMzg3Mzk3NzcuLjMw
YmQ1MjljM2U0ZDIyYTJlZDFmNjc4OTliNDBhZDE0MTE1ZjMwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9zY29wZSkKICAgICAg
ICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiAgICAgICAgIERF
RklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAgICAgICBERUZJTkVfU0xPV19P
UChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X2lkX3dp
dGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVj
bF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMzRmM2Q1MGYwNGJjMmI5NmUw
Zjk1OWM3YzZiNTUzZjc0NzAwNTUxZC4uNjY5ODM2MjhlMmQ2NTBhNWVhZGUwYjNmNjI4YmY3ZDQw
NTg1NmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00MDEsNyArNDAxLDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgSnVt
cExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRU
eXBlLCBUeXBlZEFycmF5VHlwZSk7CiAKLSAgICAgICAgLy8gSWRlbnRpZmllciBjaGVjayBoZWxw
ZXIgZm9yIFB1dEJ5VmFsLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAg
RUNNQU1vZGUgZWNtYU1vZGUoT3ApOworCisgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUg
b2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCisgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE9wPgorICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoT3ApOworCisgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZv
ciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmll
ckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVu
dGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2Fj
aGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAKaW5kZXggMjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdjZmE1ZmNjMzAyNjBl
Nzk1Yi4uZjQ2MjMzYmRmZjU4YTRiNWUxNTVkYjFiMzcxMmYwODg5Y2EzMTlhZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKQEAgLTEzNywxMSArMTM3LDExIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9y
OjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJh
dG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdz
IGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUg
ZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAg
ICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNl
ZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAg
ICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0
S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAg
ICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwg
QWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgLCBt
X2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQorICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQogewog
ICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTMs
NiArMTUzLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChN
YWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRH
ZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChtX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgeworICAgICAgICBBU1NF
UlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3Ry
aWN0KCkpOworICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkQWRkUHJpdmF0ZVN0cmljdE9wdGltaXplOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZFB1dFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICB9CisKICAgICBpZiAobV9lY21hTW9k
ZS5pc1N0cmljdCgpKSB7CiAgICAgICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAgICAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaApp
bmRleCBmMDNlMDkyNTM4NTQxZmIwMzQwZjEyYzZiYThhNjExMTFmMzM2Nzc1Li5lYmZjYjU1OTY0
MDk4YzYyNGIwMjhmZDdmZGEwOWY3YzY0MTRlYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzAsMTEgKzEz
MSwxMiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0
b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNt
YU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQogICAgIHsgfQogCiAgICAgSklUUHV0
QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJ
bmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZp
ZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcg
c2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwg
R1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5k
IHByaXZhdGVBY2Nlc3MpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fz
c2VtYmxlciYpOwogICAgIApAQCAtMTQzLDYgKzE0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKKyAgICBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKIH07CiAKIGNsYXNz
IEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggOWI2YzA1MjQ4YmEyOTI5
NmY5OWVkMzc2ZmI5NDgyOGZiYzkzM2NiZi4uZDUzZTY5NzdkMzlkNzU5ZTY3NDEyZmQ5YWQxYjll
Njc4MmI5N2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY4
Niw2ICs2ODYsMzYgQEAgQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3Bp
ZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiAgICAgcmV0dXJuIGFyaXRoUHJvZmls
ZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJ
VDo6ZWNtYU1vZGUoT3Agb3ApCit7CisgICAgcmV0dXJuIG9wLm1fZWNtYU1vZGU7Cit9CisKK3Rl
bXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+
KE9wUHV0QnlJZCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworfQor
Cit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRC
eVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFn
cy5lY21hTW9kZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK1ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9wKQoreworICAgIHJldHVybiBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5M
SU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9w
UHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCit7CisgICAgcmV0dXJuIG9wLm1f
ZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAppbmRleCAyYzg1YzUyNjgzZmZjODU4MTc2Zjg1ZDZjNzcwMTkxZWJhM2Ni
N2M1Li4wZWFmZWZhYjQ3ZGYwNWEyM2EzYjM0MDdjZTRjYzM2NDU4ZDliYTAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcxMSw2ICs3MTEsMTE3
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2Jh
bE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNs
b3QsICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAorfSAvLyBleHRlcm4gIkMiCisKK3VzaW5nIFB1
dFByaXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwgQ29kZUJsb2Nr
KiwgU3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmllciYpPjsKK0FM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZh
bHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dEtp
bmQgcHV0S2luZCwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0
UHJpdmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUo
KSk7CisgICAgQVNTRVJUKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlIHx8IHB1
dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0KTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2Jq
ZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwor
ICAgIGJvb2wgZm91bmQgPSBiYXNlT2JqZWN0LT5pc1Byb3h5KCkgPyBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpCisgICAg
ICAgIDogYmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBz
bG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYg
KHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlICYmIGZvdW5kKQorICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWRlZmluZWRQcml2YXRl
TmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgIGVsc2UgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
UHJpdmF0ZUZpZWxkUHV0ICYmICFmb3VuZCkKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IG51bGxwdHI7CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9i
amVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBDb21tb25TbG93
UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBp
ZGVudCwgdmFsdWUsIHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNr
KHZtLCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitleHRlcm4g
IkMiIHsKKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3Ry
aWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWlu
dHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBD
YWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgIHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1
ZSwgaWRlbnRpZmllciwgdmFsdWUsIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVy
U2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2
bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBj
YWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEFjY2Vzc1R5
cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NU
eXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZEJhc2UpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwdXRQcml2YXRlRmllbGQo
dm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1
ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlLCBbPV0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRp
b25QdXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNz
SW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICAg
ICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIp
KQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJl
Y3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgIH0pOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmll
ciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlk
ZW50aWZpZXIpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFz
ZSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSwgRGlyZWN0
UHJpdmF0ZUZpZWxkUHV0KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRQdXRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRp
ZmllcikKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwor
ICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJ
bmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwdXRQ
cml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVu
dGlmaWVyLCB2YWx1ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0LCBbJl0oVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0
U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50
OjpPcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmpl
Y3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7
CisKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2Rl
QmxvY2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJ
bmZvLCBEaXJlY3RQcml2YXRlRmllbGRQdXQpOworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBw
dXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
SlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBF
Q01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDllYTNjYmQ5MzRl
YjQ3MzY5NzFkNmY5ZTFiMjdlNzgxODhkNDY0MTAuLjRhNjM0ZGI5ZjY1ODg2MTg5NTU3MGQ1MGFj
NTJmNGJkOWZmNDk5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViCiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5U
RVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJp
Y3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3Ry
aWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJf
dCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQ
cml2YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRy
X3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0
UHJpdmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUo
SlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhNDA4MDU5MzY1
MGE2ZWM1NjhhYTYxMDY5MTdmZTk3YjM4ZjEzMzhiLi44ZThmM2FkYmY3YWFmMzhlMDhjZjY3ZWIx
NDM0YzQ3ZWM5MjY1NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2lu
ZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywg
Q29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRl
eCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1l
LAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIs
IGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2lu
ZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0
IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNv
bmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBj
b2RlIHNpemUuCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9i
eV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAg
ICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29k
ZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAg
IGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKKyAgICAgICAgZWNtYU1vZGUgPSBKSVQ6
OmVjbWFNb2RlKGJ5dGVjb2RlKTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtNjcw
LDggKzY3MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAg
ICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUlu
ZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3Rl
cnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJP
d25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVn
cyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNt
YU1vZGUoKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShi
eXRlY29kZSksCisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRo
KCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5k
ZXggNDA5MWM0NGY3ZDcxN2ZjMmIzYTAxYjI0MTEyZWZhOGQzN2E5ZjUwNS4uNjNlYTk3MWFiZmUw
YjA0YWM1NmM2MDNiMWUzN2JjNzIwOGYxNGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNzgsNyArMzc4LDcg
QEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBi
eXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4o
CiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxT
aXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBieXRlY29kZS5tX2Vj
bWFNb2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwg
cHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAg
LTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNlID0g
Ynl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7
CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBi
eXRlY29kZS5tX2VjbWFNb2RlOworICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0
ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MTYsNyArNjE2LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAg
ICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVj
dCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6Tm9uZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwog
ICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAppbmRleCAxOGJkNmU0NTNlOGQ2MDU3MGI5M2IxMjQ3ZWI2NWI4MmVmMjNl
ZTY3Li4yOThhZGU1YjZhZDhlMzBhZWFiMTY1NWExZjM4Y2Y1ZWQzZjA3MjM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGljIGF1
dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xv
dCAmc2xvdCwgUHV0S2kKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBp
ZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZERpcmVjdFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxk
Q3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3Ry
aWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCisgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3Q7CiAgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OwogICAgIH0KICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3QpCkBAIC01MzIsNiArNTM2LDEwIEBAIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0
aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1CiAg
ICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGly
ZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQor
ICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0aW1p
emU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKKyAgICAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplOwog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwogICAgIH0KICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC02MjUsNiArNjMzLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0
S2luZCA9PSBOb3REaXJlY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQg
IT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxk
Q3JlYXRlKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVD
aGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY0Miw2ICs2NTEsMTMgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAg
ICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkgewor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVy
dHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgbmV3U3RydWN0dXJlLCBpZGVudC5p
bXBsKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
VHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgb2xkU3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3ND
aGFpbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFi
bGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXgg
NzEyNWJkNGY1MWFmODE1YjlkNTA2NjFlYjdhM2MyNDFhNWFkNjAzYi4uNzU2OGQyMzZkM2FmYjVm
YzE0YTYzODc0NTE4NzZmODk5MmY5NDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAK
ICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgi
CiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBmZmQ2YjVlMTE1YjZmZDllYjVlNmI4OTgyOGRiZDdm
ZTk2YmNhOWQwLi5hOWUxMWVmZWM5N2U5MDM4MTkwZTgyNDJlODNiOGEyOGQwNTg0Y2ZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEx
MTksMTUgKzExMTksMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92
YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0
ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkp
OwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKKyAgICBi
b29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgp
OworICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzLmlzUHJp
dmF0ZUZpZWxkQWNjZXNzKCk7CiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkp
IHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCBy
ZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFs
dWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJz
Y3JpcHQuYXNVSW50MzIoKSkpOworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNz
KTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJz
Y3JpcHQuYXNVSW50MzIoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4
U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJ
TlRfRU5EKCk7CiAgICAgfQogCiAgICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7CisgICAg
ICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBkb3VibGUgc3Vic2Ny
aXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKICAgICAgICAgdWludDMyX3Qgc3Vi
c2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUp
OwogICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYg
aXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKQEAgLTExNDEsOSArMTE0NCwxNyBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgaWYgKFVO
TElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAor
ICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nl
c3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3Bl
cnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBp
bmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91
bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgeworICAg
ICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3MpIHsKKyAgICAgICAgICAgIC8vIFRocm93IGEg
VHlwZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBub24tZXhpc3RlbnQgcHJpdmF0
ZSBmaWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2UgYmVoYXZpb3VyLgorICAgICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAgICBib29sIGZvdW5kID0gSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5
LCBzbG90KTsKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBieXRlY29kZS5tX2ZsYWdzLmlzUHJp
dmF0ZUZpZWxkQWRkKCkpCisgICAgICAgICAgICAgICAgTExJTlRfVEhST1coZm91bmQgPyBjcmVh
dGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkgOiBjcmVhdGVJbnZhbGlk
UHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgfQogICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21t
b25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2Jq
ZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXgg
NTdlMzk4MmI4MzllYWY5ZWE5OGNmNDgyOTBkNjE0MjMyMDQ0YTVhNi4uNmUzYjQyZDhlOGM1MjU3
MmEzMTczMDg0OWQxMGJhYTgzZWM5NWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE1MTksODQg
KzE1MTksODkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCittYWNybyBnZXRC
eVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2xvd1BhdGhOYW1lLCBvc3JFeGl0UG9p
bnQpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsICVvcGNvZGVTdHJ1
Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICAg
ICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmVzdWx0UGF5
bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAgICB2YWx1ZVBy
b2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXls
b2FkKQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1
bHRQYXlsb2FkLCBzY3JhdGNoKQotICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCi0gICAgICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgc3Rv
cmVpIHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAg
ICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHJlc3Vs
dFBheWxvYWQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQKKyAgICAgICAgbWFjcm8gZmlu
aXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNjcmF0Y2gzKQor
ICAgICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoMSkKKyAgICAgICAgICAgIGZkMmlpIHJlc3Vs
dCwgc2NyYXRjaDIsIHNjcmF0Y2gzCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09m
ZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQYXls
b2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoJW9w
Y29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKKyAgICAgICAg
ICAgIGRpc3BhdGNoKCkKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5pc2hEb3VibGVHZXRC
eVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2NyYXRjaDMpCi0gICAgICAgIGdldCht
X2RzdCwgc2NyYXRjaDEpCi0gICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gz
Ci0gICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0g
ICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQot
ICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgc2NyYXRjaDMs
IHNjcmF0Y2gyKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2Us
IHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2Vs
bFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAg
YXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQy
LCB0NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxT
bG93KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MworICAgICAg
ICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBl
LCAub3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1No
YXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1
b3VzOgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5n
SGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAg
ICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAg
IC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBl
LCAub3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9w
R2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRu
ZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgICMgRklYTUU6IFRoaXMgY291
bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAgZmQyaWkgZnQwLCB0MSwgdDIKKyAg
ICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKKwor
ICAgIC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBl
LCB0MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3Rv
cmFnZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5k
ZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10s
IC5vcEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisKKyAgICAub3BHZXRCeVZhbERv
bmU6CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVU
YWcsIC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFsTm90RW1wdHk6CisgICAgICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUs
IG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKICAgICAgICAgZGlzcGF0Y2goKQotICAgIGVuZAogCi0g
ICAgbWV0YWRhdGEodDUsIHQyKQotICAgIGdldChtX2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93
KQotICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLSAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCi0g
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwg
Lm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQz
Ci0gICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAgICBiaWVxIHQyLCBJbnQzMlNoYXBl
LCAub3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUs
IC5vcEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRCeVZhbElzQ29udGlndW91czoKLSAg
ICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxl
bmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9hZGkgVGFnT2Zm
c2V0W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0
MQotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgot
ICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFl
cSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMu
cHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9hZGQgW3QzLCB0MSwgOF0s
IGZ0MAotICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdwotICAgICMgRklYTUU6
IFRoaXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KLSAgICBmZDJpaSBmdDAsIHQxLCB0
MgotICAgIGdldChtX2RzdCwgdDApCi0gICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKLQotLm9w
R2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBi
aWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdl
dEJ5VmFsU2xvdwotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRb
dDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9h
ZE9mZnNldFt0MywgdDEsIDhdLCB0MQotCi0ub3BHZXRCeVZhbERvbmU6Ci0gICAgZ2V0KG1fZHN0
LCB0MCkKLSAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKLS5vcEdl
dEJ5VmFsTm90RW1wdHk6Ci0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUo
T3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQotICAgIGRpc3BhdGNoKCkKKyAgICAu
b3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOiAgIAorICAgICAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKIAotLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZh
bFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAub3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNhbGxT
bG93UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3BhdGNoKCkKIAotLm9wR2V0QnlWYWxT
bG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCi0gICAg
ZGlzcGF0Y2goKQorICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgb3NyRXhpdFBvaW50KHNp
emUsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZW5kKQorZW5kCiAKLS5vc3JSZXR1cm5Qb2ludDoK
K2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfdmFsLCBtYWNybyhzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldHRlclNldHRlck9T
UkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0
MykKICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQog
ICAgIHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlWYWxPcChnZXRfYnlfdmFsX2RpcmVj
dCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCwgbWFjcm8o
YSwgYiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVj
dCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUl
LCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0
dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQppbmRleCA2NTU5MmU4MjRkNjQwODFkMDczY2I2MzIxMGFjNjYzNjg4Nzdm
MWQxLi5iZjEyNDQwMmM3Y2VjNjc3NGQ1NThmNzUyMWJiY2Y3NDRkNDIzZTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQpAQCAtMTU2NSw5MCArMTU2NSw5MyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9p
ZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQp
CiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5h
bWUpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsICVvcGNvZGVTdHJ1
Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICAg
ICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAgICAgZ2V0
KG1fZHN0LCBzY3JhdGNoKQorICAgICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRj
aCwgOF0KKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxl
LCB0NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKLSAgICAgICAg
c3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9w
R2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKLSAgICAgICAgZGlzcGF0Y2goKQotICAg
IGVuZAorICAgICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisg
ICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKKyAgICAgICAgICAgIGZpbmlzaEdldEJ5
VmFsKHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5pc2hJbnRH
ZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHJlc3VsdAot
ICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgZW5kCisgICAgICAg
IG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCB1
bnVzZWQpCisgICAgICAgICAgICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEKKyAgICAgICAgICAgIHN1
YnEgbnVtYmVyVGFnLCBzY3JhdGNoMQorICAgICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRj
aDEsIHNjcmF0Y2gyKQorICAgICAgICBlbmQKIAotICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5
VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCB1bnVzZWQpCi0gICAgICAgIGZkMnEgcmVz
dWx0LCBzY3JhdGNoMQotICAgICAgICBzdWJxIG51bWJlclRhZywgc2NyYXRjaDEKLSAgICAgICAg
ZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQotICAgIGVuZAorICAgICAgICBtZXRh
ZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2Us
IHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5v
cEdldEJ5VmFsU2xvdykKIAotICAgIGdldChtX2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotCi0gICAgbW92ZSB0
MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9m
aWxlLCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBz
eGkycSB0MSwgdDEKLQotICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5
W3QwXSwgdDMsIG51bWJlclRhZykKLSAgICBtb3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCi0KLSAg
ICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5v
cEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9w
R2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAgIGJp
YWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Ro
cy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQot
ICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwot
ICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAg
IGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0
MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVi
bGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBs
b2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxT
bG93Ci0gICAgZmQycSBmdDAsIHQyCi0gICAgc3VicSBudW1iZXJUYWcsIHQyCi0gICAgam1wIC5v
cEdldEJ5VmFsRG9uZQotICAgIAotLm9wR2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJh
eVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAt
IEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlh
ZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0g
ICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXog
dDIsIC5vcEdldEJ5VmFsU2xvdwotCi0ub3BHZXRCeVZhbERvbmU6Ci0gICAgc3RvcmVxIHQyLCBb
Y2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwg
dDIpCi0gICAgZGlzcGF0Y2goKQorICAgICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBhcnJheVBy
b2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0
MSkKIAotLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJy
YXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdl
dEJ5VmFsU2xvdykKKyAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAg
ICAgIHN4aTJxIHQxLCB0MQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCgpCisgICAgICAgIGxvYWRD
YWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKKyAg
ICAgICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwogCi0ub3NyUmV0dXJuUG9pbnQ6Ci0gICAg
Z2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCi0gICAg
bWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUs
IHQ1LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ss
IHQyCisgICAgICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3Vz
CisgICAgICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGln
dW91cworCisgICAgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6CisgICAgICAgIGJpYWVxIHQxLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNM
ZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAg
ICAgbG9hZHEgW3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xv
dworICAgICAgICBqbXAgLm9wR2V0QnlWYWxEb25lCisKKyAgICAub3BHZXRCeVZhbE5vdENvbnRp
Z3VvdXM6CisgICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3Vi
bGUKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAg
ICBnZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisgICAgICAg
IGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBmZDJxIGZ0MCwgdDIK
KyAgICAgICAgc3VicSBudW1iZXJUYWcsIHQyCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUK
KyAgICAgICAgCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6CisgICAgICAgIHN1YmkgQXJyYXlT
dG9yYWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBl
IC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UKKyAgICAg
ICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5s
ZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9k
c3QsIHQwKQorICAgICAgICBsb2FkcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0MSwgOF0s
IHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdworCisgICAgLm9wR2V0QnlWYWxE
b25lOgorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2Zp
bGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHQyKQorICAgICAgICBkaXNwYXRjaCgp
CiAKLWVuZCkKKyAgICAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgorICAgICAgICBnZXRC
eVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0
QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKworICAgIC5vcEdldEJ5VmFsU2xvdzoKKyAgICAgICAg
Y2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0Y2goKQorCisgICAgLm9z
clJldHVyblBvaW50OgorICAgICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3Bf
JW9wY29kZU5hbWUlLCBzaXplKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIHZh
bHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxlLCB0NSwgcjApCisgICAgICAgIHJl
dHVybihyMCkKKyAgICBlbmQpCitlbmQKKworZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCiAKK2dldEJ5VmFsT3AoZ2V0X2J5X3Zh
bF9kaXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3Qp
CiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9p
bnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVj
dCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGQ5NTU4MDhjNmEzMjhkY2Uw
NmRhNzNlNzUxZDYyMjM3ZGQ3N2JhNjIuLmJjZjY5ZjE2M2U0MTY2YzY5OTkyYTIyNGZlMjYwYjBh
MTI2NDg5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC0yNzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0K
IAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHBy
b3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgRG90VHlwZSB0eXBlLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAgICAgIGlmIChiYXNlLT5pc1N1
cGVyTm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJvcGVydHkoKTsKICAgICAgICAgCi0g
ICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNj
ZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nv
ck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlv
biwgYmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
bm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBA
IC02NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGUtPmlzQXNzaWdu
bWVudExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbihjb25z
dCBFeHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmlzUHJpdmF0
ZUxvY2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09iamVjdExpdGVyYWwoY29uc3QgRXhw
cmVzc2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLT5pc09iamVjdExpdGVy
YWwoKTsKQEAgLTE0MzgsMTUgKzE0NDMsMTUgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAg
ICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1
bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUgPSBudWxscHRyOwogICAgIGlmICgh
cHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZp
ZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQcml2YXRlTmFt
ZSgpKSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOworICAg
ICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwog
ICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSB8
fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMg
b25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0aGUgYnl0ZWNvZGUgZ2VuZXJh
dG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5IHlldC4gU2VlIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NjguCiAgICAgICAgIGlmICghZG90
LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRv
dC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikKLSAgICAgICAgICAgIG5vZGUg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAgICAgICBub2RlID0gbmV3
IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICB9CiAgICAgaWYg
KCFub2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlk
ZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmRp
dm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KQEAgLTE1ODcsNyArMTU5Miw3
IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBz
dGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwogCiAgICAgaWYgKG9wID09IE9wZXJh
dG9yOjpFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduRG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50
cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAogICAgIGlmIChvcCA9PSBPcGVyYXRvcjo6
Q29hbGVzY2VFcSB8fCBvcCA9PSBPcGVyYXRvcjo6T3JFcSB8fCBvcCA9PSBPcGVyYXRvcjo6QW5k
RXEpIHsKICAgICAgICAgYXV0byogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgU2hvcnRDaXJj
dWl0UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOwpA
QCAtMTU5NSw3ICsxNjAwLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3Np
Z25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1f
cGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFy
dCwgZW5kKTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgZG90LT50eXBlKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBz
dGFydCwgZW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCks
IGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA5YWEyNjczMDMzMGQ2NTM4ZjQ4YjBjMDE1
MzZiN2MyMzIxNTI3NWM1Li5mNmIzNjkyZDYwMmFmZDQyMWUzMmRmY2RjMTExZDhmYWNiNGI3NmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTUwLDEwICs5NTAs
MTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3Jk
ID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKworICAgIGJvb2wgaXNQcml2
YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBpc0J1aWx0aW5OYW1lID0gbV9j
dXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiAgICAgYm9vbCBpc1dl
bGxLbm93blN5bWJvbCA9IGZhbHNlOwotICAgIGlmIChpc1ByaXZhdGVOYW1lKSB7CisgICAgaWYg
KGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlv
bik7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ0AnKSB7CkBA
IC05NjEsOCArOTYyLDEyIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICBz
aGlmdCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY29uc3QgTENoYXIqIGlkZW50
aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKworICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICBzaGlmdCgpOworCiAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQp
IHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50
KSkKICAgICAgICAgc2hpZnQoKTsKQEAgLTk3NCw3ICs5NzksOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExD
aGFyPjo6cAogICAgIAogICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJl
bnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKLSAgICAgICAgaWYgKG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbiAmJiBpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgIGlkZW50ID0gbWFrZUlk
ZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKKyAgICAgICAgaWYg
KG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgICAg
ICBpZiAoaXNXZWxsS25vd25TeW1ib2wpCiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9hcmVu
YS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5sb29rVXBXZWxsS25vd25TeW1ib2woaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3Ro
KSk7CiAgICAgICAgICAgICBlbHNlCkBAIC05OTYsMjAgKzEwMDIsMjEgQEAgdGVtcGxhdGUgPGJv
b2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxMQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxw
dHI7CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAh
bGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYg
IWlzUHJpdmF0ZU5hbWUpIHsKKyAgICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQ
UklWQVRFTkFNRSA6IElERU5UOworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9r
ZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2Vy
dmVkV29yZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkg
ewogICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFi
bGUuZW50cnkoKmlkZW50KTsKICAgICAgICAgICAgIEFTU0VSVCgocmVtYWluaW5nIDwgbWF4VG9r
ZW5MZW5ndGgpIHx8ICFlbnRyeSk7CiAgICAgICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAg
ICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwog
ICAgICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4o
ZW50cnktPmxleGVyVmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VS
VkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogSURFTlQ7CisgICAgICAgICAg
ICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRv
a2VuIDogaWRlbnRUeXBlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAg
ICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0
dXJuIGlkZW50VHlwZTsKIH0KIAogdGVtcGxhdGUgPD4KQEAgLTEwMjYsNyArMTAzMywxMiBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1By
aXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmll
clN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisg
ICAgICAgIHNoaWZ0KCk7CisKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQo
aXNTaW5nbGVDaGFyYWN0ZXJJZGVudFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FU
RShtX2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNTaW5nbGVD
aGFyYWN0ZXJJZGVudFBhcnQobV9jdXJyZW50KSkgewpAQCAtMTA1MCw2ICsxMDYyLDkgQEAgdGVt
cGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVu
dCA9IG51bGxwdHI7CiAgICAgCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHJldHVy
biBQUklWQVRFTkFNRTsKKwogICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVk
V29yZHMpKSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAg
ICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewpAQCAtMTA3NCw2ICsxMDg5LDE0
IEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93
Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgQVNTRVJUKG1fYnVmZmVyMTYuaXNFbXB0
eSgpKTsKICAgICBBU1NFUlQoIXRva2VuRGF0YS0+ZXNjYXBlZCk7CiAKKyAgICBhdXRvIGlkZW50
Q2hhcnNTdGFydCA9IGlkZW50aWZpZXJTdGFydDsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSAq
aWRlbnRpZmllclN0YXJ0ID09ICcjJzsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAg
KytpZGVudENoYXJzU3RhcnQ7CisKKyAgICBKU1Rva2VuVHlwZSBpZGVudFR5cGUgPSBpc1ByaXZh
dGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUg
fHwgaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSk7CisKICAgICBhdXRvIGZp
bGxCdWZmZXIgPSBbJl0gKGJvb2wgaXNTdGFydCA9IGZhbHNlKSB7CiAgICAgICAgIC8vIFx1WFhY
WCB1bmljb2RlIGNoYXJhY3RlcnMgb3IgU3Vycm9nYXRlIHBhaXJzLgogICAgICAgICBpZiAoaWRl
bnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSkKQEAgLTEwOTMsNyArMTExNiw3IEBA
IEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2Fz
ZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcikKICAgICAgICAgICAgICAgICByZWNvcmRVbmljb2RlQ29kZVBvaW50KGNoYXJhY3Rl
ci52YWx1ZSgpKTsKICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQ
dHIoKTsKLSAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVu
dFR5cGU7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoVTE2X0lTX1NVUlJPR0FURShtX2N1
cnJlbnQpKTsKQEAgLTExMDksMTAgKzExMzIsMTAgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFj
dGVyVHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEK
ICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWRlbnRpZmllclN0
YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAg
IHJldHVybiBpZGVudFR5cGU7CiAgICAgfTsKIAotICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxs
QnVmZmVyKGlkZW50aWZpZXJTdGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOworICAgIEpTVG9r
ZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50Q2hhcnNTdGFydCA9PSBjdXJyZW50U291cmNl
UHRyKCkpOwogICAgIGlmIChVTkxJS0VMWSh0eXBlICYgRXJyb3JUb2tlbkZsYWcpKQogICAgICAg
ICByZXR1cm4gdHlwZTsKIApAQCAtMTE0NSwxMyArMTE2OCwxMyBAQCBKU1Rva2VuVHlwZSBMZXhl
cjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRv
a2VuRGF0YQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAg
IGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVu
dCk7CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAg
ICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0
YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYg
KCh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAg
ICByZXR1cm4gVU5FWFBFQ1RFRF9FU0NBUEVfRVJST1JUT0s7CiAgICAgfQogCi0gICAgcmV0dXJu
IElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgY2hhcmFjdGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3Rl
cikKQEAgLTI0NzgsMTQgKzI1MDEsMjEgQEAgc3RhcnQ6CiAgICAgICAgIG1faGFzTGluZVRlcm1p
bmF0b3JCZWZvcmVUb2tlbiA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwog
ICAgICAgICBnb3RvIHN0YXJ0OwotICAgIGNhc2UgQ2hhcmFjdGVySGFzaDoKKyAgICBjYXNlIENo
YXJhY3Rlckhhc2g6IHsKICAgICAgICAgLy8gSGFzaGJhbmcgaXMgb25seSBwZXJtaXR0ZWQgYXQg
dGhlIHN0YXJ0IG9mIHRoZSBzb3VyY2UgdGV4dC4KLSAgICAgICAgaWYgKHBlZWsoMSkgPT0gJyEn
ICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKKyAgICAgICAgYXV0byBuZXh0ID0gcGVlaygxKTsKKyAg
ICAgICAgaWYgKG5leHQgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKICAgICAgICAgICAg
IHNoaWZ0KCk7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblNpbmds
ZUxpbmVDb21tZW50OwogICAgICAgICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgY291bGQg
YmUgYSB2YWxpZCBQcml2YXRlTmFtZS4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVD
bGFzc0ZpZWxkcygpICYmIChpc1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQobmV4dCkgfHwgbmV4
dCA9PSAnXFwnKSkgeworICAgICAgICAgICAgbGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6
RG9udEJ1aWxkS2V5d29yZHMpOworICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAg
ICB9CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFy
YWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRp
bkZ1bmN0aW9uKQogICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCAyY2VlYzM4YjY2ZWU2
MTYwOTljYzIzOWIzMTc2NTIzZDcxYmUwMTAwLi4wZGNlNjcxMjZkODVkNjViYjZkMWNkNzQ1MDE5
YjYyMWQ3YjdmNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaApAQCAtMzI3LDEwICszMjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgaW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBp
bmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBEb3RUeXBlIHR5cGUpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2Us
IGlkZW50LCB0eXBlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90
Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50
c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90
Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUg
dHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlw
ZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQpAQCAtNDM3LDE0ICs0
NDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAg
ICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90
VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAg
ICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFy
Z3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9J
bm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFy
Z3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNl
VG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxv
Y2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQor
ICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSog
YXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFu
Y2VUb0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFu
Y2VUb0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CkBAIC03NzIsMjEgKzc3Niwx
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRv
dE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAg
IGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRG90VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6
IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAg
ICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3Jp
Z2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2ln
bm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJl
YWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBPcGVyYXRvciBvcGVyLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBi
YXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAg
ICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAs
IG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRI
YXNBc3NpZ25tZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXgg
OWQxY2ZhNGYxNzYxMzAyYTMzYmJhZTMxZWY2MGZkZmNhZjIwN2RmNS4uMTFiZjRhNjg0YTFiZDlh
MDkzZWI4ZWIxNmUxZTEzNzI2NjIwZDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIFByb3BlcnR5TGlzdE5vZGU6Omhhc1N0
YXRpY2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1lKQogYm9vbCBQ
cm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyhQcm9wZXJ0
eUxpc3ROb2RlKiBsaXN0KQogewogICAgIHdoaWxlIChsaXN0KSB7Ci0gICAgICAgIGlmIChsaXN0
LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCisgICAgICAgIGlmIChsaXN0LT5tX25v
ZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgfHwgbGlzdC0+bV9ub2RlLT5pc1ByaXZhdGUoKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBsaXN0ID0gbGlzdC0+bV9uZXh0Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBhNzk1YThjMTY5ZTBi
YTcwZWZlMDI0Zjc1NmI5YWUxYjliMDkxM2I1Li40ZDBmZmNjN2M5NjAwMTBhMTQ1YWU4Yjg4ZWZj
YWEyNGY4MmM5OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODUs
NiArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUo
Qnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBpc0xvY2F0aW9uKCk7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2
ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNB
c3NpZ25SZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03MTksNyArNzIw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1
aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9w
ZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAy
LCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiB9
OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAy
LCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwg
UHJpdmF0ZSA9IDY0IH07CiAgICAgICAgIGVudW0gUHV0VHlwZSA6IHVpbnQ4X3QgeyBVbmtub3du
LCBLbm93bkRpcmVjdCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxl
bWVudFRhZyk7CkBAIC03MzgsNiArNzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJv
b2wgaXNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc1Byb3BlcnR5KCkgJiYgIW5l
ZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgp
IGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJC
aW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KKyAgICAgICAgYm9vbCBpc1By
aXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRlOyB9CiAgICAgICAgIGJvb2wg
aGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAg
IGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQo
KSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5
RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzQ4
LDcgKzc1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBt
X25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNjsKKyAg
ICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVy
QmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRh
Zzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdv
IGJpdHMiKTsKQEAgLTc3Niw2ICs3NzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwg
UmVnaXN0ZXJJRCosIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qKTsKIAorICAgICAgICB2b2lkIGVt
aXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiBzY29wZSk7CisKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0
cikgb3ZlcnJpZGUKICAgICAgICAgewpAQCAtODIwLDkgKzgyNCwzMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAg
ICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgZW51bSBjbGFzcyBEb3RUeXBlIHsg
TmFtZSwgUHJpdmF0ZU5hbWUgfTsKKyAgICBjbGFzcyBCYXNlRG90Tm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsKKworICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQorICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQorICAg
ICAgICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgYm9v
bCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZh
dGVOYW1lOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0
cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFBy
b3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJl
Z2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0UHJvcGVy
dHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1
ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CisgICAgICAgIERvdFR5cGUgbV90eXBl
OworICAgIH07CisKKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgQmFz
ZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgcHVibGljOgor
ICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsKIAogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAt
ODMxLDEwICs4NTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
IAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0KICAgICAgICAgYm9vbCBpc0Rv
dEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lk
ZW50OwogICAgIH07CiAKICAgICBjbGFzcyBTcHJlYWRFeHByZXNzaW9uTm9kZSBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAg
LTk0Nyw5ICs5NzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgQmFzZURvdE5vZGUs
IHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAg
ICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBA
IC05NTcsOCArOTgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsKICAgICB9OwogCkBA
IC05OTUsNyArMTAxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50
c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0
YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKQEAgLTEwMDQsNyArMTAy
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUq
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRv
SW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC0xNDY3LDI4ICsxNDg4LDI0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6
IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3Mg
QXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkRvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQXNzaWduRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIERvdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVu
dHM7CiAgICAgfTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAg
IGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJs
aWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVh
ZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgT3BlcmF0
b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9yaWdodDsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsKICAgICAgICAgYm9vbCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjI4NSw3ICsyMzAyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBDb21w
dXRlZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUs
IENvbXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSk7CiAKICAg
ICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDc2
NmEyYjNlYTY3MTU3ZjdmNDI1YWYzYTFlNzllZmFlMDQzNDgwNWQuLjE5ZGJmMDM1NDA0M2IzNDVi
MWI3OTU0YzcyNGM4MjAzYTVlNGQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTgyNiw2ICs4MjYsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAg
ICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CiAg
ICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKworICAgICAgICBmYWlsSWZUcnVl
KG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgdG8gZGVjbGFy
ZSBhIHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkpIHsKICAg
ICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVjbGFyYXRpb25UeXBlID09IERl
Y2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFyYXRpb25UeXBlID09IERlY2xh
cmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAgICAgICAgICAgICJDYW5ub3Qg
dXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRpb24i
KTsKQEAgLTEyODgsNiArMTI5MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAg
ICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0V4cHJlc3Np
b25zKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgc2VtYW50aWNGYWls
dXJlRHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQp
KTsKKyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVy
ZVRvUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVO
QU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAiLCBkZXN0cnVjdHVyaW5nS2lu
ZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2Uo
IkV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3Qi
KTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGtpbmQgPT0g
RGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwga2luZCA9PSBEZXN0cnVjdHVy
aW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRl
bnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMjk1Myw2ICsyOTU3
LDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29tcHV0ZWRQcm9w
ZXJ0eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAg
ICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVuZCIsICJj
b21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBQUklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVD
bGFzc0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOworICAg
ICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgIGZhaWxJ
ZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1l
bnQgY2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIg
fHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1l
Iik7CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAgbmV4dCgpOworICAg
ICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNh
bm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50
KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5u
b3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3Rh
dGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKQogICAgICAgICAg
ICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk2OCw4ICsyOTg1LDEwIEBAIHBhcnNlTWV0
aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3QgcGFyc2UgdGhp
cyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0Zp
ZWxkcygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Oklu
c3RhbmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUpIHsKICAg
ICAgICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVyKTsKLSAgICAgICAgICAgIGlm
IChpZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewogICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvciwgIkNhbm5v
dCBkZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKKyAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0
b3JQcml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGNsYXNzIGZpZWxkIG5hbWVk
ICcjY29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb21w
dXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJl
bmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1
dGVkRmllbGRzKyspOwpAQCAtMzAzMyw2ICszMDUyLDEwIEBAIHBhcnNlTWV0aG9kOgogICAgIGlu
Zm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAgICAgY29uc3Vt
ZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhIGNsYXNz
IGJvZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewor
ICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3Bl
cyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KKyAgICAgICAgc2Vt
YW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgp
LCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKKyAgICB9CiAg
ICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlv
biwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3Ry
dWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAgICBwb3BTY29wZShjbGFzc1Nj
b3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICByZXR1cm4gY2xh
c3NFeHByZXNzaW9uOwpAQCAtMzA1Niw2ICszMDc5LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFu
Y2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAg
ICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6
TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgeworICAgICAgICBjYXNlIFBS
SVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJp
dmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBTVFJJTkc6
CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5d29yZDoKQEAgLTMwOTUsNiAr
MzEyMSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgIGlmIChjb25zdW1lKEVR
VUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lv
bihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6
OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlk
ZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBkZWZpbmVGaWVsZCA9IGNvbnRl
eHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRlbnQsIGluaXRpYWxpemVyLCB0
eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIGRl
ZmluZUZpZWxkKTsKICAgICB9CkBAIC00Nzk4LDYgKzQ4MjcsMjIgQEAgc3RhdGljIGlubGluZSB2
b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSosIFZNJiwgT3B0aW9uYWw8dHlw
ZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK2Jvb2wgUGFy
c2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQor
eworICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgaWYgKGF1dG8gbWF5YmVDdXJyZW50ID0gcHJpdmF0ZU5hbWVTY29wZSgp
KSB7CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBtYXliZUN1cnJlbnQudmFsdWUoKTsKKyAg
ICAgICAgaWYgKCFjdXJyZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICAgICAg
Y3VycmVudC0+dXNlUHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQog
ewpAQCAtNDk5OSw4ICs1MDQ0LDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAg
ICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAg
ICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBv
c2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZEtleXdvcmRzIHwgTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7
CisgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKKyAgICAgICAgICAgICAgICBhdXRvIHR5cGUgPSBEb3RUeXBlOjpOYW1lOworICAg
ICAgICAgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShiYXNlSXNT
dXBlciwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBuYW1lcyBmcm9tIHN1cGVyIik7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50U2NvcGUoKS0+ZXZhbENvbnRleHRUeXBl
KCkgPT0gRXZhbENvbnRleHRUeXBlOjpJbnN0YW5jZUZpZWxkRXZhbENvbnRleHQpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aGFz
UHJpdmF0ZU5hbWUoKmlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRl
IGZpZWxkICciLCBpZGVudC0+aW1wbCgpLCAiJyIpOworICAgICAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2Ug
cHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAg
ICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAg
IG1fdG9rZW4ubV90eXBlID0gSURFTlQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIs
IG9wdGlvbmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2Vu
Lm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBv
c2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vz
cyhzdGFydExvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHBy
ZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShiYXNlSXNTdXBlciAmJiBjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQog
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93
RnVuY3Rpb25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAg
LTUxOTUsNiArNTI1Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJ
ZlN0cmljdChjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZp
ZWQgcHJvcGVydHkgJyIsIG1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicg
aW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0
LmlzUHJpdmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIs
IG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlU
b2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNTI3MSw3ICs1MzMwLDExIEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5l
eHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRP
SzoKICAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4o
KSwgIiciKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZB
VEVOQU1FOgorICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdl
dFRva2VuKCkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2Ug
SURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRU
b2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTY4
YjZmZjdlZjhlY2VmNWZkMzJjNzE1ODJmMGIwNGY3NjlkYjFjZi4uYjVlMjlhOGJmYTVmOTExMjA1
MjYwNjdiMjcyOWIwNGUzNzEyOGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCkBAIC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faGFzQXJndW1lbnRz
KGZhbHNlKQogICAgICAgICAsIG1faXNFdmFsQ29udGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hh
c05vblNpbXBsZVBhcmFtZXRlckxpc3QoZmFsc2UpCisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1l
U2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0NsYXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwg
bV9ldmFsQ29udGV4dFR5cGUoRXZhbENvbnRleHRUeXBlOjpOb25lKQogICAgICAgICAsIG1fY29u
c3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUp
KQpAQCAtMjkwLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRh
cnkoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlz
QXN5bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAg
Ym9vbCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1
bmN0aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNQcml2YXRlTmFtZVNjb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBj
b25zdCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMo
KSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA5LDggKzMxMSwxNCBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAg
fQogCisgICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9p
c1ByaXZhdGVOYW1lU2NvcGUgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Nj
b3BlKCkKICAgICB7CisgICAgICAgIHNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBt
X2lzQ2xhc3NTY29wZSA9IHRydWU7CiAgICAgfQogCkBAIC00NzUsNyArNDgzLDQ0IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRl
bnQuZ2V0KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFi
bGVzLmhhc1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xh
cmVkUHJpdmF0ZU5hbWVzKFNjb3BlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZh
cmlhYmxlcy5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhvdGhlci5tX2xleGljYWxWYXJpYWJs
ZXMpOworICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMo
KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFt
ZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxW
YXJpYWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFs
dWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFy
YXRpb25zKTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50
KTsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dz
TGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1
bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlm
ICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRp
b25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0
ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVj
bGFyZWRQYXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTgzOSw2ICs4ODQsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNBcmd1bWVudHM7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAg
ICAgYm9vbCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0
ZU5hbWVTY29wZTsKICAgICBib29sIG1faXNDbGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlw
ZSBtX2V2YWxDb250ZXh0VHlwZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAg
LTkxMCw3ICs5NTYsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNl
KFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2lu
Z0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQ
b3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBu
dWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJy
b3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwg
T3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0g
V1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0
IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlv
biBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9z
aXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
QmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRp
b24oKTsgfQpAQCAtMTE4Myw2ICsxMjI5LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBT
Y29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBPcHRpb25hbDxTY29wZVJl
Zj4gcHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9zY29wZVN0YWNr
LnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsK
KyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUo
KSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAobV9zY29wZVN0YWNrW2ldLmlzUHJp
dmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3Rh
Y2ssIGkpOworCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgU2Nv
cGVSZWYgZXhwZWN0UHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9z
Y29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6
ZSgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVO
YW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBBU1NFUlQobV9zY29wZVN0
YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKTsKKyAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZt
X3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wgY29weVVuZGVjbGFyZWRQcml2YXRl
TmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9IGV4
cGVjdFByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IGN1cnJlbnQuaW5k
ZXgoKSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRl
TmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKCFpKQorICAgICAg
ICAgICAgcmV0dXJuICFjdXJyZW50LT5oYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygp
OworCisgICAgICAgIGN1cnJlbnQtPmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKG1fc2NvcGVT
dGFja1tpXSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIFNjb3BlUmVmIGNs
b3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCkKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKQEAgLTE0NjIsNiArMTU0
NiwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09
IGV4cGVjdGVkOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaEFuZFVwZGF0
ZShKU1Rva2VuVHlwZSBleHBlY3RlZCwgY29uc3QgSlNUb2tlbiYgdG9rZW4pCisgICAgeworICAg
ICAgICBpZiAobWF0Y2goZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBtX3Rva2VuID0gdG9rZW47
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQ29udGV4dHVh
bEtleXdvcmQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CkBAIC0xNzE1LDYg
KzE4MDksOCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KFRyZWVCdWlsZGVyJiwg
VHJlZUV4cHJlc3Npb24pOwogCisgICAgQUxXQVlTX0lOTElORSBib29sIHVzZVByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3Bl
cmF0b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsK
ICAgICAKQEAgLTE4MDksNiArMTkwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUGFy
c2VQaGFzZSBmdW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkgfTsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxscHRyIH07CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxscHRyIH07Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7IG51bGxwdHIgfTsKICAg
ICAgICAgYm9vbCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUGFyc2luZ0Ns
YXNzRmllbGRJbml0aWFsaXplciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTE5NTksNyArMjA1Niw3
IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxs
ZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5n
Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5l
OwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xOTc0LDYgKzIwNzEsMTEgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291
cmNlLT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCisgICAgaWYgKGlzRXZhbE5vZGU8
UGFyc2VkTm9kZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAmJiB2YXJpYWJsZXNVbmRlclREWi0+
cHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZh
dGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5kZXJURFotPmNvcHlQcml2YXRlTmFt
ZXMoY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgfQorCiAgICAgYXV0
byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5n
Q29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgaW5zdGFu
Y2VGaWVsZExvY2F0aW9ucyk7CiAKICAgICBpbnQgbGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVO
dW1iZXIoKTsKQEAgLTIwNTgsNiArMjE2MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5
cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVn
Z2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKKyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2
YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0
aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lk
ZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKQEAgLTIwNzAsNyArMjE3Myw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2Vk
Tm9kZT4gcmVzdWx0OwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0
KCkpIHsKICAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1
aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGlu
ZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250
ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVn
Z2VyUGFyc2VEYXRhLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQg
PSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4
dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAg
ICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1v
ZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFy
c2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGlu
c3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpT
UGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTIwODMsNyArMjE4Niw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9u
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwg
Y29uc3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAg
IFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZh
bE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9k
ZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdU
Rjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2Rl
PFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQ
cm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9j
YXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAg
ICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
VG9rZW5zLmgKaW5kZXggZGUwZWJlYWY4NWZkNzEyMzcxN2Y4NzcxMTI3ZjcxOTIzZmZlNjc0OC4u
N2IzYzFlYzNiN2Y2YTZiMTFiZmM0NWY0YmM5MWQwNDgxMmY0Y2QyZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51
bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9VQkxFLAogICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAg
ICBQUklWQVRFTkFNRSwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBmOWJi
MDdiNGRkNDA4OWM3YjFlM2EwZjNmNTk1NDFiMzE3YTUyZDdmLi5lOWI2ZDdlOTQ2NzQ0ZTFhMDhk
YzFjYzI4YTQ2YjcxMzc3M2M5ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29s
dmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdF
eHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBS
ZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFz
c0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxF
eHByLAotICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5h
cnlFeHByLCBPcHRpb25hbENoYWluLAorICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhw
ciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLCBQcml2YXRlRG90RXhwciwK
ICAgICAgICAgQ29uZGl0aW9uYWxFeHByLCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKICAg
ICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRlcmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcs
IFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFycmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1
Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGlj
OgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVO
dWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29u
c3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlw
ZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7
IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygp
LCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBp
bnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpAQCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBl
ID09IEJyYWNrZXRFeHByOworICAgICAgICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0
eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBQcml2YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNr
ZXRFeHByOworICAgIH0KKworICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlID09IFByaXZhdGVEb3RFeHByOwog
ICAgIH0KIAogICAgIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2Y2IzMTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEu
LjFmNTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3NDA2OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAt
MjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQm
IFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
JiBvdGhlcikKK3sKKyAgICBtX21hcCA9IG90aGVyLm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5n
Q2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEu
cmVzZXQoKTsKKyAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9
IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1f
cmFyZURhdGEpOworICAgIHJldHVybiAqdGhpczsKK30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25t
ZW50OjptYXJrVmFyaWFibGVBc0NhcHR1cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAu
ZmluZChpZGVudGlmaWVyKTsKQEAgLTgwLDYgKzkwLDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25t
ZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQogewogICAgIG1fbWFwLnN3YXAo
b3RoZXIubV9tYXApOwogICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZl
cnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsK
IH0KIAogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTEx
LDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25t
ZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVy
ZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxV
bmlxdWVkU3RyaW5nSW1wbCosIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRF
bnRyaWVzOwotICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6
ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNp
emUoKSk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVz
LmFwcGVuZCh7IHBhaXIua2V5LmdldCgpLCBwYWlyLnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQx
NDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJlYTE5OTJjNTIuLjBjMWQwYWMzZWJhZGNhOGVjMzhh
NmM4OGVhNjMxMzliNDkwYTMzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRl
ICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJ
c1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGlu
Z0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5n
Q2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUz
LDYgKzU2LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9u
KCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJ
c1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNT
bG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0
LDcgKzc4LDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwg
NiwKICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAx
IDw8IDgsCi0gICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5Cisg
ICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJ
c1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAg
fTsKIH07CkBAIC04MywxNSArODgsNTUgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3Ry
dWN0IFByaXZhdGVOYW1lRW50cnkgeworcHVibGljOgorICAgIFByaXZhdGVOYW1lRW50cnkodWlu
dDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMgPSB0cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
RGVjbGFyZWQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0
cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsg
bV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KKworICAgIHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVu
dHJ5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIu
bV9iaXRzOworICAgIH0KKworICAgIGVudW0gVHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBJ
c1VzZWQgPSAxIDw8IDAsCisgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKwor
cHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0
ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFz
cyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBh
Y2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwg
SWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4s
IFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAg
VmFyaWFibGVFbnZpcm9ubWVudCgpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50
KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJp
YWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0g
ZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZp
cm9ubWVudCYmKSA9IGRlZmF1bHQ7CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQorICAgICAg
ICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5n
Q2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVE
YXRhKFdURk1vdmUob3RoZXIubV9yYXJlRGF0YSkpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJs
ZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6
IG1fbWFwKG90aGVyLm1fbWFwKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3Ro
ZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1f
cmFyZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+
KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51bGxwdHIpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJs
ZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIp
OwogCiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9t
YXAuYmVnaW4oKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJl
dHVybiBtX21hcC5lbmQoKTsgfQpAQCAtOTksNyArMTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5l
bmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVu
dGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5F
IE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVy
biBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1
bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVz
U2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJu
IG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJl
bW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVy
biBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRl
cmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7
IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAg
cHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gIW1fbWFwLnNpemUoKTsgfQogCisgICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6
Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5M
SU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkp
OyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisK
KyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBn
ZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElz
RGVjbGFyZWQoKTsKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNl
dElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1
cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2
YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAg
IHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5n
ZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNVc2VkKCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVj
bGFyZWQoKSkKKyAgICAgICAgICAgIGZpbmQoaWRlbnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVy
ZWQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZh
dGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFu
Z2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFs
aWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKHByaXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAg
ICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVn
aW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5z
KGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29w
eVByaXZhdGVOYW1lcyhWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YSA9IFdURjo6
bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgaWYg
KHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6
IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50cnkudmFsdWUuaXNV
c2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
b3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFs
dWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91
dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQgYnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciBy
ZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFuCisgICAgICAgIC8vIGlubmVyIFBy
aXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMg
dXNlZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgY29kZSB0aGFuIGl0IGlzIGRl
ZmluZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlm
IChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAg
ICAgICAgICAgICAgICAgICBvdXRlci5nZXRPckFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQo
KSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBz
dHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAgICAgICAgUmFyZURhdGEoUmFyZURhdGEmJiBv
dGhlcikKKyAgICAgICAgICAgIDogbV9wcml2YXRlTmFtZXMoV1RGTW92ZShvdGhlci5tX3ByaXZh
dGVOYW1lcykpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBSYXJlRGF0YShjb25zdCBS
YXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUmFyZURhdGEmIG9wZXJhdG9yPShjb25zdCBS
YXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVz
OworICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52
aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1
cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVOYW1lRW50cnkmIGdldE9yQWRkUHJpdmF0ZU5h
bWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5hbWVFbnRyeSgwKSkuaXRlcmF0b3ItPnZhbHVl
OworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJl
RGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRl
eCBiZjM3OWFkOThiYzM3NzlmNWE5MGFjMmVhOGY0ZTliZGNkM2NhOTU2Li5jM2FlM2M2YjVjNTJh
Y2U0ZjYwZjNlNWQ2OTM1ZmQyMDU5MGU2ZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04NTcsNiArODU3LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZW5jb2RlKGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAg
ICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNvZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7Cisg
ICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIp
OworICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNo
ZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IHsKQEAgLTEwMDQsMjMgKzEwMTAsNDUg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDog
MTsKIH07CiAKK2NsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKK3B1YmxpYzoK
KyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5l
bmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZv
aWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRh
JiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShk
ZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAg
IENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlx
dWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+Piwg
UHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVO
YW1lczsKK307CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2Fj
aGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAg
ewogICAgICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gZW52Lm1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQ7CiAgICAgICAgIG1fbWFwLmVuY29kZShlbmNvZGVyLCBlbnYubV9tYXApOworICAgICAg
ICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBlbnYubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAg
fQogCiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVu
dCYgZW52KSBjb25zdAogICAgIHsKICAgICAgICAgZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQg
PSBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5kZWNvZGUoZGVjb2Rlciwg
ZW52Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVu
dDo6UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2Rlciwg
KmVudi5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29s
IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8
Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0
clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBW
YXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBtX21hcDsKKyAgICBDYWNoZWRQdHI8
Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xh
c3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50PiB7CkBAIC0xMTQ4LDYgKzExNzYsMjIgQEAgcHJp
dmF0ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7CiB9OwogCitjbGFzcyBDYWNoZWRTeW1ib2xUYWJs
ZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVS
YXJlRGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7Cisg
ICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVO
YW1lcyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3ltYm9s
VGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAg
ICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVz
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2Fj
aGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7
Cit9OworCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3lt
Ym9sVGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCkBAIC0xMTU4LDYgKzEyMDIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fbmVzdGVkTGV4aWNhbFNjb3BlID0gc3ltYm9sVGFibGUubV9uZXN0ZWRM
ZXhpY2FsU2NvcGU7CiAgICAgICAgIG1fc2NvcGVUeXBlID0gc3ltYm9sVGFibGUubV9zY29wZVR5
cGU7CiAgICAgICAgIG1fYXJndW1lbnRzLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX2Fy
Z3VtZW50cy5nZXQoKSk7CisgICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIHN5bWJv
bFRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIFN5bWJvbFRhYmxlKiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTExNzEsNiArMTIxNiwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBzY29wZWRBcmd1bWVudHNUYWJsZSA9IG1f
YXJndW1lbnRzLmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKHNjb3BlZEFyZ3VtZW50c1Rh
YmxlKQogICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fYXJndW1lbnRzLnNldChkZWNvZGVyLnZt
KCksIHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1bWVudHNUYWJsZSk7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX3JhcmVEYXRh
ID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPigpOwor
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICpzeW1ib2xUYWJsZS0+bV9y
YXJlRGF0YSk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGU7CiAgICAg
fQogCkBAIC0xMTgxLDYgKzEyMzEsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVzdGVk
TGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7CiAgICAgQ2Fj
aGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsKKyAgICBDYWNo
ZWRQdHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNz
IENhY2hlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hl
LmNwcAppbmRleCA5ZTE3MmI2YWVhNzRiMDYyZGU5ZmZlZjhkYTU2ZDQ5MzRmOTRkNTU2Li5lNzJi
ZDM1ZjE1YjdmMzEyYWE0YTFiZTJjMTIyZGQxY2E3MDNjMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgVW5saW5rZWRD
b2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHMKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRD
b2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgYm9vbCBpc0luc2lkZU9yZGlu
YXJ5RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJz
ZTxSb290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJC
dWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBl
czxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVl
ZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4
dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFy
eUZ1bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVz
PFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVk
ZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0
VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJpYWJsZXNVbmRlclREWiwgbnVsbHB0
ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDYyYzBkNTk1NzNhNmE2Mzk5MDkzOWYxY2Vm
OTRkOTE5ZDdkNzNjNmUuLjdlZTcxM2M5YzRhMjU5MmZmMzMwZjY4ZjVhNjY0NmVkM2U4MDlhY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIElOSVRJ
QUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5h
bWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQogI2Rl
ZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1l
cy0+bmFtZSMjU3ltYm9sKCkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1F
KG5hbWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIj
IiAjbmFtZSkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0p
CiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00NSw2ICs0Niw3IEBAIENvbW1vbklkZW50aWZp
ZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVS
U19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJ
RklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBK
U0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklU
SUFMSVpFX1NZTUJPTCkKKyAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9G
SUVMRChJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZDE2NGJh
NGJlZjhiNGVlZmY5MzE3MzdiMzk1M2YzNGZlMTIzMmEyOC4uOWRmYTc1OWQ4MTQ5NTUxYjVhMDY0
NWEwNWU2MGZmMmE4Y2NkZGU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMDUsNiArMjA1LDkgQEAKICAgICBtYWNybyh3
cml0YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAKKyNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX1BSSVZBVEVfRklFTEQobWFjcm8pIFwKKyAgICBtYWNybyhjb25zdHJ1Y3RvcikK
KwogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAog
ICAgIG1hY3JvKGF3YWl0KSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTMxOSw2ICszMjIsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9X
RUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9Q
UklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAogCisjZGVmaW5lIEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1l
IyNQcml2YXRlRmllbGQ7CisgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklW
QVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwpCisj
dW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTAorCiAgICAg
ICAgIC8vIENhbGxlcnMgb2YgdGhpcyBtZXRob2Qgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IGlkZW50
aWZpZXJzIGdpdmVuIHRvIHRoaXMgbWV0aG9kIAogICAgICAgICAvLyBzdXJ2aXZlIHRoZSBsaWZl
dGltZSBvZiBDb21tb25JZGVudGlmaWVycyBhbmQgcmVsYXRlZCBWTS4KICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRFeHRlcm5hbE5hbWUoY29uc3QgSWRlbnRpZmllciYgcHVi
bGljTmFtZSwgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMzhmMGM5MzJm
MWViYTNkOGRkYjA1MzFmNmE3ZDU0NWNkNDJmYmExYS4uNDA0MGMxYmQzNDMwNjgzMmQzYjI0OTY1
NWY3ZWFjMDk5N2VmMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xMzA0LDYgKzEzMDQsNzIgQEAgU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgIFJFVFVSTl9QUk9GSUxFRChi
YXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpKTsKIH0KIAorU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KQoreworICAgIEJFR0lOKCk7CisK
KyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlWYWxEaXJlY3Q+KCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsK
KworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmlu
ZygpKSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxs
KCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Q
cm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+
IGV4aXN0aW5nQXRvbVN0cmluZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9t
U3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAg
ICAgICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAo
SlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eSh2
bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21TdHJpbmcuZ2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJf
dCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVBy
b2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisKKyAgICAgICAgaWYgKGlzSlNTdHJp
bmcoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNh
bkdldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChhc1N0cmluZyhi
YXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKKyAgICAgICAgICAgIGFycmF5
UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKKyAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUu
aXNPYmplY3QoKSkgeworICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkp
CisgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5
KGkpKTsKKworICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7
CisKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENv
bnRpZ3VvdXMgJiYgaSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50
MzIsIGFuZCBtYXliZSBEb3VibGU6CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAorICAgICAgICAgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgICAgICBz
a2lwTWFya2luZ091dE9mQm91bmRzID0gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1
Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90
eXBlQ2hhaW5Jc1NhbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFza2lw
TWFya2luZ091dE9mQm91bmRzICYmICFDb21tb25TbG93UGF0aHM6OmNhbkFjY2Vzc0FyZ3VtZW50
SW5kZXhRdWlja2x5KCpvYmplY3QsIGkpKQorICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+
c2V0T3V0T2ZCb3VuZHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIFJFVFVSTl9QUk9GSUxFRChq
c1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJj
aWJsZShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIGF1dG8gcHJv
cGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIENIRUNL
X0VYQ0VQVElPTigpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworCisgICAgYm9vbCBm
b3VuZCA9IChiYXNlVmFsdWUuYXNDZWxsKCktPmlzUHJveHkoKSAmJiBwcm9wZXJ0eS5pc1ByaXZh
dGVOYW1lKCkpCisgICAgICAgID8gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChhc09iamVj
dChiYXNlVmFsdWUpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KQorICAgICAgICA6IGJh
c2VWYWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7
CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFmb3VuZCAmJiBwcm9wZXJ0eS5pc1By
aXZhdGVOYW1lKCkpCisgICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9y
KGdsb2JhbE9iamVjdCkpOworICAgIFJFVFVSTl9QUk9GSUxFRChmb3VuZCA/IHNsb3QuZ2V0VmFs
dWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkgOiBqc1VuZGVmaW5lZCgpKTsKK30KKwogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5k
ZXggYTgyNDhkNDUyNGEzYzVkZjA5ZGFmNjQ5NzQ2NmI5NzI1MDMzMjU2Zi4uN2MxZDgyM2FhNmEx
MTFjYTM0N2FiNDFhMmEwOWExZDcxODI4ODVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI3Miw2ICsyNzIsNyBAQCBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBhZjk4ZDRkMjdiNDFkMTQzMzZh
MDIxOGU4MGI3NmNlNGQ4YjQwYjcyLi5kODFlNTg2NjQxYmQ2ZmMyYmFjZDBmYjQxNzk5MWNiZjE1
ZjU5YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcApAQCAtMzI5LDYgKzMyOSwxNiBAQCBKU09iamVjdCogY3JlYXRlVERaRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gY3JlYXRlUmVmZXJl
bmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLiIpOwogfQogCitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUg
ZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7Cit9CisKK0pTT2Jq
ZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1h
a2VTdHJpbmcoIkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1
bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCiBFeGNlcHRpb24qIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBz
Y29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCAzNzZmMmFmNDBkODQ2
NDcyNjM0NGM3MzczMjMyZTFjZDVhOTY4ZGY0Li5hYzgxZDJiYmE5Mjg5OGZkYjY0NDFjN2JkMjJj
MDEzNjM0YWYxZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oCkBAIC01Myw2ICs1Myw4IEBAIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlk
SW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xv
CiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2ln
bm1lbnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKK0pTT2JqZWN0KiBjcmVhdGVJ
bnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0
ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIFN0cmluZyBlcnJv
ckRlc2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogSlNfRVhQ
T1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmpl
Y3QqLCBUaHJvd1Njb3BlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTlhNDhmYjkzMGM1YmYwZjM1NTFlM2YzNDZkNjRjODc1
NmU0NTYzMS4uYzZkN2Q4NmRiOTZjNTM1NDAwNTUxMmMxYzdiNjkzZmRjOWU4MmQ2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
MzA5LDYgKzMwOSwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNP
d25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blBy
b3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpKTsKIH0KIAor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3JlYXRlUHJpdmF0ZVN5bWJvbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6
Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7
Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKIHsKQEAgLTExOTMsNiArMTE5OSwxMSBAQCBjYXBpdGFsTmFtZSAjIyBDb25z
dHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFs
TmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVu
Y0RhdGVUaW1lRm9ybWF0KSk7CiAgICAgICAgIH0pOwogCisgICAgLy8gUHJpdmF0ZVN5bWJvbHMg
LyBQcml2YXRlTmFtZXMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKV0uaW5pdExhdGVyKFtd
IChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNl
dChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5p
dC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CisgICAgICAgIH0p
OworCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFN
SU5HX0FQSSkKICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCiAgICAgbV9saW5rVGlt
ZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6d2ViQXNz
ZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
Y29wZS5jcHAKaW5kZXggYjNjMjcyMDIyODA2YjgxMTQzNTdkODFkZTlmM2I1ZmMxMDM1NGQ5YS4u
OTI3NDA2NGVmNWM5N2U1OGRkMjA1NmJmNWZmNmY3ZjcwZmZmMzkyNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMzOSw2ICszMzksMTAgQEAgdm9pZCBK
U1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBW
YXJpYWJsZUVudmlyb25tZW4KICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1i
b2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHN5bWJvbFRhYmxlLT5l
bmQobG9ja2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2NrZXIpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkpOworICAgICAgICBp
ZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gbmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKKyAgICAgICAgICAgICAgICBy
ZXN1bHQudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICB9CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBhNzVlYWZj
YmRkZjgxOTVhNjcwYTFjOGYwYWI5YWYxZTZkNTg1ZWE0Li5lM2ZlNmExNTNkZGQ2MGRjMzNjNGZk
ZTM4ZWEwZTc1ZGU4ZTVhMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKQEAgLTUwNSw2ICs1MDUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJB
c3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlUHVibGljQ2xhc3NG
aWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5k
IHB1YmxpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCB1c2VM
b2dpY2FsQXNzaWdubWVudE9wZXJhdG9ycywgZmFsc2UsIE5vcm1hbCwgIkVuYWJsZSBzdXBwb3J0
IGZvciBcP1w/PSwgfHw9LCBhbmQgJiY9IGxvZ2ljYWwgYXNzaWdubWVudCBvcGVyYXRvcnMuIikg
XAogICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbiwg
ZmFsc2UsIE5vcm1hbCwgIkZvciB0aGUgYXJtNjQgRXhlY3V0YWJsZUFsbG9jYXRvciwgaWYgdHJ1
ZSwgc2VsZWN0IHdoaWNoIHJlZ2lvbiB0byB1c2UgcmFuZG9tbHkuIFRoaXMgaXMgdXNlZnVsIGZv
ciB0ZXN0aW5nIHRoYXQganVtcCBpc2xhbmRzIHdvcmsuIikgXAorICAgIHYoQm9vbCwgdXNlUHJp
dmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxs
IHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVu
dW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggYmM0OWRjOTgyYzczMjgyYmVk
ZWIyYjFkZWZjNzY3YTg1YWIzNWFmOS4uNzc5MGNmNTczZDI2Zjk1MmY0OTk5YTUzZjNjMjc1ZDY3
NTFhM2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxl
LmNwcApAQCAtMTgzLDYgKzE4MywxMSBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25l
U2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVy
KQogICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV91bmlxdWVUeXBlU2V0TWFw
LnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQorCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFt
ZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IGUyMzRkMzE0YzY5ZWQy
ZDExMTMyMzkxNGJhMjdkM2Q5MzE1NTI2NzYuLjMxZjgxZmFlMDJmYjIwMWQzMjE4YmIwZmI0YzUy
ZDIyMWY0Y2Q2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRl
IDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbEltcGwuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1MCw2ICs0NTAsOCBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0Piwg
SWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1h
cDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVj
OworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlm
aWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFu
Z2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9y
UmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC01OTQsNyAr
NTk2LDI1IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xv
Y2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkp
KTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lcygpIGNvbnN0IHsgcmV0
dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2UgcHJpdmF0ZU5hbWVzKCkK
KyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJk
ZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAg
ICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVzKCkpOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9y
UmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5p
cXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+
aXNTeW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFy
ZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKworICAgICAg
ICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOworICAg
ICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICB9CisKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lkIHNldChjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRyeSYmIGVudHJ5KQogICAgIHsKQEAg
LTcyOSwxOCArNzQ5LDIxIEBAIHByaXZhdGU6CiAgICAgU2NvcGVPZmZzZXQgbV9tYXhTY29wZU9m
ZnNldDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwotcHJp
dmF0ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDogMTsKLSAgICB1bnNpZ25l
ZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUu
Ci0gICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5cGUKLSAgICAKKwogICAg
IHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFwOwogICAgICAg
ICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5p
cXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxD
b2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVO
YW1lczsKICAgICB9OworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2
YWwgOiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1
bmN0aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNj
b3BlVHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFy
ZURhdGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVkQXJndW1lbnRzVGFibGU+IG1fYXJndW1l
bnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCAyYjczZTUzOGM3ZjA3M2FmMTcwNDVlODE3MjI3MDRiOTBiOTkxNGI5Li44NDU0ZjMyMWVj
NjcxNGFhZmE3NTA3ZTI0NTQzNmI4YThlZjQyYjkxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA0LTIy
ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRk
IHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRzIHVwb24gdGhlIGVhcmxpZXIgcHVibGlj
IGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9mIHByaXZhdGUKKyAgICAgICAgZmllbGQg
dGVzdHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rp
b24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNo
ZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmll
bGRzLXByaXZhdGUtdXNlLWV2YWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzOgorICAgICAgICAqIHN0cmVzcy9nZXQtYnktdmFsLWRp
cmVjdC1nZXRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1l
LWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0
MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA0LTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNCaWdJbnQgaW5jIG9wZXJhdGlvbiBkb2VzIG5v
dCBwcm9kdWNlIHJpZ2h0IEhlYXBCaWdJbnQgemVybwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGExMTYzZTE2
N2VkMGQ2YzVmNjc2NTZkMDFiMzRkODhjYjc0ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKQEAgLTAsMCArMSwx
OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKwor
ZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xh
c3MgQyB7CisgICAgI20gPSAoKSA9PiAyNTsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1l
dGhvZCgpLCAyNSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmE0ZjQzNTRmODk3ZjExMzc0
MDg3MTI2MDQ2YzZmMWRmZDNlN2U5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2RlLmpzCkBAIC0wLDAgKzEsMTggQEAK
Ky8vQCBydW5CeXRlY29kZUNhY2hlKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKwor
ZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xh
c3MgQyB7CisgICAgI2YgPSAzOworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jZjsKKyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAz
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24t
cHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NjFmNzE4ZDk3NDI3MGFjOGExOWU1ZjdiZjA1MjAwZGViOTM3NmNkCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24t
cHJveHkuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAo
YSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3Nl
cnRBcnJheUNvbnRlbnQoYSwgZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJT
aXplIG9mIGFycmF5cyBkb2Vzbid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
Lmxlbmd0aDsgaSsrKQorICAgICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9
ICIgKyBhW2ldICsgIiBidXQgZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJy
ID0gW107CisKK2NsYXNzIFByb3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAg
IHJldHVybiBuZXcgUHJveHkodGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2Jq
LCBwcm9wKSB7CisgICAgICAgICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQor
fQorCitjbGFzcyBUZXN0IGV4dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjZiA9IDM7CisgICAgbWV0
aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3
IFRlc3QoKTsKK2xldCByID0gdC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMg
YnV0IGdvdDogIiArIHIpOworCithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9m
LWxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGlu
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42OWQ4NjIxNjAxZDVkZTM0YTQyODM0NmQ1MWNjZjgyMmZiZjU2MGE5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
b3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBp
ZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworbGV0IGtsYXNzU291cmNlID0gYAordmFyIEMgPSBjbGFz
cyB7CisgICAgYXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKSB7CisgICAgICAgIGFzc2VydCh0aGlzLiNm
MjAwLCAiZm9vIik7CisgICAgfQorYDsKKworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDsgaSsr
KSB7CisgICAga2xhc3NTb3VyY2UgKz0gIiAgICAjZiIgKyBpICsgIjtcbiI7Cit9CisKK2tsYXNz
U291cmNlICs9ICIgICAgI2YyMDAgPSBcImZvb1wiO1xufSI7CisKK2V2YWwoa2xhc3NTb3VyY2Up
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBjLmFzc2VydE91dE9mTGluZVZhbHVlKCk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3ODgwNTdiMWJm
NDk1NTBhMGU4ZjNkOThhOTQxYTgzN2NmMTFjMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCkBAIC0wLDAgKzEsMTUgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIsICItLXVzZVB1
YmxpY0NsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgbWVzc2FnZSkgeworICAg
IGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworfQorCitsZXQgaW5z
dCA9IG5ldyBjbGFzcyB7CisgIGEgPSBldmFsKCIoaSkgPT4gaS4jYiIpOworCisgICNiID0ge307
Cit9OworCitpbnN0LmEoaW5zdCkueCA9IDE7Cithc3NlcnQoaW5zdC5hKGluc3QpLnggPT0gMSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwppbmRl
eCBlNTE2Mjk5YTc5MmM2Mzg0Yjg0MmM2OTdmNDFmY2VkN2Y1Y2ZmZmNmLi41MDY5YTdkYTVhMTU1
ZGNjMDYwNGU0NjMyYjkwZTgzMDkzOWZlODM2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKQEAgLTEsMTEgKzEsMTUgQEAKLS8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PXRydWUiKQogCiBjbGFzcyBBIHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7
CisgICAgI2QgPSAxOwogICAgIGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAgICNm
ID0gZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZh
bCgidHJ1ZSIpOworICAgICNpID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1k
aXJlY3QtZ2V0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdl
dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2MzM2MmZhYTYzZTQwNTYyNWQxZmVjZWNlOTliY2Qy
NjZiOWVhOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGly
ZWN0LWdldHByaXZhdGUuanMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9MSIpCisKKy8vIEdldEJ5VmFsRGlyZWN0IHNob3VsZCB0aHJvdyB3aGVuIHRoZSByZWNl
aXZlciBkb2VzIG5vdCBoYXZlIHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGks
IHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeCA9IGk7CisgICAgY29uc3RydWN0b3Io
KSB7IGlmIChpID09PSAzMCkgcmV0dXJuIHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0
ICN4In07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeDsgfQorICAgIGdldCBb
U3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRoICN4IjsgfQorfQorCit0cnkgewor
ICAgIGZvciAoaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7Cisg
ICAgICAgIGxldCByZXN1bHQgPSBDLngoYyk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGkpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke2N9KSB0byBiZSAke2l9
LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3
ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9y
KSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJv
d24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4t
Y29tcHV0ZWQtcHJvcGVydHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNz
LWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZDhlMjE5MjNmMjAyNGQwMjIw
MmYzYTJlMTZiYjQ5ZTFmOTViM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIiwgIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogKGV4
cGVjdGVkRXJyb3IsIGZ1bmN0b3IpID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1
bmN0b3IoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IubmFtZSArICIgYnV0IHRocm93czog
IiArIGUubmFtZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAgIFt7fS4jeF0gPSAxOyAKKyAg
ICAgICAgI3ggPSAiZm9vIjsKKyAgICB9Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1i
eS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTA0ZGU2ZjUyNTI5MjA3MmEx
NmE1MDQ4NTA5MDE1ZWNhNWI5OWFlYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMKQEAgLTAsMCArMSwzNCBAQAorLy8gVE9E
TzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBy
dW5EZWZhdWx0KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0QnlWYWxUaHJvd0lmRXhpc3RzIiBzaG91
bGQgdGhyb3cgaWYgb3ZlcndyaXRpbmcgYW4gYWxyZWFkeSBleGlzdGluZyBQcml2YXRlTmFtZS4K
K2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICByZXR1cm4gaSA8IDI5ID8gdGhpcyA6IGM7CisgICAgfQorfQorCitjbGFz
cyBDQyBleHRlbmRzIEMgeworICAgICN4ID0gaSsrOworICAgIHgoKSB7IHJldHVybiB0aGlzLiN4
OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0cnkgeworICAgIGZvciAobGV0IGogPSAxOyBqIDwgNTA7
ICsraikgeworICAgICAgICBsZXQgeCA9IG5ldyBDQzsKKyAgICAgICAgaWYgKHgueCgpICE9PSBq
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB4LngoKSB0byBiZSAke2p9
LCBidXQgZm91bmQgJHt4LngoKX1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcg
PSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3Ip
IHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJp
dmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTQyM2MzZTRjMmQ5NzY3NTQ3NGY3ZGQ3MmM0YzMzY2I4NDJhYTlhNAotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZh
dGUuanMKQEAgLTAsMCArMSwzMSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisK
Ky8vIEdQVkQgd2l0aCAiUHV0QnlWYWxQcml2YXRlTmFtZSIgc2hvdWxkIHRocm93IGlmIHdyaXRp
bmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0g
ZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeDsKKyAgICBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIGkg
PCAzMCA/IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91dCAjeCIgfTsgfQor
ICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4ID0gaSsrOyB9CisgICAgZ2V0IFtTeW1i
b2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giIH0KK30KKwordHJ5IHsKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9iaiA9IG5ldyBDOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gQy54KG9iaik7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGop
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke29ian0pIHRvIGJl
ICR7an0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAg
dGhyZXcgPSB0cnVlOworICAgIC8vIHJ2YWwgb2YgQXNzaWdubWVudEV4cHJlc3Npb24gaXMgZXZh
bHVhdGVkIGJlZm9yZSBQcml2YXRlRmllbGRGaW5kKCN4LCBscmVmKSBpcyBwZXJmb3JtZWQsCisg
ICAgLy8gdGh1cyBgaWAgaGFzIGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4KKyAgICBpZiAoaSAh
PT0gMzEgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7
CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
VHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApp
bmRleCA2YjVmOTE4YjZlMWVmMWJjYzk1ZTY5NmY4ZWFjOWQzOWY4ZmRhMWZiLi5jN2Y1M2NiMzIz
ZWM2OTMzOTVhZjRmOTg2ZjY3MGQ1ZGEzZWU0ZWY1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC01LDYg
KzUsNyBAQCBmbGFnczoKICAgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ6IHVzZUludGxSZWxhdGl2
ZVRpbWVGb3JtYXQKICAgV2Vha1JlZjogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXB1Ymxp
YzogdXNlUHVibGljQ2xhc3NGaWVsZHMKKyAgY2xhc3MtZmllbGRzLXByaXZhdGU6IHVzZVByaXZh
dGVDbGFzc0ZpZWxkcwogICBsb2dpY2FsLWFzc2lnbm1lbnQtb3BlcmF0b3JzOiB1c2VMb2dpY2Fs
QXNzaWdubWVudE9wZXJhdG9ycwogc2tpcDoKICAgZmVhdHVyZXM6CkBAIC0xMyw3ICsxNCw2IEBA
IHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0
OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAgLSBjbGFzcy1maWVsZHMtcHJpdmF0
ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRz
LXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398086</attachid>
            <date>2020-04-30 13:13:33 -0700</date>
            <delta_ts>2020-05-06 18:27:06 -0700</delta_ts>
            <desc>Patch v18</desc>
            <filename>bug-206431-20200430161331.patch</filename>
            <type>text/plain</type>
            <size>196318</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjZjOWUwYjIwZTkwODdjYjk2YjdlMTI1ZWJkNmRkYjI2YzRiODRmLi44ZjgzMmY3MzMyNjc0ZTlm
MmM5NDlhZDU1ZGI2OWNlZTZjZWEwYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTUgQEAKKzIwMjAtMDQtMzAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBUaGUgZGlmZmVy
ZW5jZXMgYXJlCisgICAgICAgIHN1YnRsZSwgYnV0IHJldm9sdmUgYXJvdW5kIHdoZXRoZXIgb3Ig
bm90IGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZHVyaW5nIGNlcnRhaW4gYWNjZXNzZXMuCisKKyAg
ICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBhcmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRo
ZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0
aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBhY2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUg
ZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVk
IGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxkIGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVk
IGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAgICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5
IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhlciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAg
ICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHByaXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBs
aWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFkcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAg
IDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAg
ICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxE
b05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAs
IDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJlY3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHBy
b2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisKKyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAg
ICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xv
YmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNj
b3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxO
b3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNl
aXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZh
dGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBEZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJs
eSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlW
YWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRk
ZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcgSlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAo
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29k
ZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oLgorICAgICAgICAoV1RGOjpwcmludEludGVybmFs
KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdz
OjpjcmVhdGVEaXJlY3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2
YXRlRmllbGRBZGQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRl
RmllbGRQdXQpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc0RpcmVjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6UHV0QnlWYWxGbGFnczo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkQWNjZXNzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRQdXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFkZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OlB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAqIGJ5dGVj
b2RlL1B1dEtpbmQuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5v
ZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2Rl
OjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9k
ZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNs
YXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgor
ICAgICAgICAqIGdlbmVyYXRvci9EU0wucmI6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNh
Y2hlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklU
UHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNs
b3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9y
KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFN
b2RlKToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KToKKyAgICAgICAg
KEpTQzo6SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgICogaml0L0pJVE9wZXJh
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXRQcml2YXRlRmllbGQpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAg
ICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjphcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjp0
cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1By
aXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAg
ICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVyPExDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VUNoYXI+OjpwYXJzZUlkZW50aWZp
ZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVy
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4V2l0aG91dENsZWFyaW5nTGlu
ZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAg
ICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkRvdEFj
Y2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxs
RG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAg
ICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAgICAgIChKU0M6OlJl
YWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4
aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAo
SlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRpb24gY29uc3QpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2Rl
OjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OnR5cGUgY29u
c3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlTmFtZSBjb25zdCk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OlNjb3BlKToKKyAg
ICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6
c2V0SXNDbGFzc1Njb3BlKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc1ByaXZhdGVOYW1lKToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKToKKyAgICAg
ICAgKEpTQzo6U2NvcGU6Omhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U2NvcGU6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cHJpdmF0ZU5h
bWVTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZXhwZWN0UHJpdmF0ZU5hbWVTY29wZSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVy
U2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Om1hdGNoQW5kVXBkYXRlKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4
Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEb3RBY2Nlc3Mp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAg
ICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJv
bm1lbnQ6OnN3YXApOgorICAgICAgICAoSlNDOjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6
Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQ
cml2YXRlTmFtZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eTo6c2V0SXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OlBy
aXZhdGVOYW1lRW50cnkpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1VzZWQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0RlY2xhcmVkIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNVc2VkKToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNEZWNsYXJlZCk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVOYW1lRW50cnk6OmJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVu
dHJ5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjptYXBT
aXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6dXNlUHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXMg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXNT
aXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6aGFzUHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpjb3B5UHJpdmF0ZU5h
bWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVj
bGFyZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpnZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFzUHRyIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjplbmNvZGUp
OgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmRlY29k
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmVuY29k
ZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY29kZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmVuY29kZSk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpD
YWNoZWRTeW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVD
YWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAg
IChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgor
ICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToK
KyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDQtMjkgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIEVuc3VyZSBJbnRsIGNs
YXNzZXMgZG9uJ3QgaGF2ZSBuYW1pbmcgY29uZmxpY3RzIHdpdGggdW5pZmllZCBidWlsZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTcyYjZjNmJhMDk0MDVjNmIzMjk5
MTcxYzQ4MmY2NWExMzZkM2RkLi5iOGYwOGE3M2E1ODNiMTM4NGJlYWVmZjQ3OTI0MWRkMjFjZGU1
OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDAsNiArNTQwLDcg
QEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRl
Y29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5
dGVjb2RlL1B1dEJ5SWRGbGFncy5oCisgICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAg
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAg
ICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjE2YzkyN2IyNDZkN2RmOTBjMzRjMmVjZWVjMzY5N2IxNmE3YzMwNS4uYmQwNWI4ODM3YWU5
NDYzOWYyNTA1MjQ1ZmU2YTVmMTQ3MTFlYTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEyNTEsNiArMTI1MSw3IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJySklULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NjcwNEI4MDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY3NkM2
RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0
MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMx
MUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJ
bnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2OTc2RTVBMUZBMzc1OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDExOCw2ICs0MTE5
LDggQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhcnNlci5oOyBwYXRoID0geWFyci9ZYXJy
UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJu
Lmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3
NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFBy
aXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04Mzk5LDYgKzg0MDIsOCBAQAogCQkJ
CTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5
M0I0QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkz
QjRBODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKKwkJCQk4Njc2QzZF
NzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCisJCQkJODY3NkM2RTYy
MzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFC
NUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3
MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAtMTAxNTAsNiArMTAxNTUsNyBAQAogCQkJ
CTBGMTVDRDIzMUJBNUY5ODYwMDMxRkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjkzQjRBQTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyog
UHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0
MDBENTJBRTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZC
MTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKaW5kZXggMGY0YzUwZGYzNjdjNjU2MDhhMGFmNjI4M2EwZGM1MjZhOTQx
MGE1ZS4uNTgxMTRhMTMyZjBmMmEwNDRkNzA2ZTZjZTg0MTczZmE4Yjc0YWU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4LDYgKzI2OCw3IEBAIGJ5dGVjb2RlL1Byb3h5YWJs
ZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCitieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmNwcAogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1Jl
ZHVjZVdoaXRlc3BhY2UuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAxMzYyNWY1YmE4
OTljY2RlYmI1NjM1NDg3ZmRjMTUyNDZlNzJiODIyLi4wZjI1MzFjMzA2ODJkMWI4M2ZiMjZhOGQy
MWU2MmRlZTQ3ZDcwZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5oCkBAIC0xNjksNyArMTY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFj
cm8obWV0YSkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFs
KSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0cmVhbWluZ0ludGVybmFsKSBc
Ci0gICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSAKKyAgICBtYWNybyhpbnN0YW5j
ZUZpZWxkSW5pdGlhbGl6ZXIpIFwKKyAgICBtYWNybyhjcmVhdGVQcml2YXRlU3ltYm9sKQogCiBu
YW1lc3BhY2UgU3ltYm9scyB7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9M
UyhuYW1lKSBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9s
SW1wbCBuYW1lIyNTeW1ib2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgppbmRleCA0OTg1NzkwMzMwY2M5ZTUzMjliMzFhZWU3YzI2YmNjMTJlNDlj
MTM4Li45YzA5NzJjMTNlY2Q3ZmUyZjA5ZjhjMzFjNjg1MTUzMGM5ZGY1OWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ5LDYgKzQ5
LDcgQEAgdHlwZXMgWwogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVy
dHlPZmZzZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKKyAgICA6UHV0QnlWYWxGbGFncywKICAgICA6
UmVzb2x2ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NDks
NiArNTUwLDE3IEBAIG9wIDpnZXRfYnlfdmFsLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdl
dEJ5VmFsSGlzdG9yeSwKICAgICB9CiAKK29wIDpnZXRfYnlfdmFsX2RpcmVjdCwKKyAgICBhcmdz
OiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAg
ICBtZXRhZGF0YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIGFy
cmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAg
YXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NzQsNyArNTg2LDcg
QEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0
dWFsUmVnaXN0ZXIsCi0gICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKKyAgICAgICAgZmxhZ3M6
IFB1dEJ5VmFsRmxhZ3MsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVBy
b2ZpbGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGUzMWIxMzRjMjhjMWYyODM0ZWZjYjc4ZTAxNjVl
ZDdmZjZkODFmM2EuLjExMjRhM2Y2ZjJlM2Q1NWVhNTNjOTEyMGM5YjBlYWQ1NjY3YTAzNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNw
cApAQCAtMjEyLDYgKzIxMiw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1w
bChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhP
cEVudW1lcmF0b3JTdHJ1Y3R1cmVQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhP
cEVudW1lcmF0b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BH
ZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhPcEdldEJ5VmFsRGlyZWN0LCBiYXNl
LCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNF
UyhPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkK
ICAgICBVU0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTQyMyw2ICs0MjQs
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFy
cywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJbnN0YW5jZW9mLCBkc3Qp
CiAgICAgREVGUyhPcEluc3RhbmNlb2ZDdXN0b20sIGRzdCkKICAgICBERUZTKE9wR2V0QnlWYWws
IGRzdCkKKyAgICBERUZTKE9wR2V0QnlWYWxEaXJlY3QsIGRzdCkKICAgICBERUZTKE9wVHlwZW9m
LCBkc3QpCiAgICAgREVGUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZT
KE9wSXNFbXB0eSwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXgg
MGQ5NTcwOTI2YWIxNDczNzhlYzMxNzI4MzhkYjIzNTg4MmRiN2JjZC4uOWQ3M2JmMWVhMDc5MGIy
NzJiYzZlMTQyZDMwNTUyNjEzNzc5YmJkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Rml0cy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgogI2luY2x1
ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgi
CisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNp
bmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdp
c3Rlci5oIgpAQCAtMjU2LDYgKzI1Nyw0NyBAQCBzdHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNp
emU+IHsKICAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJl
Y3QoZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpOwogICAgIH0KIH07
CisKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3Ms
IHNpemU+IHsKKyAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXpl
Pjo6dW5zaWduZWRUeXBlOworCisgICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFu
ZCBhIDIgYml0IGVudW0sIGVuY29kZWQgYXM6CisgICAgLy8gICAgICAgICAgaXNTdHJpY3QKKyAg
ICAvLyAgICAgICAgICAgICB2CisgICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKKyAg
ICAvLyAgICAgICAgICAgXgorICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBO
b25lLCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lz
RGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0g
MjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNr
ID0gMTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5k
U2hpZnQgPSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKKyAgICB7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNv
bnZlcnQoUHV0QnlWYWxGbGFncyBmbGFncykKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3Qg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKKyAgICAgICAgYXV0byBp
c1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSk7CisgICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7CisgICAgICAgIHJldHVybiAo
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkg
fCAoaXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgUHV0QnlW
YWxGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAgYXV0byBpc0Rp
cmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOworICAgICAgICBh
dXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7Cisg
ICAgICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4o
KGdwaSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZFNoaWZ0KTsKKyAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1v
ZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgICAgICByZXR1cm4gYWNjZXNz
ID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPworICAgICAgICAgICAgaXNEaXJlY3Qg
PyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6
Y3JlYXRlKGVjbWFNb2RlKSA6CisgICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHJpdmF0ZUZpZWxkUHV0KGVjbWFN
b2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVByaXZhdGVGaWVsZEFkZChlY21hTW9kZSk7Cisg
ICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0
IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6
OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1
bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggZTJjMWE0OWI0MzRjMGNjNTE1ODQ5
NDQ1YWNkOWZlZGJmNTk3YTAzNy4uNzA0MjU0YmJiN2E1ZGEzMTY5MWIzMTA2NjhiZjM2Y2EwNDU0
ZWM1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1l
Q29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVD
b25zdGFudC5oCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
dihBcnJheSwgbnVsbHB0cikgXAogICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAogICAg
IHYoY2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihjcmVhdGVQcml2YXRlU3ltYm9sLCBu
dWxscHRyKQogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29k
ZSkgbmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZs
YWdzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0
MGE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5VmFsRmxhZ3MuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorCisjaW5j
bHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgor
I2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCit7CisgICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7
CisgICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkRp
cmVjdCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7CisgICAgaWYgKGZsYWdzLmlzUHJpdmF0
ZUZpZWxkQWRkKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQi
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODVlOGUwZjcyZTZjODU1NDhiZDNk
MjU3ODUxYzljMWZjMjgzYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxl
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgOiB1aW50OF90IHsKKyAgICBOb25lLAorICAgIFB1dCwKKyAgICBDcmVhdGUsCit9OworCitj
bGFzcyBQdXRCeVZhbEZsYWdzIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5
VmFsRmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFB1dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICAvLyBBIGRpcmVj
dCBwdXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVj
a2luZyBpZiB0aGUKKyAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgorICAgIGNv
bnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1v
ZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7
CisgICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVByaXZh
dGVGaWVsZEFkZChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRC
eVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOworICAg
IH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQcml2YXRlRmll
bGRQdXQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxG
bGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAg
ICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQorICAgIEVDTUFN
b2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQorICAgIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6Tm9uZTsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6UHV0OyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7
IH0KKworcHJpdmF0ZToKKworICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJl
Y3QsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisg
ICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmUpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3Ms
IEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKKyAgICAgICAg
LCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQorICAgICAgICAsIG1fZWNtYU1vZGUo
ZWNtYU1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9pc0RpcmVjdDsKKyAgICBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBFQ01BTW9k
ZSBtX2VjbWFNb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCA2MTEyNzlmNjA5YTA4NTg5YWRjZTkx
YzJhNWM4YWY2NDgwODBjNGM2Li5mOTBkNTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZi
MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKQEAgLTI3LDYg
KzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90
RGlyZWN0IH07CitlbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0
ZUZpZWxkQ3JlYXRlLCBEaXJlY3RQcml2YXRlRmllbGRQdXQgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAwYmYzMDI4ZDgxMGM2MTZlYjA3YWRh
NjZjNTdkYTkyOTllMWJiY2NlLi41ZjhlYmJjMTgzMzAzNmIzZTFkZTQyY2M4NDU5OWU3NDAzYTJh
M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKSkpOwogICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMgPSBleGVjdXRhYmxlLT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3Vw
ZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFy
c2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAK
ICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBjMTllNjFjNTI4OWI3YzEwNWRmN2M2OWZmNTc3NDU1ZDQ4ZTUy
NDgyLi42NDNkNjEzZTQ2ZGUzYTRiMmVlNjJjYWVkYjEyMzBhZTQ4OGEyZTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMTg4OSw2ICsxODg5LDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlu
c3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAK
ICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IDogUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5
KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBl
dmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVk
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjY2MworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBA
IC0yNjc2LDkgKzI2ODEsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK3sKKyAgICBPcEdldEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJv
cGVydHkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKKyAgICBPcFB1dEJ5VmFs
RGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6
Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3
MDAsNiArMjcxMSwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dElu
dGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRl
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVy
dHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRlRmllbGRBZGQoZWNtYU1vZGUo
KSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQcml2YXRl
RmllbGRQdXQoZWNtYU1vZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVyU2Ft
cGxlckJlZ2luOjplbWl0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDM5N2RkZGM3ZTViOGYxMDBl
OWE5N2Q3YzM0YTY5Njg2NDYxZTZkZDkuLjUzNzQ1NmRjMjExZmM1ZTgyOTkxZjEyZDM1ODY2NDQ1
ODYyMDM2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc4NywxMSArNzg3LDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFs
dWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIAog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJl
Z2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZhdGVG
aWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAg
ICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3Vw
ZXJTYW1wbGVyRW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggMTNkNGJhNzQ4MTIxMTE1YTc5ZGE5MjQyZTZmMjE4
YWNiZTZjYTY4NS4uMTYwODJmMTA2OTZmMDJjYzk5YzIwYzkxYjI5Y2MxMzdjOWUzYzg4NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcApAQCAtNTQ5LDExICs1NDksMzAgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRIb21l
T2JqZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKICAgICBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoZnVuY3Rpb24sIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCksIGhvbWVPYmplY3QpOwogfQog
Cit2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAgLy8g
V2FsayB0aGUgbGlzdCBhbmQgZGVjbGFyZSBhbnkgUHJpdmF0ZSBwcm9wZXJ0eSBuYW1lcyAoZS5n
LiBgI2Zvb2ApIGluIHRoZSBwcm92aWRlZCBzY29wZS4KKyAgICBmb3IgKFByb3BlcnR5TGlzdE5v
ZGUqIHAgPSB0aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGNvbnN0IFByb3BlcnR5
Tm9kZSYgbm9kZSA9ICpwLT5tX25vZGU7CisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3Bl
cnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0
ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwg
TGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisKKyAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzeW1ib2wgPSBnZW5lcmF0b3Iu
ZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJpdmF0
ZVN5bWJvbC5nZXQoKSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgYXJndW1lbnRzLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9T
Y29wZShzY29wZSwgdmFyLCBzeW1ib2wuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0
aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICB9CisgICAgfQor
fQorCiBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVnaXN0
ZXJJRCogcHJvdG90eXBlLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9j
YXRpb25zKQogewotICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1
bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAg
ICAgUmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKKworICAgIC8vIEZhc3QgY2FzZTogdGhpcyBs
b29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgZm9yICg7IHAg
JiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBwLT5t
X25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0
eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAtNzE1LDYgKzczNCw5IEBA
IFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1
dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CisgICAgLy8gUHJpdmF0ZSBmaWVsZHMg
YXJlIGhhbmRsZWQgaW4gdGhlIHN5bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIgZnVu
Y3Rpb24sIG5vdCBoZXJlLgorICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2Rl
OjpQcml2YXRlKSk7CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9IGdlbmVyYXRv
ci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJvcGVydHlOYW1lOwpAQCAtODQ1LDE2ICs4NjcsNjYgQEAgUmVnaXN0ZXJJRCog
RG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0Owot
ICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1Zh
bHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBt
X2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJRCog
cmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERlc3QuZ2V0KCksIGJh
c2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QuZ2V0
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAorUmVn
aXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRy
PFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgewor
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1l
cyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHBy
aXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7
CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwg
cHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2Rl
KCkpIHsKKyAgICAgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGRzdCwgYmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgbV9pZGVudCk7Cit9CisKK1Jl
Z2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCit7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdEdldFByb3Bl
cnR5VmFsdWUoZ2VuZXJhdG9yLCBkc3QsIGJhc2UsIHRoaXNWYWx1ZSk7Cit9CisKK1JlZ2lzdGVy
SUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3Rl
cklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAg
VmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBi
ZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFt
ZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZSwgcHJpdmF0ZU5hbWUu
Z2V0KCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7
CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJh
dG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChi
YXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIG1faWRlbnQsIHZhbHVlKTsKK30KKworUmVn
aXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0UHV0UHJvcGVydHko
Z2VuZXJhdG9yLCBiYXNlLCB2YWx1ZSwgdGhpc1ZhbHVlKTsKK30KKwogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTE3MzgsMTEg
KzE4MTAsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRPcHRpb25hbENoZWNrKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0K
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBpZiAoYmFzZUlz
U3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyQmFzZSA9IGVtaXRTdXBl
ckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGZ1bmN0aW9uLmdldCgpLCBzdXBlckJhc2UuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQp
OworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBiYXNlSXNTdXBlciA/IGVtaXRTdXBl
ckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCk7
CisgICAgZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmdW5jdGlvbi5nZXQoKSwgYmFz
ZS5nZXQoKSk7CiAKICAgICBpZiAoaXNPcHRpb25hbENoYWluQmFzZSgpKQogICAgICAgICBnZW5l
cmF0b3IuZW1pdE9wdGlvbmFsQ2hlY2soZnVuY3Rpb24uZ2V0KCkpOwpAQCAtMjA2Myw2ICsyMTMz
LDIyIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFy
dCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CisKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlz
UHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJhc2VJc1N1cGVyKTsKKyAgICAgICAg
VmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2
YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwor
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0
R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFt
ZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQb3N0
SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVl
LmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUu
Z2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUo
ZHN0LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VJc1N1
cGVyKSB7CkBAIC0yMjg2LDYgKzIzNzIsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1p
dERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RB
Y2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAgUmVn
aXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1lKCkpIHsK
KyAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAgIFZhcmlh
YmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKworICAg
ICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQoKSwg
YmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBlbWl0SW5jT3JEZWMoZ2Vu
ZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCks
IHZhbHVlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwg
cHJvcERzdC5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1
ZTsKICAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpIHsKICAgICAgICAgdGhpc1ZhbHVl
ID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKQEAgLTMxMjgsMTEgKzMyMjksNyBAQCBSZWdpc3Rl
cklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0
b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gZm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkgPyByZXN1bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IudGVtcERl
c3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgaWYgKG1fYmFzZS0+
aXNTdXBlck5vZGUoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0g
Z2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJh
c2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBt
X2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKKyAgICBlbWl0UHV0UHJvcGVydHkoZ2VuZXJh
dG9yLCBiYXNlLmdldCgpLCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7
CiB9CkBAIC0zMTQ0LDIzICszMjQxLDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNp
ZGUobV9iYXNlLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0
b3IpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRp
dm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVl
OwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgdGhpc1ZhbHVlID0g
Z2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFs
dWUuZ2V0KCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCks
IG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGVtaXRHZXRQcm9wZXJ0
eVZhbHVlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpLCB0aGlzVmFsdWUpOworCiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJl
YWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24o
ZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVy
YW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3Jp
cHRvcigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmICht
X2Jhc2UtPmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0g
ICAgZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
bV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1p
dFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFs
dWUpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5nZXQo
KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNob3J0Q2lyY3VpdFJl
YWRNb2RpZnlEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00
NjI0LDYgKzQ3MTMsMTcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9wZXJ0
eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVy
YXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlX
cml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRp
b24pOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5
cGU6OlByaXZhdGVOYW1lOiB7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJp
YWJsZSgqbV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgp
LCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJs
ZXMiKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCks
IHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50LT5sZW5ndGgoKSk7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxw
dHIsIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
cHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5k
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVQcml2YXRlRmllbGQoZ2VuZXJhdG9yLnRo
aXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFt
ZTogewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xh
c3MgZmllbGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTgzMzAKQEAgLTQ2MzQsNyArNDczNCw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiQ29tcHV0ZWQgbmFtZXMg
bXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigp
ICsgMSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShw
cml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBt
X3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwpAQCAtNDcyNyw2ICs0
ODI3LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBnZW5lcmF0b3IuZW1pdENhbGxE
ZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdl
dCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9zaXRpb24pOwog
CiAgICAgaWYgKG1fY2xhc3NFbGVtZW50cykgeworICAgICAgICBtX2NsYXNzRWxlbWVudHMtPmVt
aXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iuc2NvcGVSZWdp
c3RlcigpKTsKKwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IGluc3RhbmNlRmllbGRM
b2NhdGlvbnM7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lQ2xhc3NFbGVtZW50cyhtX2Ns
YXNzRWxlbWVudHMsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIGluc3RhbmNl
RmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAoIWluc3RhbmNlRmllbGRMb2NhdGlvbnMuaXNF
bXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDFhM2VlMzUwMTRmYTQ4NGJhYjdlMzY4ODBiMjQyNGM5YTM0YjNmMWUuLmU2
ZmRjYWU2ODcwNzVjYzY1ZmMxYjUzODRiMWNhOWFiN2VjMWNmMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03Miw2ICs3Miw3IEBA
CiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdz
LmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3Mu
aCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVu
dC5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0xMjY5LDYgKzEyNzAsMTgg
QEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07CiB9
OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK0VDTUFNb2RlIGVjbWFNb2RlKEJ5dGVj
b2RlIGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOworfQorCit0
ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxEaXJl
Y3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9j
YXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBB
U1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC04MTkxLDcgKzgyMDQsNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBv
c3JFeGl0SW5kZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQot
ICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVt
YmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNv
ZGUubV9lY21hTW9kZSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZp
ZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3Ny
RXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOwogICAgIH0KIAogICAgIGlmICghY29tcGls
ZWRBc1B1dEJ5SWQpIHsKQEAgLTgyMDIsNyArODIxNSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJ
bmRlCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZh
ckFyZ0NoaWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRvR3Jh
cGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9w
SW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwor
ICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVj
dCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVjbWFNb2Rl
KGJ5dGVjb2RlKSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQg
UHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0
YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggNjUz
MjlmNWM0NWY0MzE1ODNmMzllMWYwMDdlNGUwNjUzOWU1OTQ3NS4uYjBmNGNkZWZlZGZkY2Y0MWNi
NTc4OGMxYmQyYTViYjVjYWY2ZTVjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk3LDYgKzI5Nyw3IEBAIENhcGFiaWxpdHlMZXZlbCBj
YXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJCiAKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3BfY3JlYXRlX2dlbmVyYXRv
cl9mcmFtZV9lbnZpcm9ubWVudDoKKyAgICBjYXNlIG9wX2dldF9ieV92YWxfZGlyZWN0OiAvLyBG
SVhNRTogb3BfZ2V0X2J5X3ZhbF9kaXJlY3Qgd2lsbCBuZWVkIERGRy9GVEwgc3VwcG9ydCB0byBz
aGlwIGNsYXNzIGZpZWxkcy4KICAgICBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAg
Y2FzZSBsbGludF9ldmFsX3Byb2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfbW9kdWxlX3Byb2dyYW1f
cHJvbG9ndWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDc3Y2QzMTViMjgyZWNhMjM5NzEyZjJhOGZiYThmNWIwNDBhYTY3NWMuLjIy
MDhiMDZjNjllNDRkMzEyMmM1MjhjY2FmOGIwOWJkZmZhYTNlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDE0MCw3ICsxNDE0
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNl
ZFJlZ2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRL
aW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
YTFhMTZmYjlkNWMwNzJiNzUwMjU3YzAxZWVlMjhhMDhhZjI0MDIxMi4uNTk4NDhjYjY0ZDg1ZjRj
OWEzNTg3NjQ0M2VkNDJiYTA3NzFjMTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDE2NSw3ICs0MTY1LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpw
YXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
bm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgppbmRleCA5NGRlMzhjYjcxNjc4YWQ4NmFiYWM2YjdjNjI4NzljMTZiMTBj
ODMxLi5kOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQxLDYgKzE0MSw3IEBAIG1vZHVsZSBE
U0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmgKaW5kZXggOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0
OS4uOTVlNjFiY2IzOWM4NmQ2NjI1MmEzNzk5MTJkN2U4NDI0NmE0ZmI1MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3Jv
KE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KSBcCisgICAgbWFjcm8oT3BlcmF0
aW9uUHV0QnlJZEFkZFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKSBcCisgICAgbWFjcm8oT3Bl
cmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKSBcCiAgICAgbWFjcm8o
UHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlkUmVwbGFjZVdpdGhKdW1w
KSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IDk0YjBlNTY2MTM4MTJlZWVmMzZkYjFhOTIyMzY0MjNkMzg3Mzk3NzcuLjMwYmQ1
MjljM2U0ZDIyYTJlZDFmNjc4OTliNDBhZDE0MTE1ZjMwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9zY29wZSkKICAgICAgICAg
REVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklO
RV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAgICAgICBERUZJTkVfU0xPV19PUChn
ZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X2lkX3dpdGhf
dGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAg
ICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5nX2Z1bmNfZGVjbF9p
bl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMzRmM2Q1MGYwNGJjMmI5NmUwZjk1
OWM3YzZiNTUzZjc0NzAwNTUxZC4uNjY5ODM2MjhlMmQ2NTBhNWVhZGUwYjNmNjI4YmY3ZDQwNTg1
NmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00MDEsNyArNDAxLDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAgICAgICAgSnVtcExp
c3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBl
LCBUeXBlZEFycmF5VHlwZSk7CiAKLSAgICAgICAgLy8gSWRlbnRpZmllciBjaGVjayBoZWxwZXIg
Zm9yIFB1dEJ5VmFsLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgRUNN
QU1vZGUgZWNtYU1vZGUoT3ApOworCisgICAgICAgIC8vIERldGVybWluZXMgdGhlIHR5cGUgb2Yg
cHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wPgorICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQoT3ApOworCisgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBH
ZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFsSWRlbnRpZmllckNo
ZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNoZWFibGVJZGVudGlm
aWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBP
cD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKaW5kZXggMjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdjZmE1ZmNjMzAyNjBlNzk1
Yi4uZjQ2MjMzYmRmZjU4YTRiNWUxNTVkYjFiMzcxMmYwODg5Y2EzMTlhZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAK
QEAgLTEzNywxMSArMTM3LDExIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlzR2VuZXJhdG9yOjpn
ZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRCeUlkR2VuZXJhdG9y
OjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0IFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAgRUNNQU1vZGUgZWNt
YU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAg
IGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJl
Z2lzdGVycywgYmFzZSwgdmFsdWUpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQotICAgICwg
bV9wdXRLaW5kKHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2lu
ZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQorICAgICAg
ICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNj
ZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAgICAgICAgLCBtX2Vj
bWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5kKQorICAgICAgICAs
IG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NLaW5kKQogewogICAg
IG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9CkBAIC0xNTMsNiAr
MTUzLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNy
b0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJVFB1dEJ5SWRHZW5l
cmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgeworICAgICAgICBBU1NFUlQo
bV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFNb2RlLmlzU3RyaWN0
KCkpOworICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
QWRkUHJpdmF0ZVN0cmljdE9wdGltaXplOworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZFB1dFByaXZhdGVTdHJpY3RPcHRpbWl6ZTsKKyAgICB9CisKICAgICBpZiAobV9lY21hTW9kZS5p
c1N0cmljdCgpKSB7CiAgICAgICAgIGlmIChtX3B1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRl
eCBmMDNlMDkyNTM4NTQxZmIwMzQwZjEyYzZiYThhNjExMTFmMzM2Nzc1Li5lYmZjYjU1OTY0MDk4
YzYyNGIwMjhmZDdmZGEwOWY3YzY0MTRlYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUg
IlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCkBAIC0xMzAsMTEgKzEzMSwx
MiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9yIDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3Ig
ewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1v
ZGUoRUNNQU1vZGU6OnN0cmljdCgpKQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJ
ZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRl
eCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIs
IEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BS
UmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHBy
aXZhdGVBY2Nlc3MpOwogICAgIAogICAgIHZvaWQgZ2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2Vt
YmxlciYpOwogICAgIApAQCAtMTQzLDYgKzE0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
RUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRLaW5kIG1fcHV0S2luZDsKKyAgICBQcml2YXRl
RmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKIH07CiAKIGNsYXNzIEpJ
VERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJVElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggOWI2YzA1MjQ4YmEyOTI5NmY5
OWVkMzc2ZmI5NDgyOGZiYzkzM2NiZi4uZDUzZTY5NzdkMzlkNzU5ZTY3NDEyZmQ5YWQxYjllNjc4
MmI5N2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY4Niw2
ICs2ODYsMzYgQEAgQUxXQVlTX0lOTElORSBCaW5hcnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRB
cml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUpCiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsK
IH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6
ZWNtYU1vZGUoT3Agb3ApCit7CisgICAgcmV0dXJuIG9wLm1fZWNtYU1vZGU7Cit9CisKK3RlbXBs
YXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9w
UHV0QnlJZCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworfQorCit0
ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZh
bERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5l
Y21hTW9kZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK1ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9wKQoreworICAgIHJldHVybiBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5F
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0
QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCit7CisgICAgcmV0dXJuIG9wLm1fZmxh
Z3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAppbmRleCAyZTE3MjU0ZDZjNDcxYmJiZGFiY2IyNjUzOTlkMWJiYmVkMTc3YTY1
Li45OTJiMWE0OWY5NzE4YzVmNjYwNzQ5MGI3N2YyYWY0OWRjZWUxY2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTcxMSw2ICs3MTEsMTE3IEBA
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9i
amVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3Qs
ICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAorfSAvLyBleHRlcm4gIkMiCisKK3VzaW5nIFB1dFBy
aXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKFZNJiwgQ29kZUJsb2NrKiwg
U3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRpZmllciYpPjsKK0FMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVl
LCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIFB1dEtpbmQg
cHV0S2luZCwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJp
dmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7
CisgICAgQVNTRVJUKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlIHx8IHB1dEtp
bmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0KTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAg
IGJvb2wgZm91bmQgPSBiYXNlT2JqZWN0LT5pc1Byb3h5KCkgPyBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KGJhc2VPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpCisgICAgICAg
IDogYmFzZVZhbHVlLmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsIGlkZW50LCBzbG90
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlICYmIGZvdW5kKQorICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFt
ZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgIGVsc2UgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkUHV0ICYmICFmb3VuZCkKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG51bGxwdHI7CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVj
dCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBDb21tb25TbG93UGF0
aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBpZGVu
dCwgdmFsdWUsIHB1dFNsb3QsICZzdHJ1Y3R1cmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKHZt
LCBjb2RlQmxvY2ssIHN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitleHRlcm4gIkMi
IHsKKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0
cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBDYWNo
ZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAg
IHB1dFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwg
aWRlbnRpZmllciwgdmFsdWUsIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7Cit9CisKK3ZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkQWRkUHJpdmF0ZVN0cmljdE9wdGltaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBl
KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwdXRQcml2YXRlRmllbGQodm0s
IGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwg
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlLCBbPV0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25Q
dXRCeUlkQWRkUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5m
byh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vz
c1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQor
ICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VP
YmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQ
cml2YXRlRmllbGRDcmVhdGUpOworICAgIH0pOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7
CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHV0UHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSwgRGlyZWN0UHJp
dmF0ZUZpZWxkUHV0KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmll
cikKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBjYWxsRnJhbWUpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAg
IEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZv
LT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZEJhc2UpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwdXRQcml2
YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlm
aWVyLCB2YWx1ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0LCBbJl0oVk0mIHZtLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xv
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpP
cGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3Qt
PmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisK
KyAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19j
YXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYgKHN0
dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50
aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxv
Y2ssIGJhc2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZv
LCBEaXJlY3RQcml2YXRlRmllbGRQdXQpOworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBwdXRC
eVZhbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNW
YWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01B
TW9kZSBlY21hTW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDllYTNjYmQ5MzRlYjQ3
MzY5NzFkNmY5ZTFiMjdlNzgxODhkNDY0MTAuLjRhNjM0ZGI5ZjY1ODg2MTg5NTU3MGQ1MGFjNTJm
NGJkOWZmNDk5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CkBAIC0xODgsNiArMTg4LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZEFkZFByaXZhdGVTdHJpY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVS
TkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0
T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJp
dmF0ZVN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1
aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1pemUoSlNH
bG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhNDA4MDU5MzY1MGE2
ZWM1NjhhYTYxMDY5MTdmZTk3YjM4ZjEzMzhiLi44ZThmM2FkYmY3YWFmMzhlMDhjZjY3ZWIxNDM0
YzQ3ZWM5MjY1NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklU
OjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwK
IAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCks
IFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAot
ICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5
dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCks
IEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0IHdy
aXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRp
dGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2Rl
IHNpemUuCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92
YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAg
ICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5t
X3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVj
bWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKKyAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVj
bWFNb2RlKGJ5dGVjb2RlKTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtNjcwLDgg
KzY3MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4
KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMo
KSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25l
ZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1v
ZGUoKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgSlNW
YWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRl
Y29kZSksCisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKaW5kZXgg
NDA5MWM0NGY3ZDcxN2ZjMmIzYTAxYjI0MTEyZWZhOGQzN2E5ZjUwNS4uNjNlYTk3MWFiZmUwYjA0
YWM1NmM2MDNiMWUzN2JjNzIwOGYxNGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAg
SklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRl
Y29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBieXRlY29kZS5tX2VjbWFN
b2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0
S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKQEAgLTQw
Nyw3ICs0MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAg
ICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRl
Y29kZS5tX2VjbWFNb2RlOworICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNv
ZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MTYsNyArNjE2LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCks
IENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWls
YWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9t
SWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAg
IEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdU
MiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/
IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6Tm9uZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAg
IGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCAxOGJkNmU0NTNlOGQ2MDU3MGI5M2IxMjQ3ZWI2NWI4MmVmMjNlZTY3
Li4yOThhZGU1YjZhZDhlMzBhZWFiMTY1NWExZjM4Y2Y1ZWQzZjA3MjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGljIGF1dG8g
YXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAm
c2xvdCwgUHV0S2kKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3Jl
YXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0
OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCisgICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVTdHJpY3Q7CiAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBE
aXJlY3QpCkBAIC01MzIsNiArNTM2LDEwIEBAIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1p
emluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1CiAgICAg
aWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0
KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6
ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQorICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRBZGRQcml2YXRlU3RyaWN0T3B0aW1pemU7
CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKKyAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZVN0cmljdE9wdGltaXplOwogICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwogICAgIH0KICAgICBp
ZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC02MjUsNiArNjMzLDcgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNz
Q2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICAgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2lu
ZCA9PSBOb3REaXJlY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0g
RGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3Jl
YXRlKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFp
bkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY0Miw2ICs2NTEsMTMgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2Rl
QmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlN
aXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBs
KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJh
bnNpdGlvbih2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgb2xkU3RydWN0dXJl
LCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFp
bikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVD
dXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNzEy
NWJkNGY1MWFmODE1YjlkNTA2NjFlYjdhM2MyNDFhNWFkNjAzYi4uNzU2OGQyMzZkM2FmYjVmYzE0
YTYzODc0NTE4NzZmODk5MmY5NDY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNp
bmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAj
aW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAj
aW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCA3NTljMTMyNzBlNThjNjQ0MWFjZjIxYjJmMmQ4YzU1OGRl
OWE4NTMxLi40YTA2MzA2MjgwYTJiN2YyYTI5MWZlNDc3OTJiOWRlYTYxMGM3MjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExMjIs
MTUgKzExMjIsMTggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxf
ZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKKyAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpOwor
ICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0
ZUZpZWxkQWNjZXNzKCk7CiAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsK
ICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFtZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1
cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBib3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVz
IGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgogICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3Jp
cHQuYXNVSW50MzIoKSkpOworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsK
ICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3Jp
cHQuYXNVSW50MzIoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hv
dWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRf
RU5EKCk7CiAgICAgfQogCiAgICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7CisgICAgICAg
IEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBkb3VibGUgc3Vic2NyaXB0
QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsKICAgICAgICAgdWludDMyX3Qgc3Vic2Ny
aXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwog
ICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJ
bmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKQEAgLTExNDQsOSArMTE0NywxNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgaWYgKFVOTElL
RUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICBMTElOVF9FTkQoKTsKIAorICAg
IEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3Mp
OwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5
KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRl
eC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRU
aHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgIGVsc2UgeworICAgICAg
ICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3MpIHsKKyAgICAgICAgICAgIC8vIFRocm93IGEgVHlw
ZUVycm9yIGlmIGF0dGVtcHRpbmcgdG8gc3RvcmUgdG8gYSBub24tZXhpc3RlbnQgcHJpdmF0ZSBm
aWVsZC4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgVERaLWxpa2UgYmVoYXZpb3VyLgorICAgICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgICAgICAgICBib29sIGZvdW5kID0gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChiYXNlT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBz
bG90KTsKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSBieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0
ZUZpZWxkQWRkKCkpCisgICAgICAgICAgICAgICAgTExJTlRfVEhST1coZm91bmQgPyBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkgOiBjcmVhdGVJbnZhbGlkUHJp
dmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgfQogICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25T
bG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0
LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNTdl
Mzk4MmI4MzllYWY5ZWE5OGNmNDgyOTBkNjE0MjMyMDQ0YTVhNi4uNmUzYjQyZDhlOGM1MjU3MmEz
MTczMDg0OWQxMGJhYTgzZWM5NWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE1MTksODQgKzE1
MTksODkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCittYWNybyBnZXRCeVZh
bE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2xvd1BhdGhOYW1lLCBvc3JFeGl0UG9pbnQp
CisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsICVvcGNvZGVTdHJ1Y3Ql
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICAgICAg
IG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmVzdWx0UGF5bG9h
ZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAgICB2YWx1ZVByb2Zp
bGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIEludDMyVGFnLCByZXN1bHRQYXlsb2Fk
KQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHRQ
YXlsb2FkLCBzY3JhdGNoKQotICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCi0gICAgICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgc3RvcmVp
IHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQotICAgICAgICB2
YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgSW50MzJUYWcsIHJlc3VsdFBh
eWxvYWQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQKKyAgICAgICAgbWFjcm8gZmluaXNo
RG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNjcmF0Y2gzKQorICAg
ICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoMSkKKyAgICAgICAgICAgIGZkMmlpIHJlc3VsdCwg
c2NyYXRjaDIsIHNjcmF0Y2gzCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNl
dFtjZnIsIHNjcmF0Y2gxLCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gyLCBQYXlsb2Fk
T2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29k
ZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKKyAgICAgICAgICAg
IGRpc3BhdGNoKCkKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5pc2hEb3VibGVHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2NyYXRjaDMpCi0gICAgICAgIGdldChtX2Rz
dCwgc2NyYXRjaDEpCi0gICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gzCi0g
ICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCi0gICAg
ICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQotICAg
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgc2NyYXRjaDMsIHNj
cmF0Y2gyKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQy
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRh
ZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbW92ZSB0MCwgdDIKKyAgICAgICAgYXJy
YXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0
NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykKKyAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93
KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MworICAgICAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAu
b3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBl
LCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3Vz
OgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
IGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKworICAgIC5v
cEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmluZXEgdDIsIERvdWJsZVNoYXBlLCAu
b3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0
QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKKyAgICAgICAgYmRuZXF1
biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgICMgRklYTUU6IFRoaXMgY291bGQg
YmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAgZmQyaWkgZnQwLCB0MSwgdDIKKyAgICAg
ICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKKworICAg
IC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0
MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFn
ZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhp
bmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5v
cEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFn
T2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisKKyAgICAub3BHZXRCeVZhbERvbmU6
CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFsTm90RW1wdHk6CisgICAgICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1f
cHJvZmlsZSwgdDUsIHQyLCB0MSkKICAgICAgICAgZGlzcGF0Y2goKQotICAgIGVuZAogCi0gICAg
bWV0YWRhdGEodDUsIHQyKQotICAgIGdldChtX2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQot
ICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFkYXRhOjpt
X2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLSAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCi0gICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFnLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzCi0g
ICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAu
b3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5v
cEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRCeVZhbElzQ29udGlndW91czoKLSAgICBi
aWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0
aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9hZGkgVGFnT2Zmc2V0
W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQot
ICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAg
IGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0
MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVi
bGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0
MAotICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdwotICAgICMgRklYTUU6IFRo
aXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KLSAgICBmZDJpaSBmdDAsIHQxLCB0Mgot
ICAgIGdldChtX2RzdCwgdDApCi0gICAgam1wIC5vcEdldEJ5VmFsTm90RW1wdHkKLQotLm9wR2V0
QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEg
dDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRC
eVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5
VmFsU2xvdwotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMs
IHQxLCA4XSwgdDIKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9m
ZnNldFt0MywgdDEsIDhdLCB0MQotCi0ub3BHZXRCeVZhbERvbmU6Ci0gICAgZ2V0KG1fZHN0LCB0
MCkKLSAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKLS5vcEdldEJ5
VmFsTm90RW1wdHk6Ci0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBz
dG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BH
ZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQotICAgIGRpc3BhdGNoKCkKKyAgICAub3BH
ZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOiAgIAorICAgICAgICBnZXRCeVZhbFR5cGVkQXJyYXko
dDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5
VmFsU2xvdykKIAotLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5
cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWws
IC5vcEdldEJ5VmFsU2xvdykKKyAgICAub3BHZXRCeVZhbFNsb3c6CisgICAgICAgIGNhbGxTbG93
UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3BhdGNoKCkKIAotLm9wR2V0QnlWYWxTbG93
OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCi0gICAgZGlz
cGF0Y2goKQorICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgb3NyRXhpdFBvaW50KHNpemUs
IG1ldGFkYXRhLCByZXR1cm4pCisgICAgZW5kKQorZW5kCiAKLS5vc3JSZXR1cm5Qb2ludDoKK2dl
dEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlf
dmFsLCBtYWNybyhzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIGdldHRlclNldHRlck9TUkV4
aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQogICAgIG1ldGFkYXRhKHQyLCB0MykK
ICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0MiwgcjEsIHIwKQogICAg
IHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlWYWxPcChnZXRfYnlfdmFsX2RpcmVjdCwg
T3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX2RpcmVjdCwgbWFjcm8oYSwg
YiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwg
b3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBv
cGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJu
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQppbmRleCA2NTU5MmU4MjRkNjQwODFkMDczY2I2MzIxMGFjNjYzNjg4NzdmMWQx
Li5iZjEyNDQwMmM3Y2VjNjc3NGQ1NThmNzUyMWJiY2Y3NDRkNDIzZTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpA
QCAtMTU2NSw5MCArMTU2NSw5MyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwg
T3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQpCiAK
K21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBzbG93UGF0aE5hbWUp
CisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsICVvcGNvZGVTdHJ1Y3Ql
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICAgICAg
bWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQorICAgICAgICAgICAgZ2V0KG1f
ZHN0LCBzY3JhdGNoKQorICAgICAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwg
OF0KKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxlLCB0
NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBlbmQKIAotbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChy
ZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKLSAgICAgICAgc3Rv
cmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0
QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKLSAgICAgICAgZGlzcGF0Y2goKQotICAgIGVu
ZAorICAgICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAg
ICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKKyAgICAgICAgICAgIGZpbmlzaEdldEJ5VmFs
KHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBmaW5pc2hJbnRHZXRC
eVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9ycSBudW1iZXJUYWcsIHJlc3VsdAotICAg
ICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgZW5kCisgICAgICAgIG1h
Y3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCB1bnVz
ZWQpCisgICAgICAgICAgICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEKKyAgICAgICAgICAgIHN1YnEg
bnVtYmVyVGFnLCBzY3JhdGNoMQorICAgICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEs
IHNjcmF0Y2gyKQorICAgICAgICBlbmQKIAotICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFs
KHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCB1bnVzZWQpCi0gICAgICAgIGZkMnEgcmVzdWx0
LCBzY3JhdGNoMQotICAgICAgICBzdWJxIG51bWJlclRhZywgc2NyYXRjaDEKLSAgICAgICAgZmlu
aXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQotICAgIGVuZAorICAgICAgICBtZXRhZGF0
YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIGdldChtX2Jhc2UsIHQy
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdl
dEJ5VmFsU2xvdykKIAotICAgIGdldChtX2Jhc2UsIHQyKQotICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxTbG93KQotCi0gICAgbW92ZSB0MCwg
dDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxl
LCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0KG1fcHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBzeGky
cSB0MSwgdDEKLQotICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3Qw
XSwgdDMsIG51bWJlclRhZykKLSAgICBtb3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCi0KLSAgICBh
bmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdl
dEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0
QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgotICAgIGJpYWVx
IHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5w
dWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBnZXQobV9kc3QsIHQwKQotICAg
IGxvYWRxIFt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotICAg
IGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzOgotICAgIGJp
bmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKLSAgICBiaWFlcSB0MSwg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBsb2Fk
ZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93
Ci0gICAgZmQycSBmdDAsIHQyCi0gICAgc3VicSBudW1iZXJUYWcsIHQyCi0gICAgam1wIC5vcEdl
dEJ5VmFsRG9uZQotICAgIAotLm9wR2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0
b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFy
cmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEg
dDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZl
Y3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldChtX2RzdCwgdDApCi0gICAg
bG9hZHEgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIs
IC5vcEdldEJ5VmFsU2xvdwotCi0ub3BHZXRCeVZhbERvbmU6Ci0gICAgc3RvcmVxIHQyLCBbY2Zy
LCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIp
Ci0gICAgZGlzcGF0Y2goKQorICAgICAgICBtb3ZlIHQwLCB0MgorICAgICAgICBhcnJheVByb2Zp
bGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkK
IAotLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXko
dDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5
VmFsU2xvdykKKyAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQzKQorICAgICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgICAg
IHN4aTJxIHQxLCB0MQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRjaCgpCisgICAgICAgIGxvYWRDYWdl
ZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKKyAgICAg
ICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwogCi0ub3NyUmV0dXJuUG9pbnQ6Ci0gICAgZ2V0
dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9ieV92YWwsIHNpemUpCi0gICAgbWV0
YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1
LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQy
CisgICAgICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCisg
ICAgICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91
cworCisgICAgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6CisgICAgICAgIGJpYWVxIHQxLCAtc2l6
ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5n
dGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAg
bG9hZHEgW3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwor
ICAgICAgICBqbXAgLm9wR2V0QnlWYWxEb25lCisKKyAgICAub3BHZXRCeVZhbE5vdENvbnRpZ3Vv
dXM6CisgICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUK
KyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRl
cjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBn
ZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCisgICAgICAgIGJk
bmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBmZDJxIGZ0MCwgdDIKKyAg
ICAgICAgc3VicSBudW1iZXJUYWcsIHQyCisgICAgICAgIGptcCAub3BHZXRCeVZhbERvbmUKKyAg
ICAgICAgCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6CisgICAgICAgIHN1YmkgQXJyYXlTdG9y
YWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0g
QXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2UKKyAgICAgICAg
YmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5n
dGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3Qs
IHQwKQorICAgICAgICBsb2FkcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yW3QzLCB0MSwgOF0sIHQy
CisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdworCisgICAgLm9wR2V0QnlWYWxEb25l
OgorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2ZpbGUo
JW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHQyKQorICAgICAgICBkaXNwYXRjaCgpCiAK
LWVuZCkKKyAgICAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOgorICAgICAgICBnZXRCeVZh
bFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91YmxlR2V0QnlW
YWwsIC5vcEdldEJ5VmFsU2xvdykKKworICAgIC5vcEdldEJ5VmFsU2xvdzoKKyAgICAgICAgY2Fs
bFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlzcGF0Y2goKQorCisgICAgLm9zclJl
dHVyblBvaW50OgorICAgICAgICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfJW9w
Y29kZU5hbWUlLCBzaXplKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisgICAgICAgIHZhbHVl
UHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxlLCB0NSwgcjApCisgICAgICAgIHJldHVy
bihyMCkKKyAgICBlbmQpCitlbmQKKworZ2V0QnlWYWxPcChnZXRfYnlfdmFsLCBPcEdldEJ5VmFs
LCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCiAKK2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbF9k
aXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhfZ2V0X2J5X3ZhbF9kaXJlY3QpCiAK
IG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQp
CiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGQ5NTU4MDhjNmEzMjhkY2UwNmRh
NzNlNzUxZDYyMjM3ZGQ3N2JhNjIuLmJjZjY5ZjE2M2U0MTY2YzY5OTkyYTIyNGZlMjYwYjBhMTI2
NDg5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0y
NzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3Bl
cnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgRG90VHlwZSB0eXBlLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAgICAgIGlmIChiYXNlLT5pc1N1cGVy
Tm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJvcGVydHkoKTsKICAgICAgICAgCi0gICAg
ICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNz
b3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlvbiwg
YmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC02
NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGUtPmlzQXNzaWdubWVu
dExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbihjb25zdCBF
eHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5vZGUtPmlzUHJpdmF0ZUxv
Y2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09iamVjdExpdGVyYWwoY29uc3QgRXhwcmVz
c2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLT5pc09iamVjdExpdGVyYWwo
KTsKQEAgLTE0MzgsMTUgKzE0NDMsMTUgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBE
b3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMp
OwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUgPSBudWxscHRyOwogICAgIGlmICghcHJl
dmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQcml2YXRlTmFtZSgp
KSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOworICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywg
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwogICAg
IGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0g
bV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSB8fCBk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFw
cGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgb25s
eSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9y
IHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5IHlldC4gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NjguCiAgICAgICAgIGlmICghZG90LT5i
YXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+
YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikKLSAgICAgICAgICAgIG5vZGUgPSBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAgICAgICBub2RlID0gbmV3ICht
X3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICB9CiAgICAgaWYgKCFu
b2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7
CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90
RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KQEAgLTE1ODcsNyArMTU5Miw3IEBA
IEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwogCiAgICAgaWYgKG9wID09IE9wZXJhdG9y
OjpFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNzaWduRG90Tm9k
ZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFz
QXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywg
ZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAogICAgIGlmIChvcCA9PSBPcGVyYXRvcjo6Q29h
bGVzY2VFcSB8fCBvcCA9PSBPcGVyYXRvcjo6T3JFcSB8fCBvcCA9PSBPcGVyYXRvcjo6QW5kRXEp
IHsKICAgICAgICAgYXV0byogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgU2hvcnRDaXJjdWl0
UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOwpAQCAt
MTU5NSw3ICsxNjAwLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFy
c2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwg
ZW5kKTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgZG90LT50eXBlKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFy
dCwgZW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRv
dC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA5YWEyNjczMDMzMGQ2NTM4ZjQ4YjBjMDE1MzZi
N2MyMzIxNTI3NWM1Li5mNmIzNjkyZDYwMmFmZDQyMWUzMmRmY2RjMTExZDhmYWNiNGI3NmYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTUwLDEwICs5NTAsMTEg
QEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBK
U1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVybiBrZXl3b3JkID09
IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDoga2V5d29yZDsKICAg
ICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQg
PT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKworICAgIGJvb2wgaXNQcml2YXRl
TmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBpc0J1aWx0aW5OYW1lID0gbV9jdXJy
ZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiAgICAgYm9vbCBpc1dlbGxL
bm93blN5bWJvbCA9IGZhbHNlOwotICAgIGlmIChpc1ByaXZhdGVOYW1lKSB7CisgICAgaWYgKGlz
QnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbik7
CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ0AnKSB7CkBAIC05
NjEsOCArOTYyLDEyIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICBzaGlm
dCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY29uc3QgTENoYXIqIGlkZW50aWZp
ZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKworICAgIGlmIChpc1ByaXZhdGVOYW1lKQor
ICAgICAgICBzaGlmdCgpOworCiAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpIHx8
IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkK
ICAgICAgICAgc2hpZnQoKTsKQEAgLTk3NCw3ICs5NzksOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFy
Pjo6cAogICAgIAogICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8IG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRT
b3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKLSAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbiAmJiBpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgIGlkZW50ID0gbWFrZUlkZW50
aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgICAgICBp
ZiAoaXNXZWxsS25vd25TeW1ib2wpCiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9hcmVuYS0+
bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5s
b29rVXBXZWxsS25vd25TeW1ib2woaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKSk7
CiAgICAgICAgICAgICBlbHNlCkBAIC05OTYsMjAgKzEwMDIsMjEgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxM
Q2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7
CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4
ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlz
UHJpdmF0ZU5hbWUpIHsKKyAgICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklW
QVRFTkFNRSA6IElERU5UOworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVk
V29yZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewog
ICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUu
ZW50cnkoKmlkZW50KTsKICAgICAgICAgICAgIEFTU0VSVCgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpIHx8ICFlbnRyeSk7CiAgICAgICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAg
ICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAg
ICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50
cnktPmxleGVyVmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVE
X0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogSURFTlQ7CisgICAgICAgICAgICBy
ZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2Vu
IDogaWRlbnRUeXBlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAg
cmV0dXJuIGlkZW50VHlwZTsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJu
IGlkZW50VHlwZTsKIH0KIAogdGVtcGxhdGUgPD4KQEAgLTEwMjYsNyArMTAzMywxMiBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0
YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAg
ICAgIHNoaWZ0KCk7CisKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQoaXNT
aW5nbGVDaGFyYWN0ZXJJZGVudFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FURSht
X2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNTaW5nbGVDaGFy
YWN0ZXJJZGVudFBhcnQobV9jdXJyZW50KSkgewpAQCAtMTA1MCw2ICsxMDYyLDkgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9
IG51bGxwdHI7CiAgICAgCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHJldHVybiBQ
UklWQVRFTkFNRTsKKwogICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29y
ZHMpKSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAg
IGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewpAQCAtMTA3NCw2ICsxMDg5LDE0IEBA
IEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2Fz
ZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgQVNTRVJUKG1fYnVmZmVyMTYuaXNFbXB0eSgp
KTsKICAgICBBU1NFUlQoIXRva2VuRGF0YS0+ZXNjYXBlZCk7CiAKKyAgICBhdXRvIGlkZW50Q2hh
cnNTdGFydCA9IGlkZW50aWZpZXJTdGFydDsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSAqaWRl
bnRpZmllclN0YXJ0ID09ICcjJzsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgKytp
ZGVudENoYXJzU3RhcnQ7CisKKyAgICBKU1Rva2VuVHlwZSBpZGVudFR5cGUgPSBpc1ByaXZhdGVO
YW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUgfHwg
aWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSk7CisKICAgICBhdXRvIGZpbGxC
dWZmZXIgPSBbJl0gKGJvb2wgaXNTdGFydCA9IGZhbHNlKSB7CiAgICAgICAgIC8vIFx1WFhYWCB1
bmljb2RlIGNoYXJhY3RlcnMgb3IgU3Vycm9nYXRlIHBhaXJzLgogICAgICAgICBpZiAoaWRlbnRp
ZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSkKQEAgLTEwOTMsNyArMTExNiw3IEBAIEpT
VG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShK
U1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRp
ZmllcikKICAgICAgICAgICAgICAgICByZWNvcmRVbmljb2RlQ29kZVBvaW50KGNoYXJhY3Rlci52
YWx1ZSgpKTsKICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIo
KTsKLSAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5
cGU7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoVTE2X0lTX1NVUlJPR0FURShtX2N1cnJl
bnQpKTsKQEAgLTExMDksMTAgKzExMzIsMTAgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVy
VHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWRlbnRpZmllclN0YXJ0
ID0gY3VycmVudFNvdXJjZVB0cigpOwotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJl
dHVybiBpZGVudFR5cGU7CiAgICAgfTsKIAotICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVm
ZmVyKGlkZW50aWZpZXJTdGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOworICAgIEpTVG9rZW5U
eXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50Q2hhcnNTdGFydCA9PSBjdXJyZW50U291cmNlUHRy
KCkpOwogICAgIGlmIChVTkxJS0VMWSh0eXBlICYgRXJyb3JUb2tlbkZsYWcpKQogICAgICAgICBy
ZXR1cm4gdHlwZTsKIApAQCAtMTE0NSwxMyArMTE2OCwxMyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxD
aGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2Vu
RGF0YQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGNv
bnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7
CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAg
ICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRp
Y19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYgKCh0
b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAgICBy
ZXR1cm4gVU5FWFBFQ1RFRF9FU0NBUEVfRVJST1JUT0s7CiAgICAgfQogCi0gICAgcmV0dXJuIElE
RU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJv
b2wgY2hhcmFjdGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3RlcikK
QEAgLTI0NzgsMTQgKzI1MDEsMjEgQEAgc3RhcnQ6CiAgICAgICAgIG1faGFzTGluZVRlcm1pbmF0
b3JCZWZvcmVUb2tlbiA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAg
ICAgICBnb3RvIHN0YXJ0OwotICAgIGNhc2UgQ2hhcmFjdGVySGFzaDoKKyAgICBjYXNlIENoYXJh
Y3Rlckhhc2g6IHsKICAgICAgICAgLy8gSGFzaGJhbmcgaXMgb25seSBwZXJtaXR0ZWQgYXQgdGhl
IHN0YXJ0IG9mIHRoZSBzb3VyY2UgdGV4dC4KLSAgICAgICAgaWYgKHBlZWsoMSkgPT0gJyEnICYm
ICFjdXJyZW50T2Zmc2V0KCkpIHsKKyAgICAgICAgYXV0byBuZXh0ID0gcGVlaygxKTsKKyAgICAg
ICAgaWYgKG5leHQgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIHNo
aWZ0KCk7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblNpbmdsZUxp
bmVDb21tZW50OwogICAgICAgICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgY291bGQgYmUg
YSB2YWxpZCBQcml2YXRlTmFtZS4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFz
c0ZpZWxkcygpICYmIChpc1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9
PSAnXFwnKSkgeworICAgICAgICAgICAgbGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9u
dEJ1aWxkS2V5d29yZHMpOworICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAgICB9
CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFyYWN0
ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uKQogICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCAyY2VlYzM4YjY2ZWU2MTYw
OTljYzIzOWIzMTc2NTIzZDcxYmUwMTAwLi4wZGNlNjcxMjZkODVkNjViYjZkMWNkNzQ1MDE5YjYy
MWQ3YjdmNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaApAQCAtMzI3LDEwICszMjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCisgICAgaW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxp
bmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBEb3RUeXBlIHR5cGUpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlk
ZW50LCB0eXBlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlw
ZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkK
ICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQpAQCAtNDM3LDE0ICs0NDEs
MTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlw
ZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3Ms
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5l
cm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9J
bm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0
aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAg
IGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJn
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CkBAIC03NzIsMjEgKzc3NiwxNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5v
ZGU6OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlu
bGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RG90VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJh
c2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwg
bV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0
KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1l
bnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRN
b2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNl
LCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAg
ICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1f
b3BlcmF0b3Iob3BlcikKICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNB
c3NpZ25tZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggOWQx
Y2ZhNGYxNzYxMzAyYTMzYmJhZTMxZWY2MGZkZmNhZjIwN2RmNS4uMTFiZjRhNjg0YTFiZDlhMDkz
ZWI4ZWIxNmUxZTEzNzI2NjIwZDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIFByb3BlcnR5TGlzdE5vZGU6Omhhc1N0YXRp
Y2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1lKQogYm9vbCBQcm9w
ZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyhQcm9wZXJ0eUxp
c3ROb2RlKiBsaXN0KQogewogICAgIHdoaWxlIChsaXN0KSB7Ci0gICAgICAgIGlmIChsaXN0LT5t
X25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCisgICAgICAgIGlmIChsaXN0LT5tX25vZGUt
PmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgfHwgbGlzdC0+bV9ub2RlLT5pc1ByaXZhdGUoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBsaXN0ID0gbGlzdC0+bV9uZXh0OwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA3NGViY2FlNWIwYmY2NGFl
Nzc5MmQ3ODk3MWExODBiODg2OGE2MDIxLi5kN2YzMDdlODBlZmQ1ZjNhMGVmNjEzZWY3Yzg0MzFi
ZThlODVjNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODUsNiAr
MTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0
ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBpc0xvY2F0aW9uKCk7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5v
ZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3Np
Z25SZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03MTksNyArNzIwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50
OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0
eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBT
ZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiB9Owor
ICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBT
ZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJp
dmF0ZSA9IDY0IH07CiAgICAgICAgIGVudW0gUHV0VHlwZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBL
bm93bkRpcmVjdCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwg
RXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVu
dFRhZyk7CkBAIC03MzgsNiArNzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
aXNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRz
U3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5k
aW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZh
dGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRlOyB9CiAgICAgICAgIGJvb2wgaGFz
Q29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJv
b2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAm
JiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVw
bGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzQ4LDcg
Kzc1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25h
bWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNjsKKyAgICAg
ICAgdW5zaWduZWQgbV90eXBlIDogNzsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmlu
ZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6
TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJp
dHMiKTsKQEAgLTc3Niw2ICs3NzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgUmVn
aXN0ZXJJRCosIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qKTsKIAorICAgICAgICB2b2lkIGVtaXRE
ZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBz
Y29wZSk7CisKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cikg
b3ZlcnJpZGUKICAgICAgICAgewpAQCAtODIwLDkgKzgyNCwzMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBj
bGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFt
ZSwgUHJpdmF0ZU5hbWUgfTsKKyAgICBjbGFzcyBCYXNlRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsK
KyAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsKKworICAgICAgICBFeHByZXNz
aW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQorICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQorICAgICAg
ICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgYm9vbCBp
c1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVO
YW1lOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxS
ZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3Bl
cnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lz
dGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0UHJvcGVydHko
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSk7
CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CisgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CisgICAgICAgIERvdFR5cGUgbV90eXBlOwor
ICAgIH07CisKKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURv
dE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgcHVibGljOgorICAg
ICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlKTsKIAogICAgICAgICBFeHByZXNz
aW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtODMx
LDEwICs4NTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAog
ICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0KICAgICAgICAgYm9vbCBpc0RvdEFj
Y2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50
OwogICAgIH07CiAKICAgICBjbGFzcyBTcHJlYWRFeHByZXNzaW9uTm9kZSBmaW5hbCA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAgLTk0
Nyw5ICs5NzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhh
c0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEg
eworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1
YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC05
NTcsOCArOTgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBi
b29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsKICAgICB9OwogCkBAIC05
OTUsNyArMTAxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05v
ZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5j
ZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKQEAgLTEwMDQsNyArMTAyNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5u
ZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBAIC0xNDY3LDI4ICsxNDg4LDI0IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7
CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgQXNz
aWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIERvdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHM7
CiAgICAgfTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNs
YXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1v
ZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgT3BlcmF0b3Is
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9y
aWdodDsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsKICAgICAgICAgYm9vbCBtX3JpZ2h0
SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjI4NSw3ICsyMzAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBDb21wdXRl
ZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUsIENv
bXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSk7CiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDc2NmEy
YjNlYTY3MTU3ZjdmNDI1YWYzYTFlNzllZmFlMDQzNDgwNWQuLjE5ZGJmMDM1NDA0M2IzNDViMWI3
OTU0YzcyNGM4MjAzYTVlNGQzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTgyNiw2ICs4MjYsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CiAgICAg
ICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKworICAgICAgICBmYWlsSWZUcnVlKG1h
dGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgdG8gZGVjbGFyZSBh
IHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkpIHsKICAgICAg
ICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVjbGFyYXRpb25UeXBlID09IERlY2xh
cmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFyYXRpb25UeXBlID09IERlY2xhcmF0
aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAgICAgICAgICAgICJDYW5ub3QgdXNl
ICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRpb24iKTsK
QEAgLTEyODgsNiArMTI5MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURl
c3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAg
ICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25z
KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJl
RHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpKTsK
KyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRv
UGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1F
KSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAiLCBkZXN0cnVjdHVyaW5nS2luZFRv
VmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4
cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3QiKTsK
ICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGtpbmQgPT0gRGVz
dHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwga2luZCA9PSBEZXN0cnVjdHVyaW5n
S2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRp
ZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMjk1Myw2ICsyOTU3LDE5
IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29tcHV0ZWRQcm9wZXJ0
eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAg
ICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVuZCIsICJjb21w
dXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQ
UklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFz
c0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOworICAgICAg
ICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgIGZhaWxJZlRy
dWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQg
Y2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwg
aXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7
CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5v
dCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAm
IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3Qg
ZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3RhdGlj
X2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKQogICAgICAgICAgICAg
ICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk2OCw4ICsyOTg1LDEwIEBAIHBhcnNlTWV0aG9k
OgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3QgcGFyc2UgdGhpcyBt
ZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxk
cygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3Rh
bmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUpIHsKICAgICAg
ICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVyKTsKLSAgICAgICAgICAgIGlmIChp
ZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewogICAgICAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvciwgIkNhbm5vdCBk
ZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKKyAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3JQ
cml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGNsYXNzIGZpZWxkIG5hbWVkICcj
Y29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb21wdXRl
ZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEu
aWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVk
RmllbGRzKyspOwpAQCAtMzAzMyw2ICszMDUyLDEwIEBAIHBhcnNlTWV0aG9kOgogICAgIGluZm8u
ZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAgICAgY29uc3VtZU9y
RmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhIGNsYXNzIGJv
ZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgeworICAg
ICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBh
bmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KKyAgICAgICAgc2VtYW50
aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAi
Q2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKKyAgICB9CiAgICAg
YXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwg
aW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0
b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAgICBwb3BTY29wZShjbGFzc1Njb3Bl
LCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICByZXR1cm4gY2xhc3NF
eHByZXNzaW9uOwpAQCAtMzA1Niw2ICszMDc5LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UK
ICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAgICAg
ICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFt
ZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgeworICAgICAgICBjYXNlIFBSSVZB
VEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0
ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBTVFJJTkc6CiAg
ICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5d29yZDoKQEAgLTMwOTUsNiArMzEy
MSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgIGlmIChjb25zdW1lKEVRVUFM
KSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlBy
aXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50
LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBkZWZpbmVGaWVsZCA9IGNvbnRleHQu
Y3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRlbnQsIGluaXRpYWxpemVyLCB0eXBl
KTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIGRlZmlu
ZUZpZWxkKTsKICAgICB9CkBAIC00Nzk4LDYgKzQ4MjcsMjIgQEAgc3RhdGljIGlubGluZSB2b2lk
IHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSosIFZNJiwgT3B0aW9uYWw8dHlwZW5h
bWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK2Jvb2wgUGFyc2Vy
PExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQorewor
ICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKGF1dG8gbWF5YmVDdXJyZW50ID0gcHJpdmF0ZU5hbWVTY29wZSgpKSB7
CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBtYXliZUN1cnJlbnQudmFsdWUoKTsKKyAgICAg
ICAgaWYgKCFjdXJyZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICAgICAgY3Vy
cmVudC0+dXNlUHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewpA
QCAtNDk5OSw4ICs1MDQ0LDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAg
ICAgICAgbV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAg
ICAgICAgICAgSlNUZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0
aW9uKCk7CiAgICAgICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxkZXI6
OkRvbnRCdWlsZEtleXdvcmRzIHwgTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7Cisg
ICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5p
ZGVudDsKKyAgICAgICAgICAgICAgICBhdXRvIHR5cGUgPSBEb3RUeXBlOjpOYW1lOworICAgICAg
ICAgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShiYXNlSXNTdXBl
ciwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBuYW1lcyBmcm9tIHN1cGVyIik7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50U2NvcGUoKS0+ZXZhbENvbnRleHRUeXBlKCkg
PT0gRXZhbENvbnRleHRUeXBlOjpJbnN0YW5jZUZpZWxkRXZhbENvbnRleHQpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aGFzUHJp
dmF0ZU5hbWUoKmlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIGZp
ZWxkICciLCBpZGVudC0+aW1wbCgpLCAiJyIpOworICAgICAgICAgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJp
dmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFy
c2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1
cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1f
dG9rZW4ubV90eXBlID0gSURFTlQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9w
dGlvbmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2Ug
PSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1f
ZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0
aW9uKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vzcyhz
dGFydExvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNz
aW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShiYXNlSXNTdXBlciAmJiBjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVu
Y3Rpb25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUx
OTUsNiArNTI1Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0
cmljdChjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQg
cHJvcGVydHkgJyIsIG1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4g
c3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0Lmlz
UHJpdmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1f
cGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tl
blN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNTI3MSw3ICs1MzMwLDExIEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBl
Y3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoK
ICAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwg
IiciKTsKICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVO
QU1FOgorICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRv
a2VuKCkpOworICAgICAgICByZXR1cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURF
TlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tl
bigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMTY4YjZm
ZjdlZjhlY2VmNWZkMzJjNzE1ODJmMGIwNGY3NjlkYjFjZi4uYjVlMjlhOGJmYTVmOTExMjA1MjYw
NjdiMjcyOWIwNGUzNzEyOGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogICAgICAgICAsIG1faGFzQXJndW1lbnRzKGZh
bHNlKQogICAgICAgICAsIG1faXNFdmFsQ29udGV4dChmYWxzZSkKICAgICAgICAgLCBtX2hhc05v
blNpbXBsZVBhcmFtZXRlckxpc3QoZmFsc2UpCisgICAgICAgICwgbV9pc1ByaXZhdGVOYW1lU2Nv
cGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0NsYXNzU2NvcGUoZmFsc2UpCiAgICAgICAgICwgbV9l
dmFsQ29udGV4dFR5cGUoRXZhbENvbnRleHRUeXBlOjpOb25lKQogICAgICAgICAsIG1fY29uc3Ry
dWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQpA
QCAtMjkwLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnko
KSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5
bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9v
bCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0
aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNQcml2YXRlTmFtZVNjb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBj
b25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA5LDggKzMxMSwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQog
CisgICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgbV9pc1By
aXZhdGVOYW1lU2NvcGUgPSB0cnVlOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3Bl
KCkKICAgICB7CisgICAgICAgIHNldElzUHJpdmF0ZU5hbWVTY29wZSgpOwogICAgICAgICBtX2lz
Q2xhc3NTY29wZSA9IHRydWU7CiAgICAgfQogCkBAIC00NzUsNyArNDgzLDQ0IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQu
Z2V0KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVz
Lmhhc1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xhcmVk
UHJpdmF0ZU5hbWVzKFNjb3BlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlh
Ymxlcy5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lcyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMp
OworICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBj
b25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNT
aXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJp
YWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUu
aXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRp
b25zKTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsK
KyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4
aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQg
PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9s
ZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICgh
YWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25S
ZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFy
ZWRQYXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTgzOSw2ICs4ODQsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNBcmd1bWVudHM7CiAgICAgYm9vbCBtX2lzRXZhbENvbnRleHQ7CiAgICAg
Ym9vbCBtX2hhc05vblNpbXBsZVBhcmFtZXRlckxpc3Q7CisgICAgYm9vbCBtX2lzUHJpdmF0ZU5h
bWVTY29wZTsKICAgICBib29sIG1faXNDbGFzc1Njb3BlOwogICAgIEV2YWxDb250ZXh0VHlwZSBt
X2V2YWxDb250ZXh0VHlwZTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZDsKQEAgLTkx
MCw3ICs5NTYsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBh
cnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0Nv
bnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxs
cHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3Im
LCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RG
OjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZl
Y3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVm
b3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24o
KTsgfQpAQCAtMTE4Myw2ICsxMjI5LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29w
ZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBPcHRpb25hbDxTY29wZVJlZj4g
cHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9zY29wZVN0YWNrLnNp
emUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKKyAg
ICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkK
KyAgICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAobV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0
ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ss
IGkpOworCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgU2NvcGVS
ZWYgZXhwZWN0UHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9zY29w
ZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgp
IC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1l
U2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBBU1NFUlQobV9zY29wZVN0YWNr
W2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKTsKKyAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Nj
b3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wgY29weVVuZGVjbGFyZWRQcml2YXRlTmFt
ZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9IGV4cGVj
dFByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IGN1cnJlbnQuaW5kZXgo
KSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFt
ZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAg
ICAgcmV0dXJuICFjdXJyZW50LT5oYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpOwor
CisgICAgICAgIGN1cnJlbnQtPmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKG1fc2NvcGVTdGFj
a1tpXSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIFNjb3BlUmVmIGNsb3Nl
c3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCkKICAgICB7CiAgICAgICAg
IHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKQEAgLTE0NjIsNiArMTU0Niwx
NiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09IGV4
cGVjdGVkOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaEFuZFVwZGF0ZShK
U1Rva2VuVHlwZSBleHBlY3RlZCwgY29uc3QgSlNUb2tlbiYgdG9rZW4pCisgICAgeworICAgICAg
ICBpZiAobWF0Y2goZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBtX3Rva2VuID0gdG9rZW47Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQ29udGV4dHVhbEtl
eXdvcmQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CkBAIC0xNzE1LDYgKzE4
MDksOCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KFRyZWVCdWlsZGVyJiwgVHJl
ZUV4cHJlc3Npb24pOwogCisgICAgQUxXQVlTX0lOTElORSBib29sIHVzZVByaXZhdGVOYW1lKGNv
bnN0IElkZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0
b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKICAg
ICAKQEAgLTE4MDksNiArMTkwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUGFyc2VQ
aGFzZSBmdW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkgfTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxscHRyIH07CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxscHRyIH07CisgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7IG51bGxwdHIgfTsKICAgICAg
ICAgYm9vbCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUGFyc2luZ0NsYXNz
RmllbGRJbml0aWFsaXplciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTE5NTksNyArMjA1Niw3IEBA
IHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xh
c3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVO
YW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29u
dGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
KQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQ
YXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25h
bDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWZWN0b3I8SlNUZXh0
UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5lOwog
ICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xOTc0LDYgKzIwNzEsMTEgQEAgc3RkOjp1bmlxdWVfcHRy
PFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3Is
IGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVt
YmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNl
LT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCisgICAgaWYgKGlzRXZhbE5vZGU8UGFy
c2VkTm9kZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAmJiB2YXJpYWJsZXNVbmRlclREWi0+cHJp
dmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZhdGVO
YW1lU2NvcGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5kZXJURFotPmNvcHlQcml2YXRlTmFtZXMo
Y3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgfQorCiAgICAgYXV0byBw
YXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29u
dGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgaW5zdGFuY2VG
aWVsZExvY2F0aW9ucyk7CiAKICAgICBpbnQgbGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1i
ZXIoKTsKQEAgLTIwNTgsNiArMjE2MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZl
ZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUg
PSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2Vy
UGFyc2VEYXRhID0gbnVsbHB0ciwKKyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9u
PiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsKQEAgLTIwNzAsNyArMjE3Myw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcmVzdWx0OwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkp
IHsKICAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0
aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywg
ZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0
VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2Vy
UGFyc2VEYXRhLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBw
YXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6
UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAg
cmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUs
IGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2lu
Z0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFy
c2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTIwODMsNyArMjE4Niw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29u
c3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBh
cnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBh
cnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4o
KSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6
bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNl
ci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBh
cnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9n
cmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAg
ICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmgKaW5kZXggZGUwZWJlYWY4NWZkNzEyMzcxN2Y4NzcxMTI3ZjcxOTIzZmZlNjc0OC4uN2Iz
YzFlYzNiN2Y2YTZiMTFiZmM0NWY0YmM5MWQwNDgxMmY0Y2QyZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBK
U1Rva2VuVHlwZSB7CiAgICAgRE9VQkxFLAogICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQ
UklWQVRFTkFNRSwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBmOWJiMDdi
NGRkNDA4OWM3YjFlM2EwZjNmNTk1NDFiMzE3YTUyZDdmLi5lOWI2ZDdlOTQ2NzQ0ZTFhMDhkYzFj
YzI4YTQ2YjcxMzc3M2M5ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVF
dmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHBy
LCBCaWdJbnRFeHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdF
eHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4
cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHBy
LAotICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlF
eHByLCBPcHRpb25hbENoYWluLAorICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwg
VW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAg
ICAgICAgQ29uZGl0aW9uYWxFeHByLCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAg
ICAgRGVsZXRlRXhwciwgQXJyYXlMaXRlcmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJl
c3RQYXJhbWV0ZXIsCiAgICAgICAgIEFycmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1
cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Ym9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxs
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3Qg
SWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9
PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJl
dHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBm
bGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpAQCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiB0eXBlID09IFJlc29sdmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09
IEJyYWNrZXRFeHByOworICAgICAgICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBl
ID09IERvdEV4cHIgfHwgdHlwZSA9PSBQcml2YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRF
eHByOworICAgIH0KKworICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUg
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAg
IH0KIAogICAgIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2Y2IzMTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFm
NTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3NDA2OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjks
NiArMjksMTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZh
cmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBv
dGhlcikKK3sKKyAgICBtX21hcCA9IG90aGVyLm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVz
ZXQoKTsKKyAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdU
Rjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFy
ZURhdGEpOworICAgIHJldHVybiAqdGhpczsKK30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50
OjptYXJrVmFyaWFibGVBc0NhcHR1cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmlu
ZChpZGVudGlmaWVyKTsKQEAgLTgwLDYgKzkwLDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50
Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3Ro
ZXIubV9tYXApOwogICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0
aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0K
IAogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcg
QEAgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50
KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQo
ZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlx
dWVkU3RyaW5nSW1wbCosIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRy
aWVzOwotICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgp
KTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUo
KSk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFw
cGVuZCh7IHBhaXIua2V5LmdldCgpLCBwYWlyLnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZl
ZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJlYTE5OTJjNTIuLjBjMWQwYWMzZWJhZGNhOGVjMzhhNmM4
OGVhNjMxMzliNDkwYTMzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC00Miw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1Bh
cmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0Nh
bmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2Fu
ZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYg
KzU2LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkg
eyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Bh
cmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9w
cHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQ
cml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcg
Kzc4LDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwK
ICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8
IDgsCi0gICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAg
ICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1By
aXZhdGVOYW1lID0gMSA8PCAxMCwKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsK
IH07CkBAIC04MywxNSArODgsNTUgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhh
c2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0
IFByaXZhdGVOYW1lRW50cnkgeworcHVibGljOgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2
X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMgPSB0cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVj
bGFyZWQ7IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8
PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9i
aXRzIHw9IElzRGVjbGFyZWQ7IH0KKworICAgIHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVy
biBtX2JpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9i
aXRzOworICAgIH0KKworICAgIGVudW0gVHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBJc1Vz
ZWQgPSAxIDw8IDAsCisgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJp
dmF0ZToKKyAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5h
bWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBW
YXJpYWJsZUVudmlyb25tZW50IHsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tl
ZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRl
bnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFBy
aXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFy
aWFibGVFbnZpcm9ubWVudCgpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZh
cmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJs
ZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVm
YXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9u
bWVudCYmKSA9IGRlZmF1bHQ7CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6
IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXApKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRh
KFdURk1vdmUob3RoZXIubV9yYXJlRGF0YSkpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVu
dmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1f
bWFwKG90aGVyLm1fbWFwKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIu
bV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFy
ZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpv
dGhlci5tX3JhcmVEYXRhKSA6IG51bGxwdHIpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVu
dmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwog
CiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAu
YmVnaW4oKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVy
biBtX21hcC5lbmQoKTsgfQpAQCAtOTksNyArMTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19J
TkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQo
KTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlm
aWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1h
cDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBh
ZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNp
Z25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6
ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1f
bWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBt
X21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0
b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJl
dHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIpOyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
RXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fbWFwLnNpemUoKTsgfQogCisgICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0
ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5F
IE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAg
ICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRP
ckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVj
bGFyZWQoKTsKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgp
OworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElz
Q29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4g
bV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRl
TmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsK
KyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQo
KSk7CisgICAgICAgIG1ldGEuc2V0SXNVc2VkKCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFy
ZWQoKSkKKyAgICAgICAgICAgIGZpbmQoaWRlbnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQo
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVO
YW1lcygpIGNvbnN0CisgICAgeworICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2Ug
bXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRp
dHkoKS4KKyAgICAgICAgQVNTRVJUKHByaXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICBy
ZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4o
KSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdW5zaWduZWQgcHJpdmF0ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlk
ZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVBy
aXZhdGVOYW1lcyhWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFv
dGhlci5tX3JhcmVEYXRhKQorICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YSA9IFdURjo6bWFr
ZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgaWYgKHBy
aXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHBy
aXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50cnkudmFsdWUuaXNVc2Vk
KCkgJiYgZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgb3Ro
ZXIubV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91dGVy
KSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQgYnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciByZWNv
cmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFuCisgICAgICAgIC8vIGlubmVyIFByaXZh
dGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMgdXNl
ZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgY29kZSB0aGFuIGl0IGlzIGRlZmlu
ZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBm
b3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChl
bnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAg
ICAgICAgICAgICAgICBvdXRlci5nZXRPckFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSku
c2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1
Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisK
KyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAgICAgICAgUmFyZURhdGEoUmFyZURhdGEmJiBvdGhl
cikKKyAgICAgICAgICAgIDogbV9wcml2YXRlTmFtZXMoV1RGTW92ZShvdGhlci5tX3ByaXZhdGVO
YW1lcykpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBSYXJlRGF0YShjb25zdCBSYXJl
RGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUmFyZURhdGEmIG9wZXJhdG9yPShjb25zdCBSYXJl
RGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOwor
ICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVk
IHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVOYW1lRW50cnkmIGdldE9yQWRkUHJpdmF0ZU5hbWUo
VW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJv
bm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5hbWVFbnRyeSgwKSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCBk
MTE1NzFmZWJhMmFlZmZiMmYyYWU4NWM1ZDhiZjQyZmIyOTk0NzdmLi40MzM3YWJkZDgwZTQ1Mzlm
OTM0MGMwNzdkMmQ3MzY2ZWI5ZTljOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04NTcsNiArODU3LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZW5jb2RlKGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9
CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNvZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CisgICAg
ICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIpOwor
ICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IHsKQEAgLTEwMDQsMjMgKzEwMTAsNDUgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsK
IH07CiAKK2NsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBD
YWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKK3B1YmxpYzoKKyAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNv
ZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiBy
YXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENh
Y2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVk
U3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJp
dmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1l
czsKK307CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgewog
ICAgICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVy
ZWQ7CiAgICAgICAgIG1fbWFwLmVuY29kZShlbmNvZGVyLCBlbnYubV9tYXApOworICAgICAgICBt
X3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBlbnYubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQog
CiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVudCYg
ZW52KSBjb25zdAogICAgIHsKICAgICAgICAgZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBt
X2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5kZWNvZGUoZGVjb2RlciwgZW52
Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6
UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2RlciwgKmVu
di5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1f
aXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2Fj
aGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRy
YWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBtX21hcDsKKyAgICBDYWNoZWRQdHI8Q2Fj
aGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3Mg
Q2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PENv
bXBhY3RWYXJpYWJsZUVudmlyb25tZW50PiB7CkBAIC0xMTQ4LDYgKzExNzYsMjIgQEAgcHJpdmF0
ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7CiB9OwogCitjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZVJh
cmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJl
RGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAg
ICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1l
cyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3ltYm9sVGFi
bGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAg
bV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVk
VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7Cit9
OworCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9s
VGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCkBAIC0xMTU4LDYgKzEyMDIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fbmVzdGVkTGV4aWNhbFNjb3BlID0gc3ltYm9sVGFibGUubV9uZXN0ZWRMZXhp
Y2FsU2NvcGU7CiAgICAgICAgIG1fc2NvcGVUeXBlID0gc3ltYm9sVGFibGUubV9zY29wZVR5cGU7
CiAgICAgICAgIG1fYXJndW1lbnRzLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX2FyZ3Vt
ZW50cy5nZXQoKSk7CisgICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRh
YmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIFN5bWJvbFRhYmxlKiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTExNzEsNiArMTIxNiwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBzY29wZWRBcmd1bWVudHNUYWJsZSA9IG1fYXJn
dW1lbnRzLmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKHNjb3BlZEFyZ3VtZW50c1RhYmxl
KQogICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fYXJndW1lbnRzLnNldChkZWNvZGVyLnZtKCks
IHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1bWVudHNUYWJsZSk7CisgICAgICAgIGlmICghbV9yYXJl
RGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhID0g
V1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICpzeW1ib2xUYWJsZS0+bV9yYXJl
RGF0YSk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGU7CiAgICAgfQog
CkBAIC0xMTgxLDYgKzEyMzEsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4
aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7CiAgICAgQ2FjaGVk
UHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsKKyAgICBDYWNoZWRQ
dHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENh
Y2hlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAppbmRleCA5ZTE3MmI2YWVhNzRiMDYyZGU5ZmZlZjhkYTU2ZDQ5MzRmOTRkNTU2Li5lNzJiZDM1
ZjE1YjdmMzEyYWE0YTFiZTJjMTIyZGQxY2E3MDNjMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHMKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2Rl
QmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxS
b290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5
cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVu
bGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJpYWJsZXNVbmRlclREWiwgbnVsbHB0ciwg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDYyYzBkNTk1NzNhNmE2Mzk5MDkzOWYxY2VmOTRk
OTE5ZDdkNzNjNmUuLjdlZTcxM2M5YzRhMjU5MmZmMzMwZjY4ZjVhNjY0NmVkM2U4MDlhY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIElOSVRJQUxJ
WkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUj
I1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQogI2RlZmlu
ZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+
bmFtZSMjU3ltYm9sKCkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKG5h
bWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIjIiAj
bmFtZSkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAg
ICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00NSw2ICs0Niw3IEBAIENvbW1vbklkZW50aWZpZXJz
OjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19F
QUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklF
UlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0Nf
Q09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFM
SVpFX1NZTUJPTCkKKyAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVM
RChJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZDE2NGJhNGJl
ZjhiNGVlZmY5MzE3MzdiMzk1M2YzNGZlMTIzMmEyOC4uOWRmYTc1OWQ4MTQ5NTUxYjVhMDY0NWEw
NWU2MGZmMmE4Y2NkZGU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMDUsNiArMjA1LDkgQEAKICAgICBtYWNybyh3cml0
YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAKKyNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVS
U19FQUNIX1BSSVZBVEVfRklFTEQobWFjcm8pIFwKKyAgICBtYWNybyhjb25zdHJ1Y3RvcikKKwog
I2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAg
IG1hY3JvKGF3YWl0KSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTMxOSw2ICszMjIsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxM
X0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAogCisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RF
Q0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQ
cml2YXRlRmllbGQ7CisgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRF
X0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwpCisjdW5k
ZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTAorCiAgICAgICAg
IC8vIENhbGxlcnMgb2YgdGhpcyBtZXRob2Qgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IGlkZW50aWZp
ZXJzIGdpdmVuIHRvIHRoaXMgbWV0aG9kIAogICAgICAgICAvLyBzdXJ2aXZlIHRoZSBsaWZldGlt
ZSBvZiBDb21tb25JZGVudGlmaWVycyBhbmQgcmVsYXRlZCBWTS4KICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBhcHBlbmRFeHRlcm5hbE5hbWUoY29uc3QgSWRlbnRpZmllciYgcHVibGlj
TmFtZSwgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjdiODAyMGEyMDA0
ZGJiMjZhZDdmMDU3OWI3ZDdhMjliMTMwN2QxNy4uMWU0OGY3OTdkOTliNjY2ZmE1MGI5NTcwOTI0
ZGRjMDhiMmJjZDVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC0xMzA1LDYgKzEzMDUsNzIgQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgIFJFVFVSTl9QUk9GSUxFRChiYXNl
VmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpKTsKIH0KIAorU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KQoreworICAgIEJFR0lOKCk7CisKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0QnlWYWxEaXJlY3Q+KCk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKwor
ICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygp
KSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCkt
PnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9w
ZXJ0eShzdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGV4
aXN0aW5nQXRvbVN0cmluZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9tU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICAg
ICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwg
c3RydWN0dXJlLCBleGlzdGluZ0F0b21TdHJpbmcuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAg
ICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2Zp
bGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2ZpbGU7CisKKyAgICAgICAgaWYgKGlzSlNTdHJpbmco
YmFzZVZhbHVlKSkgeworICAgICAgICAgICAgaWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdl
dEluZGV4KGkpKQorICAgICAgICAgICAgICAgIFJFVFVSTl9QUk9GSUxFRChhc1N0cmluZyhiYXNl
VmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmplY3QsIGkpKTsKKyAgICAgICAgICAgIGFycmF5UHJv
ZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKKyAgICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNP
YmplY3QoKSkgeworICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CisgICAgICAgICAgICBpZiAob2JqZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCisg
ICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVEKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkp
KTsKKworICAgICAgICAgICAgYm9vbCBza2lwTWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CisK
KyAgICAgICAgICAgIGlmIChvYmplY3QtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRp
Z3VvdXMgJiYgaSA8IG9iamVjdC0+YnV0dGVyZmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFuZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIs
IGFuZCBtYXliZSBEb3VibGU6CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0MAorICAgICAgICAgICAgICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgICAgICBza2lw
TWFya2luZ091dE9mQm91bmRzID0gZ2xvYmFsT2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSAmJiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBl
Q2hhaW5Jc1NhbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFza2lwTWFy
a2luZ091dE9mQm91bmRzICYmICFDb21tb25TbG93UGF0aHM6OmNhbkFjY2Vzc0FyZ3VtZW50SW5k
ZXhRdWlja2x5KCpvYmplY3QsIGkpKQorICAgICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0
T3V0T2ZCb3VuZHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIFJFVFVSTl9QUk9GSUxFRChqc1Vu
ZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJs
ZShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIGF1dG8gcHJvcGVy
dHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VY
Q0VQVElPTigpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworCisgICAgYm9vbCBmb3Vu
ZCA9IChiYXNlVmFsdWUuYXNDZWxsKCktPmlzUHJveHkoKSAmJiBwcm9wZXJ0eS5pc1ByaXZhdGVO
YW1lKCkpCisgICAgICAgID8gSlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChhc09iamVjdChi
YXNlVmFsdWUpLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KQorICAgICAgICA6IGJhc2VW
YWx1ZS5nZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFmb3VuZCAmJiBwcm9wZXJ0eS5pc1ByaXZh
dGVOYW1lKCkpCisgICAgICAgIFRIUk9XKGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGds
b2JhbE9iamVjdCkpOworICAgIFJFVFVSTl9QUk9GSUxFRChmb3VuZCA/IHNsb3QuZ2V0VmFsdWUo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkgOiBqc1VuZGVmaW5lZCgpKTsKK30KKwogU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXgg
YTgyNDhkNDUyNGEzYzVkZjA5ZGFmNjQ5NzQ2NmI5NzI1MDMzMjU2Zi4uN2MxZDgyM2FhNmExMTFj
YTM0N2FiNDFhMmEwOWExZDcxODI4ODVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI3Miw2ICsyNzIsNyBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA1ZmZmNzA0NjFlZGNlY2Y2YmQwOGI2
MTI2NDZkMWI1ZDhjNzE4ODY3Li5lYWFiY2NlMmM5NDVlNWM3MTFiNDBmNDYwNTk0ODBlNDA5MDU4
Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtMzI4LDYgKzMyOCwxNiBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxl
LiIpOwogfQogCitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmll
bGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7Cit9CisKK0pTT2JqZWN0
KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoIkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRT
b3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCiBFeGNlcHRpb24qIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29w
ZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCBlOWE1MjMxZmM1NjRiMDdk
ZDM5ZDFjYWMxNDY5MDk1YTNkYmQ0MTJjLi5lMWI3ZTAyMTE4ZDQ4YjVmNTQ0ODc0NWJkMzY0YTJl
OTM5OTczYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5oCkBAIC01Myw2ICs1Myw4IEBAIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xvCiBK
U09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1l
bnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKK0pTT2JqZWN0KiBjcmVhdGVJbnZh
bGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0ZVJl
ZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIFN0cmluZyBlcnJvckRl
c2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3Qq
LCBUaHJvd1Njb3BlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggODQ0Njc4M2JlNTk4NGJkZmU5ODA0MjYyZTk1OWQxOGRjNzQ2
NTdjOS4uYjY1YmI4ZTljM2I2ZTU2MDA4NGFkZDMxMmQ3MWRlNmM4MjFjYzA1YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzA5
LDYgKzMwOSwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25M
ZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpKTsKIH0KIAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3JlYXRlUHJpdmF0ZVN5bWJvbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3Jl
YXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7Cit9
CisKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKQEAgLTExOTMsNiArMTE5OSwxMSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1
Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFt
ZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0Rh
dGVUaW1lRm9ybWF0KSk7CiAgICAgICAgIH0pOwogCisgICAgLy8gUHJpdmF0ZVN5bWJvbHMgLyBQ
cml2YXRlTmFtZXMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CisgICAgICAgIH0pOwor
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFNSU5H
X0FQSSkKICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCiAgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6d2ViQXNzZW1i
bHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29w
ZS5jcHAKaW5kZXggYjNjMjcyMDIyODA2YjgxMTQzNTdkODFkZTlmM2I1ZmMxMDM1NGQ5YS4uOTI3
NDA2NGVmNWM5N2U1OGRkMjA1NmJmNWZmNmY3ZjcwZmZmMzkyNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMzOSw2ICszMzksMTAgQEAgdm9pZCBKU1Nj
b3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNjb3BlLCBWYXJp
YWJsZUVudmlyb25tZW4KICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xU
YWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHN5bWJvbFRhYmxlLT5lbmQo
bG9ja2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2NrZXIpOyBpdGVyICE9IGVuZDsg
KytpdGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkpOworICAgICAgICBpZiAo
c3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8g
bmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKKyAgICAgICAgICAgICAgICByZXN1
bHQudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICB9CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBhNzVlYWZjYmRk
ZjgxOTVhNjcwYTFjOGYwYWI5YWYxZTZkNTg1ZWE0Li5lM2ZlNmExNTNkZGQ2MGRjMzNjNGZkZTM4
ZWEwZTc1ZGU4ZTVhMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKQEAgLTUwNSw2ICs1MDUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3Nl
bWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlUHVibGljQ2xhc3NGaWVs
ZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHB1
YmxpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29sLCB1c2VMb2dp
Y2FsQXNzaWdubWVudE9wZXJhdG9ycywgZmFsc2UsIE5vcm1hbCwgIkVuYWJsZSBzdXBwb3J0IGZv
ciBcP1w/PSwgfHw9LCBhbmQgJiY9IGxvZ2ljYWwgYXNzaWdubWVudCBvcGVyYXRvcnMuIikgXAog
ICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbiwgZmFs
c2UsIE5vcm1hbCwgIkZvciB0aGUgYXJtNjQgRXhlY3V0YWJsZUFsbG9jYXRvciwgaWYgdHJ1ZSwg
c2VsZWN0IHdoaWNoIHJlZ2lvbiB0byB1c2UgcmFuZG9tbHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0
ZXN0aW5nIHRoYXQganVtcCBpc2xhbmRzIHdvcmsuIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0
ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVu
ZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0g
T3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggYmM0OWRjOTgyYzczMjgyYmVkZWIy
YjFkZWZjNzY3YTg1YWIzNWFmOS4uNzc5MGNmNTczZDI2Zjk1MmY0OTk5YTUzZjNjMjc1ZDY3NTFh
M2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNw
cApAQCAtMTgzLDYgKzE4MywxMSBAQCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2Nv
cGVQYXJ0KFZNJiB2bSkKICAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQog
ICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV91bmlxdWVUeXBlU2V0TWFwLnNl
dChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7
CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4IGUyMzRkMzE0YzY5ZWQyZDEx
MTMyMzkxNGJhMjdkM2Q5MzE1NTI2NzYuLjMxZjgxZmFlMDJmYjIwMWQzMjE4YmIwZmI0YzUyZDIy
MWY0Y2Q2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9V
bmlxdWVkU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1MCw2ICs0NTAsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRl
bnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZh
ck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsK
ICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOwor
ICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVy
UmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8
dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFu
Z2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC01OTQsNyArNTk2
LDI1IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2sp
OwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsK
ICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lcygpIGNvbnN0IHsgcmV0dXJu
IG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOyB9CisgICAg
QUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2UgcHJpdmF0ZU5hbWVzKCkKKyAg
ICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQg
dG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAgICBB
U1NFUlQoaGFzUHJpdmF0ZU5hbWVzKCkpOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFu
Z2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVl
ZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNT
eW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURh
dGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKworICAgICAgICBB
U1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOworICAgICAg
ICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsKKyAgICB9CisKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lkIHNldChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRyeSYmIGVudHJ5KQogICAgIHsKQEAgLTcy
OSwxOCArNzQ5LDIxIEBAIHByaXZhdGU6CiAgICAgU2NvcGVPZmZzZXQgbV9tYXhTY29wZU9mZnNl
dDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwotcHJpdmF0
ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBt
X25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCi0g
ICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5cGUKLSAgICAKKwogICAgIHN0
cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFwOwogICAgICAgICBP
ZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVl
VHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2Rl
QmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1l
czsKICAgICB9OworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwg
OiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0
aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3Bl
VHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURh
dGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVkQXJndW1lbnRzVGFibGU+IG1fYXJndW1lbnRz
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCAzNjM2YmMwOTJkNDNlMGRhNmNlNGVlODEyYmNkMmM1ZjNhZmJkYzljLi42ZWFkZTBjMTZjOTJl
OWVhNDQxMGQ4ODcwNWQyNjYzZmEyNGQzZDM5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA0LTMwICBD
YWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1
cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRzIHVwb24gdGhlIGVhcmxpZXIgcHVibGljIGZp
ZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9mIHByaXZhdGUKKyAgICAgICAgZmllbGQgdGVz
dHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24u
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQt
Ynl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1mcmVlemUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1mcmVlemUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRl
bnNpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
c2VhbC1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXNlYWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxk
cy1zdHJlc3MtaW5zdGFuY2UuanM6CisgICAgICAgICogc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0
LWdldHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9vcHRpb25hbC1jaGFpbmlu
Zy1hbmQtcHJpdmF0ZS1maWVsZHMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRl
LW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAq
IHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDQtMzAgIENhaW8gTGltYSAgPHRpY2Fpb2xp
bWFAZ21haWwuY29tPgogCiAgICAgICAgIEludmVzdGlnYXRlIHN0cmVzcy92OC1iaXRpbnQzMi1p
bmMuanMgZmFpbHVyZSBvbiBtaXBzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YTExNjNlMTY3ZWQwZDZjNWY2
NzY1NmQwMWIzNGQ4OGNiNzRmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACisvL0Ag
cmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBh
c3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsKKyAg
ICAjbSA9ICgpID0+IDI1OworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4j
bSgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDI1
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2Fj
aGVkLWJ5dGVjb2RlLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2Fj
aGVkLWJ5dGVjb2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyYTRmNDM1NGY4OTdmMTEzNzQwODcxMjYwNDZj
NmYxZGZkM2U3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKQEAgLTAsMCArMSwxOCBAQAorLy9AIHJ1bkJ5
dGVjb2RlQ2FjaGUoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBh
c3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsKKyAg
ICAjZiA9IDM7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAg
IH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDMpOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9m
LWxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0
LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1M2Y2YjIzMTA3ZGRhYTJiNDViYzNmMDU4ZWFiZjEx
Y2YwMTkzYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDQ4IEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2Jq
ZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAg
IGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21l
c3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgewor
ICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIp
IHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKKy8vIFRoZSBi
YXNlIGNsYXNzIGlzIGRlY2xhcmVkIGluIGV2YWwgc3BlY2lmaWNhbGx5IHNvIHRoYXQgaXQgY2Fu
IGFkZCBlbm91Z2gKKy8vIHByb3BlcnRpZXMgdG8gdGhlIGNsYXNzIHRvIHN0b3JlIHByaXZhdGUg
ZmllbGRzIGluIG91dC1vZi1saW5lIHByb3BlcnR5IHN0b3JhZ2UuCitsZXQgQmFzZSA9IGV2YWwo
YChjbGFzcyBCYXNlIHsKKyAgLy8gTWV0aG9kcworICBjb25zdHJ1Y3RvcigpIHsKKyAgICAvLyBE
ZWZpbmUgcHJvcGVydGllcworICAgICR7QXJyYXkoMjAwKS5tYXAoKF8sIGkpID0+IGAgIHRoaXMu
eCR7aX0gPSAke2l9O1xuYCkuam9pbigiIil9CisgIH0KK30pYCk7CisKK2NsYXNzIFByaXZhdGVG
aWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0
LmZyZWV6ZSh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNGcm96ZW4o
dGhpcyksICJPYmplY3QuaXNGcm96ZW4odGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgp
IHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVu
Y3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4
dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54MTUwID09PSAxNTApOworICBjLngxNTAgPSAw
LjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0
LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVz
dCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXpl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY0MmNjMGZmOTJkNmJhYzljODRkOTA2OTQzNGYzYjc3ZDdkZjViMjIKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMK
QEAgLTAsMCArMSw0MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2Vy
dChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwg
YnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9
PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBiKSkKKyAg
ICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0byBiZSAk
e2J9YCk7CisgIH0KK30pOworCitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAg
dGhpcy54ID0gMTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRl
bnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5mcmVlemUodGhpcyksIDQyKTsK
KyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0LmlzRnJvemVuKHRoaXMpLCAiT2JqZWN0LmlzRnJv
emVuKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9
CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBs
ZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAw
LjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0
LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVz
dCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJv
eHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NjFmNzE4ZDk3NDI3MGFjOGExOWU1ZjdiZjA1MjAwZGViOTM3NmNkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJv
eHkuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAh
PT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3NlcnRB
cnJheUNvbnRlbnQoYSwgZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJTaXpl
IG9mIGFycmF5cyBkb2Vzbid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxl
bmd0aDsgaSsrKQorICAgICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9ICIg
KyBhW2ldICsgIiBidXQgZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJyID0g
W107CisKK2NsYXNzIFByb3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJl
dHVybiBuZXcgUHJveHkodGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBw
cm9wKSB7CisgICAgICAgICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQor
CitjbGFzcyBUZXN0IGV4dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjZiA9IDM7CisgICAgbWV0aG9k
KCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3IFRl
c3QoKTsKK2xldCByID0gdC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMgYnV0
IGdvdDogIiArIHIpOworCithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxp
bmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42OWQ4NjIxNjAxZDVkZTM0YTQyODM0NmQ1MWNjZjgyMmZiZjU2MGE5Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0
LW9mLWxpbmUuanMKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAo
YSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1
dCBnb3Q6ICIgKyBhKTsKK30KKworbGV0IGtsYXNzU291cmNlID0gYAordmFyIEMgPSBjbGFzcyB7
CisgICAgYXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKSB7CisgICAgICAgIGFzc2VydCh0aGlzLiNmMjAw
LCAiZm9vIik7CisgICAgfQorYDsKKworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDsgaSsrKSB7
CisgICAga2xhc3NTb3VyY2UgKz0gIiAgICAjZiIgKyBpICsgIjtcbiI7Cit9CisKK2tsYXNzU291
cmNlICs9ICIgICAgI2YyMDAgPSBcImZvb1wiO1xufSI7CisKK2V2YWwoa2xhc3NTb3VyY2UpOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAg
ICBjLmFzc2VydE91dE9mTGluZVZhbHVlKCk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9u
cy1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmRiOGIxNmFlMGQ1Y2I3ZjNmNTU4NTI3ZTQw
MGViNTIyYzFiMzYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEs
NTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisK
K2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVz
c2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJy
b3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtl
eHByfWApOworICB9LCB7CisgIGZhbHNlKGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChl
eHByID09IHRydWUpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8
fCAiZXhwciJ9IHRvIGJlIGZhbHNlLCBidXQgd2FzICR7ZXhwcn1gKQorICB9LAorICBlcXVhbHMo
YSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9
PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBF
eHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKKy8vIFRoZSBiYXNlIGNsYXNz
IGlzIGRlY2xhcmVkIGluIGV2YWwgc3BlY2lmaWNhbGx5IHNvIHRoYXQgaXQgY2FuIGFkZCBlbm91
Z2gKKy8vIHByb3BlcnRpZXMgdG8gdGhlIGNsYXNzIHRvIHN0b3JlIHByaXZhdGUgZmllbGRzIGlu
IG91dC1vZi1saW5lIHByb3BlcnR5IHN0b3JhZ2UuCitsZXQgQmFzZSA9IGV2YWwoYChjbGFzcyBC
YXNlIHsKKyAgLy8gTWV0aG9kcworICBjb25zdHJ1Y3RvcigpIHsKKyAgICAvLyBEZWZpbmUgcHJv
cGVydGllcworICAgICR7QXJyYXkoMjAwKS5tYXAoKF8sIGkpID0+IGAgIHRoaXMueCR7aX0gPSAk
e2l9O1xuYCkuam9pbigiIil9CisgIH0KK30pYCk7CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVy
UHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LnByZXZlbnRF
eHRlbnNpb25zKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0LmZhbHNlKE9iamVjdC5p
c0V4dGVuc2libGUodGhpcyksICJPYmplY3QuaXNFeHRlbnNpYmxlKHRoaXMpIiksIHRoaXMuI2kg
KyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kg
PSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmll
bGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBhc3NlcnQuZXF1YWxzKGMueDE1MCA9PT0gMTUw
KTsKKyAgYy54MTUwID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5z
ZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsK
KwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7
ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzYwOTcyNzgx
NGZjNjA1ZTEwNGM2NjRkNmUzZTYwZTJkNGM1YzMyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzCkBAIC0w
LDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhw
ciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3
YXMgJHtleHByfWApOworICB9LCB7CisgIGZhbHNlKGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAg
IGlmIChleHByID09IHRydWUpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVz
c2FnZSB8fCAiZXhwciJ9IHRvIGJlIGZhbHNlLCBidXQgd2FzICR7ZXhwcn1gKQorICB9LAorICBl
cXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8
IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVy
cm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2Ug
eworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNzIFBy
aXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAo
T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0
LmZhbHNlKE9iamVjdC5pc0V4dGVuc2libGUodGhpcyksICJPYmplY3QuaXNFeHRlbnNpYmxlKHRo
aXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNl
dChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9
IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAwLjE7Cisg
IGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFs
cyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsK
K3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2Yt
bGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0LW9m
LWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxYjMwZTYyZTI4MzlhZDQ3NTIzMWYzN2NhNGRmYzUxMTYx
MGQ1NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLXNlYWwtb3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSw1MiBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5h
c3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAo
ZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdl
IHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFs
c2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFsc2Us
IGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09
IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAg
ICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHti
fWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBz
cGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0
aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkg
c3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2RzCisg
IGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgy
MDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAg
fQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRl
bmRzIEJhc2UgeworICAjaSA9IChPYmplY3Quc2VhbCh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0g
KGFzc2VydChPYmplY3QuaXNTZWFsZWQodGhpcyksICJPYmplY3QuaXNTZWFsZWQodGhpcykiKSwg
dGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsg
dGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFBy
aXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54MTUw
ID09PSAxNTApOworICBjLngxNTAgPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIp
OworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5l
KHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsg
aSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLXNlYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgzZTdhYjM1ZDdjMTRhNmM3NjkxMjYyNmNmZDEy
ODE3YzVhMGIwOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXNlYWwuanMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24o
CisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9
PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJl
eHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZXF1YWxzKGEs
IGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0g
YSAmJiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhw
ZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCitjbGFzcyBCYXNlIHsKKyAgY29u
c3RydWN0b3IoKSB7CisgICAgdGhpcy54ID0gMTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRlRmll
bGRBZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5z
ZWFsKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc1NlYWxlZCh0aGlz
KSwgIk9iamVjdC5pc1NlYWxlZCh0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyBy
ZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlv
biB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5z
aW9uczsKKyAgYy54ID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5z
ZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsK
KwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7
ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXVzZS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtdXNlLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3ODgwNTdiMWJmNDk1NTBhMGU4ZjNkOThhOTQx
YTgzN2NmMTFjMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXVzZS1ldmFsLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIsICItLXVzZVB1YmxpY0NsYXNzRmllbGRzPTEi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgbWVzc2FnZSkgeworICAgIGlmICghYSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworfQorCitsZXQgaW5zdCA9IG5ldyBjbGFzcyB7Cisg
IGEgPSBldmFsKCIoaSkgPT4gaS4jYiIpOworCisgICNiID0ge307Cit9OworCitpbnN0LmEoaW5z
dCkueCA9IDE7Cithc3NlcnQoaW5zdC5hKGluc3QpLnggPT0gMSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwppbmRleCBlNTE2Mjk5YTc5MmM2Mzg0
Yjg0MmM2OTdmNDFmY2VkN2Y1Y2ZmZmNmLi41MDY5YTdkYTVhMTU1ZGNjMDYwNGU0NjMyYjkwZTgz
MDkzOWZlODM2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNz
LWluc3RhbmNlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5z
dGFuY2UuanMKQEAgLTEsMTEgKzEsMTUgQEAKLS8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJs
aWNDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJsaWNDbGFz
c0ZpZWxkcz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQogCiBjbGFzcyBB
IHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7CisgICAgI2QgPSAxOwogICAg
IGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAgICNmID0gZnVuY3Rpb24oKSB7IHJl
dHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZhbCgidHJ1ZSIpOworICAgICNp
ID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJpdmF0ZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjE2MzM2MmZhYTYzZTQwNTYyNWQxZmVjZWNlOTliY2QyNjZiOWVhOQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMK
QEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdl
dEJ5VmFsRGlyZWN0IHNob3VsZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZl
IHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3ID0gZmFsc2U7Citj
bGFzcyBDIHsKKyAgICAjeCA9IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkg
cmV0dXJuIHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0
aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFn
XSgpIHsgcmV0dXJuICJ3aXRoICN4IjsgfQorfQorCit0cnkgeworICAgIGZvciAoaSA9IDA7IGkg
PCA1MDsgKytpKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQg
PSBDLngoYyk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGkpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke2N9KSB0byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1
bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAo
aSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93
IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWluaW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcyBi
L0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWluaW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44NDJjZjEyYjY0YTE2NDMwMmVkMjdmNWI5MWUwNzU0NDcxZTExN2U2Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZh
dGUtZmllbGRzLmpzCkBAIC0wLDAgKzEsOTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVl
OiAoYSwgZSkgPT4geworICAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworICAgIH0sCisK
KyAgICB0aHJvd3M6IChleHBlY3RlZEV4Y2VwdGlvbiwgZnVuY3RvciwgbSkgPT4geworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEV4Y2VwdGlvbikpCisgICAgICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworICAgICAgICB9CisgICAgfQorfTsKKworKCgp
ID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAg
ICAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvPy4jZmllbGQ7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2Vzcyhj
KSwgJ3Rlc3QnKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2Vzcyh1bmRlZmluZWQp
LCB1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKG51bGwpLCB1
bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgICAgIEMuYWNjZXNzKHt9KTsKKyAgICB9LCAiT2JqZWN0IHdpdGhvdXQgcHJpdmF0ZSBm
aWVsZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisKKy8vIENoYWluZWQgY2FzZQorKCgpID0+IHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBz
dGF0aWMgY2hhaW5lZEFjY2VzcyhvKSB7CisgICAgICAgICAgICByZXR1cm4gby5wcml2YXRlPy4j
ZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGxldCBv
ID0ge3ByaXZhdGU6IGN9OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsK
KyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNoYWluZWRBY2Nlc3MobyksICd0ZXN0Jyk7Cisg
ICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNjZXNzKHt9KSwgdW5kZWZpbmVkKTsK
KyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNoYWluZWRBY2Nlc3Moe3ByaXZhdGU6IG51bGx9
KSwgdW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkg
PT4geworICAgICAgICBvLnByaXZhdGUgPSB7fTsKKyAgICAgICAgQy5jaGFpbmVkQWNjZXNzKG8p
OworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxkIHNob3VsZCB0aHJvdyIpOwor
fSkoKTsKKworKCgpID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkOworCisgICAg
ICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAg
fQorICAgIAorICAgICAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVybiBv
LiNmaWVsZD8ucHJvcGVydHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBD
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgYy5zZXRG
aWVsZCh7cHJvcGVydHk6ICd0ZXN0J30pOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNj
ZXNzKGMpLCAndGVzdCcpOworCisgICAgICAgIGMuc2V0RmllbGQodW5kZWZpbmVkKTsKKyAgICAg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhjKSwgdW5kZWZpbmVkKTsKKworICAgICAgICBj
LnNldEZpZWxkKG51bGwpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCB1
bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgICAgIEMuYWNjZXNzKHt9KTsKKyAgICB9LCAiT2JqZWN0IHdpdGhvdXQgcHJpdmF0ZSBm
aWVsZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE5ZDhlMjE5MjNmMjAyNGQwMjIwMmYzYTJlMTZiYjQ5ZTFmOTViM2QKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXBy
b3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJs
aWNDbGFzc0ZpZWxkcz0xIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHRocm93czogKGV4cGVjdGVkRXJyb3IsIGZ1bmN0b3IpID0+IHsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJy
b3IubmFtZSArICIgYnV0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgY2xhc3MgQmFzZSB7Cisg
ICAgICAgIFt7fS4jeF0gPSAxOyAKKyAgICAgICAgI3ggPSAiZm9vIjsKKyAgICB9Cit9KTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTA0ZGU2ZjUyNTI5MjA3MmExNmE1MDQ4NTA5MDE1ZWNhNWI5OWFlYgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMK
QEAgLTAsMCArMSwzNCBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5EZWZhdWx0KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVu
Tm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0
QnlWYWxUaHJvd0lmRXhpc3RzIiBzaG91bGQgdGhyb3cgaWYgb3ZlcndyaXRpbmcgYW4gYWxyZWFk
eSBleGlzdGluZyBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsKK2Ns
YXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8IDI5ID8gdGhp
cyA6IGM7CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4ID0gaSsrOwor
ICAgIHgoKSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0cnkgeworICAg
IGZvciAobGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9IG5ldyBDQzsK
KyAgICAgICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBF
eHBlY3RlZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsKKyAgICB9Cit9
IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNv
bnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisK
K2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12
YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQyM2MzZTRjMmQ5NzY3NTQ3NGY3
ZGQ3MmM0YzMzY2I4NDJhYTlhNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwzMSBAQAorLy8gVE9ETzog
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5O
b0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdQVkQgd2l0aCAiUHV0QnlWYWxQcml2YXRlTmFt
ZSIgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUu
CitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeDsKKyAgICBj
b25zdHJ1Y3RvcigpIHsgcmV0dXJuIGkgPCAzMCA/IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJpbmdU
YWddOiAid2l0aG91dCAjeCIgfTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4
ID0gaSsrOyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGgg
I3giIH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsKKyAg
ICAgICAgbGV0IG9iaiA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KG9iaik7Cisg
ICAgICAgIGlmIChyZXN1bHQgIT09IGopCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4
cGVjdGVkIEMueCgke29ian0pIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAg
ICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIC8vIHJ2YWwgb2YgQXNz
aWdubWVudEV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGJlZm9yZSBQcml2YXRlRmllbGRGaW5kKCN4
LCBscmVmKSBpcyBwZXJmb3JtZWQsCisgICAgLy8gdGh1cyBgaWAgaGFzIGFscmVhZHkgYmVlbiBp
bmNyZW1lbnRlZC4KKyAgICBpZiAoaSAhPT0gMzEgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVy
cm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBiMTU0ODI1NzU4YzY4Y2JkMzRjNmY5YzExM2Yx
YzgzODE0OGI0NDQ1Li43MDI3ZjVmOTQyODZjYjhjMzczNTVkYmVhZDY3ODdkYjZiYjkzOTAyIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCkBAIC01LDYgKzUsNyBAQCBmbGFnczoKICAgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQ6IHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQKICAgV2Vha1JlZjogdXNlV2Vha1Jl
ZnMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzogdXNlUHVibGljQ2xhc3NGaWVsZHMKKyAgY2xhc3Mt
ZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcwogICBsb2dpY2FsLWFzc2lnbm1l
bnQtb3BlcmF0b3JzOiB1c2VMb2dpY2FsQXNzaWdubWVudE9wZXJhdG9ycwogc2tpcDoKICAgZmVh
dHVyZXM6CkBAIC0xNCw3ICsxNSw2IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0g
ICAgLSBjbGFzcy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAg
ICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxk
cy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398691</attachid>
            <date>2020-05-06 18:27:09 -0700</date>
            <delta_ts>2020-05-06 18:47:19 -0700</delta_ts>
            <desc>Patch v19</desc>
            <filename>bug-206431-20200506212708.patch</filename>
            <type>text/plain</type>
            <size>200466</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODEwYWU4NmMzYTFlYTYwNjQxZDQ5YjNkZTE4ODUxZDI5MGQ2MmVlLi5mMGNiYTM4MTJiODNkOGIw
ZGYxMGEyY2FhZjQ5ZDkxMWYyYjU5ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjAtMDUtMDYgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBTcGVjaWZpY2Fs
bHksIHdoZW4gaXQKKyAgICAgICAgY29tZXMgdG8gcHJpdmF0ZSBmaWVsZCBhY2Nlc3NlcywgaXQn
cyBuZWNlc3NhcnkgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gYWNjZXNzaW5nIGEgZmllbGQK
KyAgICAgICAgd2hpY2ggZG9lcyBub3QgZXhpc3QsIG9yIHdoZW4gYXR0ZW1wdGluZyB0byBkZWZp
bmUgYSBwcml2YXRlIGZpZWxkIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAgZGVmaW5l
ZC4KKworICAgICAgICBEdXJpbmcgdGhlIGV2YWx1YXRpb24gb2YgYSBjbGFzcyBleHByZXNzaW9u
LCBiZWZvcmUgdGhlIGNsYXNzIGVsZW1lbnQgbGlzdCBpcyBldmFsdWF0ZWQgKGluIGNhc2UKKyAg
ICAgICAgYW55IGNvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGV4cHJlc3Npb25zIHJlZmVyIHRvIGEg
bmV3IHByaXZhdGUgZmllbGQpLCBhIG5ldyBQcml2YXRlU3ltYm9sIGlzCisgICAgICAgIGNyZWF0
ZWQgZm9yIGVhY2ggaW5kaXZpZHVhbCBwcml2YXRlIGZpZWxkIG5hbWUsIGFuZCBzdG9yZWQgaW4g
dGhlIGNsYXNzIGxleGljYWwgc2NvcGUuCisKKyAgICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBh
cmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRoZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0
aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBh
Y2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUgZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMg
b2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVkIGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxk
IGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAg
ICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhl
ciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAgICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHBy
aXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBsaWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFk
cz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwg
IiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1i
b2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQ
cm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJl
Y3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisK
KyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29w
ZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0
X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRo
cm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAg
ICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5
bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBE
ZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50
U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAg
ICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5k
fEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlf
dmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVl
PiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlWYWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAg
IFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRkZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcg
SlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5o
LgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QpOgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlND
OjpQdXRCeVZhbEZsYWdzOjppc0RpcmVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFs
RmxhZ3M6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6cHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6
OmlzUHJpdmF0ZUZpZWxkQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFn
czo6aXNQcml2YXRlRmllbGRQdXQgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdz
Ojppc1ByaXZhdGVGaWVsZEFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6
OlB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6
OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZp
ZWxkTmFtZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjpl
bWl0RG90KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChK
U0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2Rp
ZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRCeVZhbERp
cmVjdD4pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wu
cmI6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRQdXRC
eUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZTxPcFB1dEJ5SWQ+KToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1
dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFs
RGlyZWN0Pik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpwdXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpkZWZpbmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2ln
bk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVy
PExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VUNoYXI+Ojpw
YXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFy
c2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4V2l0aG91
dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6CisgICAgICAg
IChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6
OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6c2hv
dWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5o
OgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRpb24gY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkJhc2VEb3ROb2RlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5v
ZGU6OnR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlTmFt
ZSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1l
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tl
blRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6
OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1By
aXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzUHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpTY29wZTo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcyBjb25zdCk6
CisgICAgICAgIChKU0M6OlNjb3BlOjp1c2VQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlNj
b3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnByaXZhdGVO
YW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmV4cGVjdFByaXZhdGVOYW1lU2NvcGUp
OgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRl
clNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjptYXRjaEFuZFVwZGF0ZSk6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRh
eENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNz
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAg
ICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50Ojpzd2FwKToKKyAgICAgICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6
OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6Omlz
UHJpdmF0ZU5hbWUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OnNldElzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQ
cml2YXRlTmFtZUVudHJ5KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2Vk
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNEZWNsYXJlZCBjb25z
dCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNldElzVXNlZCk6CisgICAgICAg
IChKU0M6OlByaXZhdGVOYW1lRW50cnk6OnNldElzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpQ
cml2YXRlTmFtZUVudHJ5OjpiaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6OlZhcmlhYmxlRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFw
U2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQ
cml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnVzZVByaXZh
dGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVz
U2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZh
dGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVByaXZhdGVO
YW1lc1RvIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVu
ZGVjbGFyZWRQcml2YXRlTmFtZXNUbyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhOjpSYXJlRGF0YSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmdldE9yQWRkUHJpdmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRPcHRpb25hbDo6ZGVjb2RlQXNQdHIgY29u
c3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmVu
Y29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6
ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6
ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjb2Rl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZW5jb2Rl
KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmVuY29kZSk6CisgICAgICAgIChK
U0M6OkNhY2hlZFN5bWJvbFRhYmxlOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0lt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAo
SlNDOjpDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICog
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVByaXZh
dGVGaWVsZCk6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgor
ICAgICAgICAoSlNDOjpTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAgICAqIHJ1
bnRpbWUvU3ltYm9sVGFibGUuaDoKKwogMjAyMC0wNS0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgQnlWYWwgbm9kZXMgd2l0aCBBcnJheU1v
ZGVzIHNob3VsZCBjbG9iYmVyVG9wIHVudGlsIEZpeHVwIHBoYXNlIHJ1bnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMGQxZmUzMDAwYWIyYjRiMDhhZjQ0OWQ5NTMyMjc3
YmU0N2E2ZGM4Ny4uNjM4MGY5MGQzZWRjZDYwMDc3NDA1MDMzZjczMDNlNjE2MThmMTZjOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQxLDYgKzU0MSw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvT3Bl
cmFuZHMuaAogICAgIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29kZS9Q
dXRCeUlkRmxhZ3MuaAorICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAgIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVj
b2RlL1N1cGVyU2FtcGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDAyN2Y3
ZWYyYWMxNTYzZDNhMGNiYzViZjcwODIwYzFmZjE0MjYzYTQuLjU5ODQ4NzBkNzRiYTYxMDU2ODZm
ZTc2NGRjMTM3MzIyYWEwOWU3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MjUxLDYgKzEyNTEsNyBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBh
cnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
MDRCODExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2NzZDNkU4MjM0NjQ2
N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxG
bGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2ODkxNkIwMTU1RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3
MDAxMTU5RjYgLyogSlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3
NkU1QTFGQTM3NThBMDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMTgsNiArNDExOSw4IEBACiAJ
CTg2NzA0QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyclBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
WWFyclBhdHRlcm4uY3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRo
ID0geWFyci9ZYXJyUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2
QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
dXRCeVZhbEZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU3MjM0
NjQ1QjMwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1
dEJ5VmFsRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0
MzI4QkI5MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0
aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY4ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFt
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQxMSw2ICs4NDE0LDggQEAKIAkJCQkwRjkzMzI5
QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThC
OTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5
MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCisJCQkJODY3NkM2RTcyMzQ2NDVC
MzAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovLAorCQkJCTg2NzZDNkU2MjM0NjQ1MEIw
MEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUy
QUUwIC8qIFB1dEtpbmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVj
b3JkZWRTdGF0dXNlcy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJl
Y29yZGVkU3RhdHVzZXMuaCAqLywKQEAgLTEwMTYyLDYgKzEwMTY3LDcgQEAKIAkJCQkwRjE1Q0Qy
MzFCQTVGOTg2MDAzMUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjkzMzJBNDE0Q0E3REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY5M0I0QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVj
dEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUw
IC8qIFB1dEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVB
NCAvKiBQdXRQcm9wZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CmluZGV4IGVjY2U5MTNlYzUxMzdiMGEyOWVhNWQ4ZTg5NTY4ZTM5YmU4Mzk2YzguLjZk
OGRmNTQxOGM0ZjViZjNhY2I1MDVmNTAzNDJmZmQ0YWI3Njg2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKQEAgLTI2OCw2ICsyNjgsNyBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3ND
YXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUvUHV0QnlWYWxGbGFn
cy5jcHAKIGJ5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0
ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMTM2MjVmNWJhODk5Y2NkZWJi
NTYzNTQ4N2ZkYzE1MjQ2ZTcyYjgyMi4uMGYyNTMxYzMwNjgyZDFiODNmYjI2YThkMjFlNjJkZWU0
N2Q3MGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaApAQCAtMTY5LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKG1ldGEp
IFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAg
IG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAotICAgIG1h
Y3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgCisgICAgbWFjcm8oaW5zdGFuY2VGaWVsZElu
aXRpYWxpemVyKSBcCisgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAogbmFtZXNwYWNl
IFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMobmFtZSkg
ZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwgbmFt
ZSMjU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggNDk4NTc5MDMzMGNjOWU1MzI5YjMxYWVlN2MyNmJjYzEyZTQ5YzEzOC4uOWMw
OTcyYzEzZWNkN2ZlMmYwOWY4YzMxYzY4NTE1MzBjOWRmNTljYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00OSw2ICs0OSw3IEBAIHR5
cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0
LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVU
eXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTQ5LDYgKzU1MCwx
NyBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhp
c3RvcnksCiAgICAgfQogCitvcCA6Z2V0X2J5X3ZhbF9kaXJlY3QsCisgICAgYXJnczogeworICAg
ICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVy
LAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0YWRh
dGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBhcnJheVByb2Zp
bGU6IEFycmF5UHJvZmlsZSwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAogICAgIGFyZ3M6IHsK
ICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTc0LDcgKzU4Niw3IEBAIG9wIDpw
dXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAg
ICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTogVmlydHVhbFJlZ2lz
dGVyLAotICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCisgICAgICAgIGZsYWdzOiBQdXRCeVZh
bEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJyYXlQcm9maWxlOiBB
cnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmNwcAppbmRleCBlMzFiMTM0YzI4YzFmMjgzNGVmY2I3OGUwMTY1ZWQ3ZmY2ZDgx
ZjNhLi4xMTI0YTNmNmYyZTNkNTVlYTUzYzkxMjBjOWIwZWFkNTY2N2EwMzRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKQEAgLTIx
Miw2ICsyMTIsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRleEltcGwoVmlydHVh
bFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVTRVMoT3BFbnVtZXJh
dG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BFbnVtZXJh
dG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wR2V0QnlWYWws
IGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BHZXRCeVZhbERpcmVjdCwgYmFzZSwgcHJvcGVy
dHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BPdmVy
cmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFsdWUpCiAgICAgVVNF
UyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC00MjMsNiArNDI0LDcgQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51bVZhcnMsIGNvbnN0
IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wSW5zdGFuY2VvZiwgZHN0KQogICAgIERF
RlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5VmFsLCBkc3QpCisg
ICAgREVGUyhPcEdldEJ5VmFsRGlyZWN0LCBkc3QpCiAgICAgREVGUyhPcFR5cGVvZiwgZHN0KQog
ICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3QpCiAgICAgREVGUyhPcElzRW1w
dHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCmluZGV4IDBkOTU3MDky
NmFiMTQ3Mzc4ZWMzMTcyODM4ZGIyMzU4ODJkYjdiY2QuLjM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5
MjJhMzgyYmY2YjhhMGFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9wY29kZVNpemUuaCIKICNpbmNsdWRlICJQcm9m
aWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1
ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAi
U3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIK
QEAgLTI1Niw2ICsyNTcsNDcgQEAgc3RydWN0IEZpdHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAg
ICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFN
b2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKTsKICAgICB9CiB9OworCit0ZW1w
bGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3QgRml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7
CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVuYW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2ln
bmVkVHlwZTsKKworICAgIC8vIFB1dEJ5VmFsRmxhZ3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJp
dCBlbnVtLCBlbmNvZGVkIGFzOgorICAgIC8vICAgICAgICAgIGlzU3RyaWN0CisgICAgLy8gICAg
ICAgICAgICAgdgorICAgIC8vICAgICAwMDAwfDAwfDB8MCA8IGlzRGlyZWN0CisgICAgLy8gICAg
ICAgICAgIF4KKyAgICAvLyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9
IFB1dCwgMiA9IENyZWF0ZSB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJp
dCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19pc1N0cmljdEJpdCA9IDI7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0g
MjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1dEJ5VmFsRmxhZ3MpCisgICAgeworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1
dEJ5VmFsRmxhZ3MgZmxhZ3MpCisgICAgeworICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3QoKSk7CisgICAgICAgIGF1dG8gaXNTdHJpY3Qg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAg
ICAgICBhdXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihm
bGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkpOworICAgICAgICByZXR1cm4gKHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgPDwgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3Ry
aWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQorCisgICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3Mg
Y29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBz
dGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGlyZWN0Qml0KTsKKyAgICAgICAgYXV0byBpc1N0
cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNTdHJpY3RCaXQpOworICAgICAgICBh
dXRvIGFjY2VzcyA9IHN0YXRpY19jYXN0PFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBz
X3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRT
aGlmdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUgPSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJp
Y3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAgICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lID8KKyAgICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlW
YWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShl
Y21hTW9kZSkgOgorICAgICAgICAgICAgYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQ
dXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1vZGUpOworICAgIH0K
K307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9wY29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRz
PEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19l
bnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJs
eWluZ190eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVy
bHlpbmdfdHlwZV90PEU+LCBzaXplPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4IGUyYzFhNDliNDM0YzBjYzUxNTg0OTQ0NWFj
ZDlmZWRiZjU5N2EwMzcuLjcwNDI1NGJiYjdhNWRhMzE2OTFiMzEwNjY4YmYzNmNhMDQ1NGVjNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0
YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3Rh
bnQuaApAQCAtMTA0LDYgKzEwNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIHYoQXJy
YXksIG51bGxwdHIpIFwKICAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGNh
bGxGdW5jdGlvbiwgbnVsbHB0cikgXAorICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwgbnVsbHB0
cikKIAogCiAjZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5h
bWUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDhlOTBmZDA3ZDBkMzcxMzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2luY2x1ZGUg
PHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNs
dWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQ
dXRCeVZhbEZsYWdzIGZsYWdzKQoreworICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAg
IGlmIChmbGFncy5pc0RpcmVjdCgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEaXJlY3Qi
KTsKKyAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRQdXQoKSkKKyAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK1B1dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVs
ZEFkZCgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRkIik7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeVZhbEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVmZmQ3OTdmNjU4Nzg3OWMwYzMyMTU5Yzk2
NTAyODI4MmEzOWZjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDog
dWludDhfdCB7CisgICAgTm9uZSwKKyAgICBQdXQsCisgICAgQ3JlYXRlLAorfTsKKworY2xhc3Mg
UHV0QnlWYWxGbGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZs
YWdzIGNyZWF0ZShFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRC
eVZhbEZsYWdzKGZhbHNlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgLy8gQSBkaXJlY3QgcHV0
X2J5X2lkIG1lYW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcg
aWYgdGhlCisgICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KKyAgICBjb25zdGV4
cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOworICAg
IH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2
YXRlRmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlW
YWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKKyAgICB9
CisKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZp
ZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxh
Z3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0LCBlY21hTW9kZSk7CisgICAgfQorCisgICAg
Ym9vbCBpc0RpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01BTW9k
ZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKyAgICBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmU7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyBy
ZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
OlB1dDsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9
CisKK3ByaXZhdGU6CisKKyAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0
LCBFQ01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQorICAg
ICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpO
b25lKQorICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgeworICAgIH0KKworICAg
IGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBF
Q01BTW9kZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCisgICAgICAgICwg
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKGFjY2VzcykKKyAgICAgICAgLCBtX2VjbWFNb2RlKGVj
bWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG1faXNEaXJlY3Q7CisgICAgUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CisgICAgRUNNQU1vZGUg
bV9lY21hTW9kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsK
KworY2xhc3MgUHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYs
IEpTQzo6UHV0QnlWYWxGbGFncyk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKaW5kZXggNjExMjc5ZjYwOWEwODU4OWFkY2U5MWMy
YTVjOGFmNjQ4MDgwYzRjNi4uZjkwZDUyOWQyYWViYjNjZDk1YzhiNDU3YjY0OGI1Zjc0YjhmYjEz
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCkBAIC0yNyw2ICsy
Nyw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERp
cmVjdCB9OworZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZhdGVG
aWVsZENyZWF0ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggNWI5OGE1NDZmMTkyYjJkOGYwNjMwYTNj
NzE4NWM1MWZkMTUxNWE3Ny4uZjUxNTliNGRkMWUxM2Y4ZjA3NWE2ZGJmMTE2MDcwMjYyNDJhNzdj
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2soCiAgICAgQVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2Rl
KCkpKTsKICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
ID0gZXhlY3V0YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0aW9ucygpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAg
ICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9k
ZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVy
QmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVk
Q29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0ciwgaW5zdGFu
Y2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUo
KSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4dFR5
cGU6Ok5vbmUsIG51bGxwdHIsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogCiAg
ICAgaWYgKCFmdW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggYzE5ZTYxYzUyODliN2MxMDVkZjdjNjlmZjU3NzQ1NWQ0OGU1MjQ4
Mi4uNjU4MDgwYzAxZDlkNjVlYzIxMDg4MDAyMjU4YjRmM2IxZDkwNzE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTE4ODksNiArMTg4OSwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0
YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbAogCiAg
ICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSA6IFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgICAgICBzeW1ib2xU
YWJsZS0+YWRkKE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7
CisKKyAgICAgICAgICAgIC8vIEZJWE1FOiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZh
bCgpIHdpdGhpbiBhIG5lc3RlZCBzY29wZSAtLS0gb3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4K
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDY2NjMKKyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCisgICAg
ICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAt
MjY3Niw5ICsyNjgxLDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0
QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5
VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHkpCit7CisgICAgT3BHZXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3Bl
cnR5KTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRo
aXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CisgICAgT3BQdXRCeVZhbERp
cmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNy
ZWF0ZURpcmVjdChlY21hTW9kZSgpKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzAw
LDYgKzI3MTEsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRl
cm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5
LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2Rl
KCkpKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0
KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJp
dmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNh
bXBsZXJCZWdpbjo6ZW1pdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAzOTdkZGRjN2U1YjhmMTAw
ZTlhOTdkN2MzNGE2OTY4NjQ2MWU2ZGQ5Li41Mzc0NTZkYzIxMWZjNWU4Mjk5MWYxMmQzNTg2NjQ0
NTg2MjAzNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03ODcsMTEgKzc4NywxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1Zh
bHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRE
aXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBS
ZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRl
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAg
ICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1
cGVyU2FtcGxlckVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDMxMjQ5MmFjYWI4NTFkMjlhNWFhMzQ0MWI4YzQ5
ZjViZTg2Y2RmYTQuLjdkMzcwODFhZWZiOGQ1YzZkNGI0NTQ3NDZlZWJjMGQ4ZTBjZWEyNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKQEAgLTU0OSwxMSArNTQ5LDMwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9t
ZU9iamVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGZ1bmN0aW9uLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSgpLCBob21lT2JqZWN0KTsKIH0K
IAordm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIC8v
IFdhbGsgdGhlIGxpc3QgYW5kIGRlY2xhcmUgYW55IFByaXZhdGUgcHJvcGVydHkgbmFtZXMgKGUu
Zy4gYCNmb29gKSBpbiB0aGUgcHJvdmlkZWQgc2NvcGUuCisgICAgZm9yIChQcm9wZXJ0eUxpc3RO
b2RlKiBwID0gdGhpczsgcDsgcCA9IHAtPm1fbmV4dCkgeworICAgICAgICBjb25zdCBQcm9wZXJ0
eU5vZGUmIG5vZGUgPSAqcC0+bV9ub2RlOworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9w
ZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVh
dGVQcml2YXRlU3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIs
IExpbmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgICAgICAgICBD
YWxsQXJndW1lbnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmlu
ZWQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ltYm9sID0gZ2VuZXJhdG9y
LmVtaXRDYWxsKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZh
dGVTeW1ib2wuZ2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGFyZ3VtZW50cywgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVi
dWdnYWJsZUNhbGw6Ok5vKTsKKworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9y
LnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoc2NvcGUsIHZhciwgc3ltYm9sLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwogUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lz
dGVySUQqIHByb3RvdHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucykKIHsKLSAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVn
dWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwog
ICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisKKyAgICAvLyBGYXN0IGNhc2U6IHRoaXMg
bG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIGZvciAoOyBw
ICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+
bV9uZXh0KSB7CiAgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVy
dHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CiAKQEAgLTcxNSw2ICs3MzQsOSBA
QCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQ
dXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIG5ld09iaiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAgIC8vIFByaXZhdGUgZmllbGRz
IGFyZSBoYW5kbGVkIGluIHRoZSBzeW50aGV0aWMgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyIGZ1
bmN0aW9uLCBub3QgaGVyZS4KKyAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9k
ZTo6UHJpdmF0ZSkpOworCiAgICAgYm9vbCBzaG91bGRTZXRGdW5jdGlvbk5hbWUgPSBnZW5lcmF0
b3Iuc2hvdWxkU2V0RnVuY3Rpb25OYW1lKG5vZGUubV9hc3NpZ24pOwogCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHByb3BlcnR5TmFtZTsKQEAgLTg0NSwxNiArODY3LDY2IEBAIFJlZ2lzdGVySUQq
IERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVyCiAgICAgfQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsK
LSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNW
YWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHJldCA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwg
bV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQq
IHJldCA9IGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZmluYWxEZXN0LmdldCgpLCBi
YXNlLmdldCgpKTsKKwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0Lmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0
cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsK
KyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFt
ZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShw
cml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQp
OworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJhc2Us
IHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9k
ZSgpKSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0g
Z2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChkc3QsIGJhc2UsIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgfQorCisgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkc3QsIGJhc2UsIG1faWRlbnQpOworfQorCitS
ZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKQorewor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKGdlbmVyYXRvciwgZHN0LCBiYXNlLCB0aGlzVmFsdWUpOworfQorCitSZWdpc3Rl
cklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0
ZXJJRD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3Qg
YmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UsIHByaXZhdGVOYW1l
LmdldCgpLCB2YWx1ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkg
eworICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVy
YXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1ZSk7Cit9CisKK1Jl
Z2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdFB1dFByb3BlcnR5
KGdlbmVyYXRvciwgYmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNzM4LDEx
ICsxODEwLDkgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0T3B0aW9uYWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwg
c3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgaWYgKGJhc2VJ
c1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdp
c3RlcigpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZ1bmN0aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50
KTsKKworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
OworICAgIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rpb24uZ2V0KCksIGJh
c2UuZ2V0KCkpOwogCiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAgLTIwNjMsNiArMjEz
MywyMiBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJh
c2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3Rh
cnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRvdEFjY2Vzc29yLT5p
c1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJp
dmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
KworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVj
dEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5h
bWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9z
dEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1
ZS5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVl
LmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
KGRzdCwgb2xkVmFsdWUuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChiYXNlSXNT
dXBlcikgewpAQCAtMjI4Niw2ICsyMzcyLDIxIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVt
aXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90
QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJl
Z2lzdGVySUQqIHZhbHVlOworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTmFtZSgpKSB7
CisgICAgICAgIEFTU0VSVCghYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpOworICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVO
YW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgZW1pdEluY09yRGVjKGdl
bmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgp
LCB2YWx1ZSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3Qs
IHByb3BEc3QuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFs
dWU7CiAgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIHRoaXNWYWx1
ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CkBAIC0zMTI4LDExICszMjI5LDcgQEAgUmVnaXN0
ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJh
dG9yLmVtaXROb2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChi
YXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkp
OwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
bV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CisgICAgZW1pdFB1dFByb3BlcnR5KGdlbmVy
YXRvciwgYmFzZS5nZXQoKSwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZShmb3J3YXJkUmVzdWx0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkp
OwogfQpAQCAtMzE0NCwyMyArMzI0MSwxNSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJh
dG9yKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25E
aXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1
ZTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1Zh
bHVlLmdldCgpLCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBlbWl0R2V0UHJvcGVy
dHlWYWx1ZShnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgdGhpc1ZhbHVlKTsKKwogICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRS
ZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3Bl
cmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2Ny
aXB0b3IoKSkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOwot
ICAgIGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCks
IG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldCA9IGVt
aXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0KCksIHVwZGF0ZWRWYWx1ZSwgdGhpc1Zh
bHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXQuZ2V0
KCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTaG9ydENpcmN1aXRS
ZWFkTW9kaWZ5RG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
NDYyNCw2ICs0NzEzLDE3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVy
dHlOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5l
cmF0b3I6OlByb3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5
V3JpdGFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0
aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpU
eXBlOjpQcml2YXRlTmFtZTogeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoKm1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwo
KSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFi
bGVzIik7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigp
LCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgbV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3Vu
ZCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKGdlbmVyYXRvci50
aGlzUmVnaXN0ZXIoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5h
bWU6IHsKICAgICAgICAgLy8gRklYTUU6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgcHVibGljIGNs
YXNzIGZpZWxkcwogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTk4MzMwCkBAIC00NjM0LDcgKzQ3MzQsNyBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIkNvbXB1dGVkIG5hbWVz
IG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24o
KSArIDEpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxw
dHIsIHZhcik7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
cHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwg
bV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIG1faWRlbnQtPmxlbmd0aCgpKTsKQEAgLTQ3MjcsNiAr
NDgyNyw4IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
RGVmaW5lUHJvcGVydHkoY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZU5hbWVSZWdpc3Rlci5n
ZXQoKSwgcHJvdG90eXBlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCBtX3Bvc2l0aW9uKTsK
IAogICAgIGlmIChtX2NsYXNzRWxlbWVudHMpIHsKKyAgICAgICAgbV9jbGFzc0VsZW1lbnRzLT5l
bWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnNjb3BlUmVn
aXN0ZXIoKSk7CisKICAgICAgICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBpbnN0YW5jZUZpZWxk
TG9jYXRpb25zOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERlZmluZUNsYXNzRWxlbWVudHMobV9j
bGFzc0VsZW1lbnRzLCBjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZUZpZWxkTG9jYXRpb25zLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAppbmRleCA4YWQ0YmMwNzljZjgxMjY3YWI1ZTE3ZDFiMjQ4YzQ3YzFhZThjZDZlLi40
MzkxOWM2NGU1YTI2MmViZDBkYjhlNmNjOTAxYTA5OGFjZDU0YzU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzIsNiArNzIsNyBA
QAogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFn
cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdz
LmgiCiAjaW5jbHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1l
bnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgpAQCAtMTI2OSw2ICsxMjcwLDE4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9Owog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitFQ01BTW9kZSBlY21hTW9kZShCeXRl
Y29kZSBieXRlY29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKK30KKwor
dGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGly
ZWN0PihPcFB1dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxv
Y2F0ZVRhcmdldGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAg
QVNTRVJUKGJ5dGVjb2RlSW5kZXgpOwpAQCAtODE5NCw3ICs4MjA3LDcgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXgg
b3NyRXhpdEluZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkK
LSAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51
bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGJ5dGVj
b2RlLm1fZWNtYU1vZGUpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9z
ckV4aXRJbmRleCwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBp
bGVkQXNQdXRCeUlkKSB7CkBAIC04MjA1LDcgKzgyMTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0
SW5kZQogICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0No
aWxkKDApOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRW
YXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRUb0dy
YXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUpKTsK
KyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJl
Y3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21hTW9k
ZShieXRlY29kZSkpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlWYWwgYW5k
IFB1dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIgZXhpdCBz
dGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDY1
MzI5ZjVjNDVmNDMxNTgzZjM5ZTFmMDA3ZTRlMDY1MzllNTk0NzUuLmIwZjRjZGVmZWRmZGNmNDFj
YjU3ODhjMWJkMmE1YmI1Y2FmNmU1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5Nyw2ICsyOTcsNyBAQCBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Y29uc3QgSQogCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5lcmF0
b3JfZnJhbWVfZW52aXJvbm1lbnQ6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX2RpcmVjdDogLy8g
RklYTUU6IG9wX2dldF9ieV92YWxfZGlyZWN0IHdpbGwgbmVlZCBERkcvRlRMIHN1cHBvcnQgdG8g
c2hpcCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAg
IGNhc2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVsZV9wcm9ncmFt
X3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCBmYTI4ZjM5MzBkNGQ4MmVlNjhjZDAyODcwZmMxNjg3ZDAyYzI1OTJjLi45
M2NjNmZiMDdkZDY3ZDEzYzNkYzRmYWQ1MGJkZjJkOTZkMGExMzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQyMDQsNyArMTQy
MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
Z2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVz
ZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0
S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IDUyYTY5OWZmYzljZTZiODNhYjA0ZmNiZDMwNzQzZjA0NjRjYTQyMzQuLjc3N2M0ZDQ4ZTA4OTY3
NTA0MzRkZWQ5NDMzMGE0ZTA5ZDY5ZWYxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQyMDQsNyArNDIwNCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6
cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAg
IG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5v
dERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAKICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRvci9EU0wucmIKaW5kZXggOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEw
YzgzMS4uZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTE0MSw2ICsxNDEsNyBAQCBtb2R1bGUg
RFNMCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNs
dWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSUNTdGF0cy5oCmluZGV4IDkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMx
NDkuLjk2YzE5YTE3YmRjMmE3ZDEwZjE1ZjliY2EzOTAyMTYyMWM5OWRiODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QpIFwKICAgICBtYWNy
byhPcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3Bl
cmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAorICAgIG1hY3JvKE9wZXJh
dGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplKSBcCisgICAg
bWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUp
IFwKICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRS
ZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggOTRiMGU1NjYxMzgxMmVlZWYzNmRiMWE5MjIzNjQyM2Qz
ODczOTc3Ny4uMzBiZDUyOWMzZTRkMjJhMmVkMWY2Nzg5OWI0MGFkMTQxMTVmMzBiZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjk4LDYgKzI5OCw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Nj
b3BlKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkK
ICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgICAgIERF
RklORV9TTE9XX09QKGdldF9ieV92YWxfZGlyZWN0KQogICAgICAgICBERUZJTkVfU0xPV19PUChw
dXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dp
dGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3Rp
bmdfZnVuY19kZWNsX2luX2V2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAzNGYzZDUw
ZjA0YmMyYjk2ZTBmOTU5YzdjNmI1NTNmNzQ3MDA1NTFkLi42Njk4MzYyOGUyZDY1MGE1ZWFkZTBi
M2Y2MjhiZjdkNDA1ODU2Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQwMSw3ICs0
MDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgog
ICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAotICAgICAgICAvLyBJZGVudGlmaWVy
IGNoZWNrIGhlbHBlciBmb3IgUHV0QnlWYWwuCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgorICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CisKKyAgICAgICAgLy8gRGV0ZXJtaW5l
cyB0aGUgdHlwZSBvZiBwcml2YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CisgICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCk7CisKKyAgICAgICAgLy8gSWRlbnRpZmllciBjaGVj
ayBoZWxwZXIgZm9yIEdldEJ5VmFsIGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0QnlW
YWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCAyMjZlNmI3OTg1MWI2MWJjY2JkNTEwN2Nm
YTVmY2MzMDI2MGU3OTViLi4wNWM3NTE1ZGQ1NGMzZGNjZmJlNGEwMzRkY2UwMTI1OWM2ZTBlNGYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcApAQCAtMTM3LDExICsxMzcsMTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAg
ICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAgIDogSklUQnlJZEdlbmVy
YXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKLSAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCi0gICAgLCBtX3B1dEtpbmQocHV0S2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwg
UHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpCisgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQor
ICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgICAgICwgbV9wdXRLaW5kKHB1dEtp
bmQpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKHByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsK
IH0KQEAgLTE1Myw2ICsxNTMsMTQgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0aW9uX0dTc2lKSkMg
SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKSB7Cisg
ICAgICAgIEFTU0VSVChtX3B1dEtpbmQgPT0gRGlyZWN0KTsKKyAgICAgICAgQVNTRVJUKG1fZWNt
YU1vZGUuaXNTdHJpY3QoKSk7CisgICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAg
ICB9CisKICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgIGlmIChtX3B1
dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCBmMDNlMDkyNTM4NTQxZmIwMzQwZjEyYzZiYThh
NjExMTFmMzM2Nzc1Li5lYmZjYjU1OTY0MDk4YzYyNGIwMjhmZDdmZGEwOWY3YzY0MTRlYzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1
ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
UHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3Rl
clNldC5oIgogCkBAIC0xMzAsMTEgKzEzMSwxMiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9y
IDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQorICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25l
KQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpT
VmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAg
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5k
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVBY2Nlc3MpOwogICAgIAogICAgIHZvaWQg
Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQzLDYgKzE0NSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRL
aW5kIG1fcHV0S2luZDsKKyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKaW5kZXggOWI2YzA1MjQ4YmEyOTI5NmY5OWVkMzc2ZmI5NDgyOGZiYzkzM2NiZi4uZDUzZTY5
NzdkMzlkNzU5ZTY3NDEyZmQ5YWQxYjllNjc4MmI5N2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY4Niw2ICs2ODYsMzYgQEAgQUxXQVlTX0lOTElORSBCaW5h
cnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUp
CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitB
TFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGUoT3Agb3ApCit7CisgICAgcmV0dXJu
IG9wLm1fZWNtYU1vZGU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKK3sKKyAgICByZXR1cm4gb3Au
bV9mbGFncy5lY21hTW9kZSgpOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFN
b2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkK
K3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KK1ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKE9wKQoreworICAgIHJldHVybiBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOworfQor
Cit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpw
cml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qg
b3ApCit7CisgICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5N2Y0ZGMwN2E1Zjli
ZTc1YjgzNjY3MGZjNzI3ZTYyNmE0MmYyMGU5Li41N2E1YmYzMjBiNjdhNGJlNGFmNzFlNjM0MmQx
NjQ3ZWQ2MWVkNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKQEAgLTcxMSw2ICs3MTEsMTE3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAg
ICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBz
dHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAorfSAv
LyBleHRlcm4gIkMiCisKK3VzaW5nIFB1dFByaXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5j
dGlvbjx2b2lkKFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90Jiwg
Y29uc3QgSWRlbnRpZmllciYpPjsKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0
ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFj
ayA9IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrKCkpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworICAgIEFTU0VSVChpZGVudC5pc1ByaXZh
dGVOYW1lKCkpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFs
dWUpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
KyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7
CisKKyAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxv
Y2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJh
Y2sodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBwdXRTbG90LCBpZGVudCk7Cit9CisKK0FM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGNv
bnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFByaXZhdGVGaWVsZENh
bGxiYWNrKCkpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZp
ZXIudWlkKCkpOworICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOworCisgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICBQdXRQcm9wZXJ0eVNs
b3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkp
OworICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGlkZW50
LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJhY2sodm0sIGNvZGVCbG9jaywg
b2xkU3RydWN0dXJlLCBwdXRTbG90LCBpZGVudCk7Cit9CisKK2V4dGVybiAiQyIgeworCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJf
dCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgZGVmaW5lUHJp
dmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlm
aWVyLCB2YWx1ZSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVm
aW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRl
bnRpZmllcikKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3
Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisK
KyAgICBkZWZpbmVQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNl
T2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgWz1dKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmpl
Y3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7
CisKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUs
IGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwg
KnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgIH0pOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisK
KyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgcHV0UHJpdmF0ZUZp
ZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2
YWx1ZSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikK
K3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0g
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRp
Zmllcik7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0
KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworCisgICAgcHV0UHJpdmF0ZUZpZWxkKHZt
LCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUs
IFsmXShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgewor
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRG
aWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0
U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOworCisgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNj
ZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+
YWNjZXNzVHlwZSkpOworCisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnko
dm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJl
cGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1
Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxk
UHV0KTsKKyAgICB9KTsKK30KKwogc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1Zh
bHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5ZWEzY2JkOTM0ZWI0NzM2OTcxZDZmOWUxYjI3ZTc4MTg4
ZDQ2NDEwLi42NjcwNWU0NTk4YWY5NjdlMDkyMDUyNjg1ODE3NTdhOTg3YmFhZjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTg4LDYgKzE4OCwxMCBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Ygogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZf
SU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90
KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBhNDA4MDU5
MzY1MGE2ZWM1NjhhYTYxMDY5MTdmZTk3YjM4ZjEzMzhiLi44ZThmM2FkYmY3YWFmMzhlMDhjZjY3
ZWIxNDM0YzQ3ZWM5MjY1NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0
S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlO
YW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDIsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0
S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRo
b3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBV
bmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVj
ZSBjb2RlIHNpemUuCkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
ICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAg
ICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKKyAgICAgICAgZWNtYU1vZGUgPSBK
SVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAt
NjcwLDggKzY3MCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9k
ZShieXRlY29kZSksCisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
aW5kZXggNDA5MWM0NGY3ZDcxN2ZjMmIzYTAxYjI0MTEyZWZhOGQzN2E5ZjUwNS4uNjNlYTk3MWFi
ZmUwYjA0YWM1NmM2MDNiMWUzN2JjNzIwOGYxNGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC0zNzgsNyArMzc4
LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChP
cCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENh
bGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJs
ZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBieXRlY29kZS5t
X2VjbWFNb2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJl
Z1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2Rl
KSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAK
QEAgLTQwNyw3ICs0MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNl
ID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVy
dHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUg
PSBieXRlY29kZS5tX2VjbWFNb2RlOworICAgICAgICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUo
Ynl0ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02MTYsNyArNjE2LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVh
dGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCiAg
ICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qz
LCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRp
cmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2Zs
YWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6Tm9uZSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMp
OwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCAxOGJkNmU0NTNlOGQ2MDU3MGI5M2IxMjQ3ZWI2NWI4MmVm
MjNlZTY3Li4wZThmMDk2ZmNlYWYxYmFhNDcwOWYxOTVkNjRkOGFhODkyZDhjNWEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGlj
IGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5
U2xvdCAmc2xvdCwgUHV0S2kKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2
YXRlRmllbGRTdHJpY3Q7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVs
ZFB1dCkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0OwogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdDsKICAgICB9CiAg
ICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtNTMyLDYgKzUzNiwxMCBAQCBzdGF0aWMgYXV0
byBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlT
bG90ICZzbG90LCBQdQogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlm
IChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZh
dGVGaWVsZENyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5l
UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVj
dFByaXZhdGVGaWVsZFB1dCkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0
UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRC
eUlkU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAg
LTYyNSw2ICs2MzMsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlE
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nlc3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hh
aW47CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9u
U2V0OwogICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IE5vdERpcmVjdCkgeworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQocHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRQdXQgJiYg
cHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOwogICAgICAgICAgICAgICAgICAg
ICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNoYWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3Qs
IGJhc2VDZWxsLCBudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1
cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtNjQy
LDYgKzY1MSwxMyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENvZGVCbG9jawogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0g
RGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChp
ZGVudC5pc1ByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25TZXQg
PSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xvYmFs
T2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50LmltcGwoKSk7CisgICAgICAgICAgICAgICAgICAg
IGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAg
IG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVUcmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIHBy
b3BlcnR5TmFtZSwgb2Zmc2V0LCBvbGRTdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9u
U2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0NoYWluKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFi
bGVTZXR0ZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA3MTI1YmQ0ZjUxYWY4MTViOWQ1MDY2MWViN2Ez
YzI0MWE1YWQ2MDNiLi43NTY4ZDIzNmQzYWZiNWZjMTRhNjM4NzQ1MTg3NmY4OTkyZjk0NjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUu
aCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5o
IgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDc1
OWMxMzI3MGU1OGM2NDQxYWNmMjFiMmYyZDhjNTU4ZGU5YTg1MzEuLjllZDZkNTcxMWQxYzc0Nzc0
Zjk4YTYxZTA5ZDJlZTRhZGFkYmJlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTEyMiwxNSArMTEyMiwxOCBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNF
X0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUu
bV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUu
bV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCk7CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFj
Y2VzcyA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBY2Nlc3MoKTsKICAgICBpZiAo
TElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAvLyBEZXNwaXRlIGl0cyBu
YW1lLCBKU1ZhbHVlOjppc1VJbnQzMiB3aWxsIHJldHVybiB0cnVlIG9ubHkgZm9yIHBvc2l0aXZl
IGJveGVkIGludDMyX3Q7IGFsbCB0aG9zZSB2YWx1ZXMgYXJlIHZhbGlkIGFycmF5IGluZGljZXMu
CiAgICAgICAgIEFTU0VSVChpc0luZGV4KHN1YnNjcmlwdC5hc1VJbnQzMigpKSk7CisgICAgICAg
IEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0LT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdC5hc1VJbnQzMigpLCB2YWx1ZSwgMCwg
aXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4
U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBMTElOVF9FTkQoKTsKICAgICB9CiAKICAgICBpZiAo
c3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFj
Y2Vzcyk7CiAgICAgICAgIGRvdWJsZSBzdWJzY3JpcHRBc0RvdWJsZSA9IHN1YnNjcmlwdC5hc0Rv
dWJsZSgpOwogICAgICAgICB1aW50MzJfdCBzdWJzY3JpcHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0
PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJsZSk7CiAgICAgICAgIGlmIChzdWJzY3JpcHRBc0Rv
dWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBpc0luZGV4KHN1YnNjcmlwdEFzVUludDMyKSkg
ewpAQCAtMTE0NCw5ICsxMTQ3LDE5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfdmFsX2RpcmVjdCkKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24o
KSkpCiAgICAgICAgIExMSU5UX0VORCgpOwogCisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0
ZU5hbWUoKSA9PSBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0
cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7CisgICAgICAgIGlmIChpc1ByaXZhdGVGaWVsZEFjY2Vz
cykgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJp
Y3RNb2RlKTsKKyAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxk
QWRkKCkpCisgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGds
b2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBw
cm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAg
IH0KKwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1v
ZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xv
YmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc20KaW5kZXggNTdlMzk4MmI4MzllYWY5ZWE5OGNmNDgyOTBkNjE0MjMyMDQ0YTVh
Ni4uNmUzYjQyZDhlOGM1MjU3MmEzMTczMDg0OWQxMGJhYTgzZWM5NWQ2NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20KQEAgLTE1MTksODQgKzE1MTksODkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRf
YnlfaWQsIE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAog
ZW5kKQogCittYWNybyBnZXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2xvd1Bh
dGhOYW1lLCBvc3JFeGl0UG9pbnQpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2Rl
TmFtZSUsICVvcGNvZGVTdHJ1Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKKyAgICAgICAgIG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdFBheWxv
YWQsIHNjcmF0Y2gpCisgICAgICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCisgICAgICAgICAg
ICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAg
ICBzdG9yZWkgcmVzdWx0UGF5bG9hZCwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gsIDhdCisg
ICAgICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIElu
dDMyVGFnLCByZXN1bHRQYXlsb2FkKQorICAgICAgICAgICAgZGlzcGF0Y2goKQorICAgICAgICBl
bmQKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBtYWNybyBmaW5p
c2hJbnRHZXRCeVZhbChyZXN1bHRQYXlsb2FkLCBzY3JhdGNoKQotICAgICAgICBnZXQobV9kc3Qs
IHNjcmF0Y2gpCi0gICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwgc2NyYXRj
aCwgOF0KLSAgICAgICAgc3RvcmVpIHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBz
Y3JhdGNoLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0
NSwgSW50MzJUYWcsIHJlc3VsdFBheWxvYWQpCi0gICAgICAgIGRpc3BhdGNoKCkKLSAgICBlbmQK
KyAgICAgICAgbWFjcm8gZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2Ny
YXRjaDIsIHNjcmF0Y2gzKQorICAgICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoMSkKKyAgICAg
ICAgICAgIGZkMmlpIHJlc3VsdCwgc2NyYXRjaDIsIHNjcmF0Y2gzCisgICAgICAgICAgICBzdG9y
ZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQorICAgICAgICAgICAgc3Rv
cmVpIHNjcmF0Y2gyLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2NyYXRjaDEsIDhdCisgICAgICAgICAg
ICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHNjcmF0Y2gzLCBz
Y3JhdGNoMikKKyAgICAgICAgICAgIGRpc3BhdGNoKCkKKyAgICAgICAgZW5kCiAKLSAgICBtYWNy
byBmaW5pc2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2NyYXRj
aDMpCi0gICAgICAgIGdldChtX2RzdCwgc2NyYXRjaDEpCi0gICAgICAgIGZkMmlpIHJlc3VsdCwg
c2NyYXRjaDIsIHNjcmF0Y2gzCi0gICAgICAgIHN0b3JlaSBzY3JhdGNoMywgVGFnT2Zmc2V0W2Nm
ciwgc2NyYXRjaDEsIDhdCi0gICAgICAgIHN0b3JlaSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtj
ZnIsIHNjcmF0Y2gxLCA4XQotICAgICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9m
aWxlLCB0NSwgc2NyYXRjaDMsIHNjcmF0Y2gyKQorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCisg
ICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbW92
ZSB0MCwgdDIKKyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykK
KyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDMsIEludDMyVGFn
LCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgICAgICBsb2FkcCBKU09iamVjdDo6bV9idXR0ZXJm
bHlbdDBdLCB0MworICAgICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBi
aWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cworICAgICAgICBiaW5l
cSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5v
cEdldEJ5VmFsSXNDb250aWd1b3VzOgorICAgICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGlu
Z0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9w
R2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAg
ICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgICAgIGptcCAub3BH
ZXRCeVZhbERvbmUKKworICAgIC5vcEdldEJ5VmFsTm90Q29udGlndW91czoKKyAgICAgICAgYmlu
ZXEgdDIsIERvdWJsZVNoYXBlLCAub3BHZXRCeVZhbE5vdERvdWJsZQorICAgICAgICBiaWFlcSB0
MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVi
bGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGxvYWRkIFt0MywgdDEsIDhd
LCBmdDAKKyAgICAgICAgYmRuZXF1biBmdDAsIGZ0MCwgLm9wR2V0QnlWYWxTbG93CisgICAgICAg
ICMgRklYTUU6IFRoaXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KKyAgICAgICAgZmQy
aWkgZnQwLCB0MSwgdDIKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgam1wIC5vcEdl
dEJ5VmFsTm90RW1wdHkKKworICAgIC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAgICAgICBzdWJp
IEFycmF5U3RvcmFnZVNoYXBlLCB0MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3Jh
Z2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgYmlh
ZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhz
LnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGxvYWRp
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisK
KyAgICAub3BHZXRCeVZhbERvbmU6CisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGJp
ZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIC5vcEdldEJ5VmFsTm90
RW1wdHk6CisgICAgICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgICAgICB2YWx1ZVByb2Zp
bGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKICAgICAgICAgZGlzcGF0
Y2goKQotICAgIGVuZAogCi0gICAgbWV0YWRhdGEodDUsIHQyKQotICAgIGdldChtX2Jhc2UsIHQy
KQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQyLCBDZWxsVGFnLCB0
MCwgLm9wR2V0QnlWYWxTbG93KQotICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9w
R2V0QnlWYWw6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLSAgICBnZXQo
bV9wcm9wZXJ0eSwgdDMpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwg
dDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQotICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X2J1dHRlcmZseVt0MF0sIHQzCi0gICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAgICBi
aWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVxIHQy
LCBDb250aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRCeVZh
bElzQ29udGlndW91czoKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93
Ci0gICAgbG9hZGkgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MywgdDEsIDhdLCB0MQotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlW
YWxOb3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxO
b3REb3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5n
SGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAg
bG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFs
U2xvdwotICAgICMgRklYTUU6IFRoaXMgY291bGQgYmUgbWFzc2l2ZWx5IG9wdGltaXplZC4KLSAg
ICBmZDJpaSBmdDAsIHQxLCB0MgotICAgIGdldChtX2RzdCwgdDApCi0gICAgam1wIC5vcEdldEJ5
VmFsTm90RW1wdHkKLQotLm9wR2V0QnlWYWxOb3REb3VibGU6Ci0gICAgc3ViaSBBcnJheVN0b3Jh
Z2VTaGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQdXRBcnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5
U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rv
ckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6
Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQotCi0ub3BHZXRCeVZhbERv
bmU6Ci0gICAgZ2V0KG1fZHN0LCB0MCkKLSAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BH
ZXRCeVZhbFNsb3cKLS5vcEdldEJ5VmFsTm90RW1wdHk6Ci0gICAgc3RvcmVpIHQyLCBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
LSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9maWxlLCB0NSwgdDIsIHQxKQotICAg
IGRpc3BhdGNoKCkKKyAgICAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9yYWdlOiAgIAorICAgICAg
ICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91
YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKIAotLm9wR2V0QnlWYWxOb3RJbmRleGVkU3Rv
cmFnZToKLSAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwg
ZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAub3BHZXRCeVZhbFNs
b3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3BhdGNo
KCkKIAotLm9wR2V0QnlWYWxTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2goKQorICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAg
ICAgb3NyRXhpdFBvaW50KHNpemUsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgZW5kKQorZW5kCiAK
LS5vc3JSZXR1cm5Qb2ludDoKK2dldEJ5VmFsT3AoZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgX2xs
aW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsLCBtYWNybyhzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlfdmFsLCBzaXplKQog
ICAgIG1ldGFkYXRhKHQyLCB0MykKICAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZhbCwgbV9wcm9m
aWxlLCB0MiwgcjEsIHIwKQogICAgIHJldHVybihyMSwgcjApCi0KIGVuZCkKIAorZ2V0QnlWYWxP
cChnZXRfYnlfdmFsX2RpcmVjdCwgT3BHZXRCeVZhbERpcmVjdCwgX3Nsb3dfcGF0aF9nZXRfYnlf
dmFsX2RpcmVjdCwgbWFjcm8oYSwgYiwgYykgZW5kKQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA2NTU5MmU4MjRkNjQwODFkMDcz
Y2I2MzIxMGFjNjYzNjg4NzdmMWQxLi5iZjEyNDQwMmM3Y2VjNjc3NGQ1NThmNzUyMWJiY2Y3NDRk
NDIzZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTU2NSw5MCArMTU2NSw5MyBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdAogCiBlbmQpCiAKK21hY3JvIGdldEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWN0LCBzbG93UGF0aE5hbWUpCisgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2Rl
TmFtZSUsICVvcGNvZGVTdHJ1Y3QlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKKyAgICAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNo
KQorICAgICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQorICAgICAgICAgICAgc3RvcmVxIHJl
c3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KKyAgICAgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2Rl
U3RydWN0JSwgbV9wcm9maWxlLCB0NSwgcmVzdWx0KQorICAgICAgICAgICAgZGlzcGF0Y2goKQor
ICAgICAgICBlbmQKIAotbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKLSAgICBt
YWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIGdldChtX2RzdCwg
c2NyYXRjaCkKLSAgICAgICAgc3RvcmVxIHJlc3VsdCwgW2Nmciwgc2NyYXRjaCwgOF0KLSAgICAg
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKLSAgICAg
ICAgZGlzcGF0Y2goKQotICAgIGVuZAorICAgICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChy
ZXN1bHQsIHNjcmF0Y2gpCisgICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCByZXN1bHQKKyAgICAg
ICAgICAgIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKKyAgICAgICAgZW5kCiAKLSAg
ICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9ycSBu
dW1iZXJUYWcsIHJlc3VsdAotICAgICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gp
Ci0gICAgZW5kCisgICAgICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2Ny
YXRjaDEsIHNjcmF0Y2gyLCB1bnVzZWQpCisgICAgICAgICAgICBmZDJxIHJlc3VsdCwgc2NyYXRj
aDEKKyAgICAgICAgICAgIHN1YnEgbnVtYmVyVGFnLCBzY3JhdGNoMQorICAgICAgICAgICAgZmlu
aXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQorICAgICAgICBlbmQKIAotICAgIG1hY3Jv
IGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCB1bnVzZWQp
Ci0gICAgICAgIGZkMnEgcmVzdWx0LCBzY3JhdGNoMQotICAgICAgICBzdWJxIG51bWJlclRhZywg
c2NyYXRjaDEKLSAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQotICAg
IGVuZAorICAgICAgICBtZXRhZGF0YSh0NSwgdDIpCiAKLSAgICBtZXRhZGF0YSh0NSwgdDIpCisg
ICAgICAgIGdldChtX2Jhc2UsIHQyKQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xvdykKIAotICAgIGdldChtX2Jhc2UsIHQyKQot
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQyLCB0MCwgLm9wR2V0QnlWYWxT
bG93KQotCi0gICAgbW92ZSB0MCwgdDIKLSAgICBhcnJheVByb2ZpbGUoT3BHZXRCeVZhbDo6TWV0
YWRhdGE6Om1fYXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQotCi0gICAgZ2V0KG1fcHJvcGVydHks
IHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCB0MywgdDEsIC5vcEdl
dEJ5VmFsU2xvdykKLSAgICBzeGkycSB0MSwgdDEKLQotICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNP
YmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIG51bWJlclRhZykKLSAgICBtb3ZlIFRhZ051bWJl
ciwgbnVtYmVyVGFnCi0KLSAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgotICAgIGJpZXEg
dDIsIEludDMyU2hhcGUsIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzCi0gICAgYmluZXEgdDIsIENv
bnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCi0KLS5vcEdldEJ5VmFsSXND
b250aWd1b3VzOgotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhp
bmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAg
ICBnZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0MgotICAgIGJ0cXogdDIs
IC5vcEdldEJ5VmFsU2xvdwotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLQotLm9wR2V0QnlWYWxO
b3RDb250aWd1b3VzOgotICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3RE
b3VibGUKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVh
ZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZ2V0
KG1fZHN0LCB0MCkKLSAgICBsb2FkZCBbdDMsIHQxLCA4XSwgZnQwCi0gICAgYmRuZXF1biBmdDAs
IGZ0MCwgLm9wR2V0QnlWYWxTbG93Ci0gICAgZmQycSBmdDAsIHQyCi0gICAgc3VicSBudW1iZXJU
YWcsIHQyCi0gICAgam1wIC5vcEdldEJ5VmFsRG9uZQotICAgIAotLm9wR2V0QnlWYWxOb3REb3Vi
bGU6Ci0gICAgc3ViaSBBcnJheVN0b3JhZ2VTaGFwZSwgdDIKLSAgICBiaWEgdDIsIFNsb3dQdXRB
cnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4
ZWRTdG9yYWdlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGlu
Z0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAg
IGdldChtX2RzdCwgdDApCi0gICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3ZlY3Rvclt0MywgdDEs
IDhdLCB0MgotICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwotCi0ub3BHZXRCeVZhbERvbmU6
Ci0gICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRCeVZh
bCwgbV9wcm9maWxlLCB0NSwgdDIpCi0gICAgZGlzcGF0Y2goKQorICAgICAgICBtb3ZlIHQwLCB0
MgorICAgICAgICBhcnJheVByb2ZpbGUoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5
UHJvZmlsZSwgdDIsIHQ1LCB0MSkKIAotLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZToKLSAg
ICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZhbCwgZmluaXNoRG91
YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQz
KQorICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCisgICAgICAgIHN4aTJxIHQxLCB0MQogCi0ub3BHZXRCeVZhbFNsb3c6Ci0g
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKLSAgICBkaXNwYXRj
aCgpCisgICAgICAgIGxvYWRDYWdlZEpTVmFsdWUoSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwg
dDMsIG51bWJlclRhZykKKyAgICAgICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwogCi0ub3Ny
UmV0dXJuUG9pbnQ6Ci0gICAgZ2V0dGVyU2V0dGVyT1NSRXhpdFJldHVyblBvaW50KG9wX2dldF9i
eV92YWwsIHNpemUpCi0gICAgbWV0YWRhdGEodDUsIHQyKQotICAgIHZhbHVlUHJvZmlsZShPcEdl
dEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByMCkKLSAgICByZXR1cm4ocjApCisgICAgICAgIGFuZGkg
SW5kZXhpbmdTaGFwZU1hc2ssIHQyCisgICAgICAgIGJpZXEgdDIsIEludDMyU2hhcGUsIC5vcEdl
dEJ5VmFsSXNDb250aWd1b3VzCisgICAgICAgIGJpbmVxIHQyLCBDb250aWd1b3VzU2hhcGUsIC5v
cEdldEJ5VmFsTm90Q29udGlndW91cworCisgICAgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXM6Cisg
ICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6
OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgZ2V0
KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZHEgW3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGJ0cXog
dDIsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBqbXAgLm9wR2V0QnlWYWxEb25lCisKKyAgICAu
b3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6CisgICAgICAgIGJpbmVxIHQyLCBEb3VibGVTaGFwZSwg
Lm9wR2V0QnlWYWxOb3REb3VibGUKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdl
dEJ5VmFsU2xvdworICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkZCBbdDMsIHQx
LCA4XSwgZnQwCisgICAgICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAg
ICAgICBmZDJxIGZ0MCwgdDIKKyAgICAgICAgc3VicSBudW1iZXJUYWcsIHQyCisgICAgICAgIGpt
cCAub3BHZXRCeVZhbERvbmUKKyAgICAgICAgCisgICAgLm9wR2V0QnlWYWxOb3REb3VibGU6Cisg
ICAgICAgIHN1YmkgQXJyYXlTdG9yYWdlU2hhcGUsIHQyCisgICAgICAgIGJpYSB0MiwgU2xvd1B1
dEFycmF5U3RvcmFnZVNoYXBlIC0gQXJyYXlTdG9yYWdlU2hhcGUsIC5vcEdldEJ5VmFsTm90SW5k
ZXhlZFN0b3JhZ2UKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJ
bmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnZlY3Rvckxlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xv
dworICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBsb2FkcSBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yW3QzLCB0MSwgOF0sIHQyCisgICAgICAgIGJ0cXogdDIsIC5vcEdldEJ5VmFsU2xvdwor
CisgICAgLm9wR2V0QnlWYWxEb25lOgorICAgICAgICBzdG9yZXEgdDIsIFtjZnIsIHQwLCA4XQor
ICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHQyKQor
ICAgICAgICBkaXNwYXRjaCgpCiAKLWVuZCkKKyAgICAub3BHZXRCeVZhbE5vdEluZGV4ZWRTdG9y
YWdlOgorICAgICAgICBnZXRCeVZhbFR5cGVkQXJyYXkodDAsIHQxLCBmaW5pc2hJbnRHZXRCeVZh
bCwgZmluaXNoRG91YmxlR2V0QnlWYWwsIC5vcEdldEJ5VmFsU2xvdykKKworICAgIC5vcEdldEJ5
VmFsU2xvdzoKKyAgICAgICAgY2FsbFNsb3dQYXRoKHNsb3dQYXRoTmFtZSkKKyAgICAgICAgZGlz
cGF0Y2goKQorCisgICAgLm9zclJldHVyblBvaW50OgorICAgICAgICBnZXR0ZXJTZXR0ZXJPU1JF
eGl0UmV0dXJuUG9pbnQob3BfJW9wY29kZU5hbWUlLCBzaXplKQorICAgICAgICBtZXRhZGF0YSh0
NSwgdDIpCisgICAgICAgIHZhbHVlUHJvZmlsZSglb3Bjb2RlU3RydWN0JSwgbV9wcm9maWxlLCB0
NSwgcjApCisgICAgICAgIHJldHVybihyMCkKKyAgICBlbmQpCitlbmQKKworZ2V0QnlWYWxPcChn
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCiAKK2dl
dEJ5VmFsT3AoZ2V0X2J5X3ZhbF9kaXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhf
Z2V0X2J5X3ZhbF9kaXJlY3QpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
U3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2Rl
TmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4
IGQ5NTU4MDhjNmEzMjhkY2UwNmRhNzNlNzUxZDYyMjM3ZGQ3N2JhNjIuLmJjZjY5ZjE2M2U0MTY2
YzY5OTkyYTIyNGZlMjYwYjBhMTI2NDg5M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3Mo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0
eSwgRG90VHlwZSB0eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAg
ICAgIGlmIChiYXNlLT5pc1N1cGVyTm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJvcGVy
dHkoKTsKICAgICAgICAgCi0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOwor
ICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFj
Y2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1
cm4gbm9kZTsKICAgICB9CkBAIC02NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG5vZGUtPmlzQXNzaWdubWVudExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBpc1By
aXZhdGVMb2NhdGlvbihjb25zdCBFeHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG5vZGUtPmlzUHJpdmF0ZUxvY2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09iamVj
dExpdGVyYWwoY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBu
b2RlLT5pc09iamVjdExpdGVyYWwoKTsKQEAgLTE0MzgsMTUgKzE0NDMsMTUgQEAgRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24KICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERv
dEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUgPSBu
dWxscHRyOwogICAgIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmll
cigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUo
KSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmNhbGxQcml2YXRlTmFtZSgpKSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlk
ZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBs
eUNoaWxkRGVwdGgpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JB
cHBseUNoaWxkRGVwdGgpOwogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAo
ZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5h
cHBseVB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgY2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0
aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5
IHlldC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2Njgu
CiAgICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikK
LSAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAg
ICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCks
IGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRo
KTsKICAgICB9CiAgICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5v
ZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90
LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0K
QEAgLTE1ODcsNyArMTU5Miw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNz
aWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgRG90QWNj
ZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwogCiAg
ICAgaWYgKG9wID09IE9wZXJhdG9yOjpFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgQXNzaWduRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVu
ZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9j
YXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4cHIs
IGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAogICAgIGlm
IChvcCA9PSBPcGVyYXRvcjo6Q29hbGVzY2VFcSB8fCBvcCA9PSBPcGVyYXRvcjo6T3JFcSB8fCBv
cCA9PSBPcGVyYXRvcjo6QW5kRXEpIHsKICAgICAgICAgYXV0byogbm9kZSA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2
b3QsIHN0YXJ0LCBlbmQpOwpAQCAtMTU5NSw3ICsxNjAwLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHIKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5v
ZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdu
bWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIG9wLCBleHByLCBleHBySGFzQXNz
aWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9u
SW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBu
b2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA5YWEyNjcz
MDMzMGQ2NTM4ZjQ4YjBjMDE1MzZiN2MyMzIxNTI3NWM1Li5mNmIzNjkyZDYwMmFmZDQyMWUzMmRm
Y2RjMTExZDhmYWNiNGI3NmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cApAQCAtOTUwLDEwICs5NTAsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAg
ICAgIHJldHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/
IElERU5UIDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29sIGlzUHJp
dmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsK
KworICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBp
c0J1aWx0aW5OYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b247CiAgICAgYm9vbCBpc1dlbGxLbm93blN5bWJvbCA9IGZhbHNlOwotICAgIGlmIChpc1ByaXZh
dGVOYW1lKSB7CisgICAgaWYgKGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKG1fcGFy
c2luZ0J1aWx0aW5GdW5jdGlvbik7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmIChtX2N1
cnJlbnQgPT0gJ0AnKSB7CkBAIC05NjEsOCArOTYyLDEyIEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+
OjpwCiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAg
Y29uc3QgTENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKworICAg
IGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgQVNTRVJUKGlzSWRl
bnRTdGFydChtX2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNJ
ZGVudFBhcnQobV9jdXJyZW50KSkKICAgICAgICAgc2hpZnQoKTsKQEAgLTk3NCw3ICs5NzksOCBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgIAogICAgIGlmIChzaG91bGRDcmVhdGVJZGVu
dGlmaWVyIHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRp
Zmllckxlbmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKLSAgICAg
ICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc1ByaXZhdGVOYW1lKSB7CisgICAg
ICAgIGlkZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVu
Z3RoKTsKKyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc0J1aWx0aW5O
YW1lKSB7CiAgICAgICAgICAgICBpZiAoaXNXZWxsS25vd25TeW1ib2wpCiAgICAgICAgICAgICAg
ICAgaWRlbnQgPSAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woaWRlbnRpZmllclN0YXJ0
LCBpZGVudGlmaWVyTGVuZ3RoKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC05OTYsMjAgKzEwMDIs
MjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElO
RSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5E
YXRhLT5pZGVudCA9IG51bGxwdHI7CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1h
eFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVS
ZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAgICBhdXRvIGlkZW50VHlwZSA9
IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5UOworICAgIGlmIChVTkxJS0VMWSgo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVy
RmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAg
ICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVu
dHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAgICAgICAgICAgIEFTU0VSVCgo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFlbnRyeSk7CiAgICAgICAgICAgICBpZiAo
IWVudHJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0aWNf
Y2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDog
SURFTlQ7CisgICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkg
fHwgc3RyaWN0TW9kZSA/IHRva2VuIDogaWRlbnRUeXBlOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBJREVOVDsKKyAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9CiAKLSAgICByZXR1
cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAogdGVtcGxhdGUgPD4KQEAgLTEw
MjYsNyArMTAzMywxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICB9CiAgICAg
fQogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKICAgICBjb25z
dCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworCisgICAgaWYg
KGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAgICBVQ2hhciBvckFsbENoYXJz
ID0gMDsKICAgICBBU1NFUlQoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFN0YXJ0KG1fY3VycmVudCkg
fHwgVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAg
ICB3aGlsZSAoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFBhcnQobV9jdXJyZW50KSkgewpAQCAtMTA1
MCw2ICsxMDYyLDkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAgICAgCisgICAgaWYgKGlzUHJpdmF0ZU5h
bWUpCisgICAgICAgIHJldHVybiBQUklWQVRFTkFNRTsKKwogICAgIGlmIChVTkxJS0VMWSgocmVt
YWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxh
Z3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewpA
QCAtMTA3NCw2ICsxMDg5LDE0IEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+Ojpw
YXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgQVNTRVJU
KG1fYnVmZmVyMTYuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIXRva2VuRGF0YS0+ZXNjYXBlZCk7
CiAKKyAgICBhdXRvIGlkZW50Q2hhcnNTdGFydCA9IGlkZW50aWZpZXJTdGFydDsKKyAgICBib29s
IGlzUHJpdmF0ZU5hbWUgPSAqaWRlbnRpZmllclN0YXJ0ID09ICcjJzsKKyAgICBpZiAoaXNQcml2
YXRlTmFtZSkKKyAgICAgICAgKytpZGVudENoYXJzU3RhcnQ7CisKKyAgICBKU1Rva2VuVHlwZSBp
ZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBBU1NF
UlQoIWlzUHJpdmF0ZU5hbWUgfHwgaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIo
KSk7CisKICAgICBhdXRvIGZpbGxCdWZmZXIgPSBbJl0gKGJvb2wgaXNTdGFydCA9IGZhbHNlKSB7
CiAgICAgICAgIC8vIFx1WFhYWCB1bmljb2RlIGNoYXJhY3RlcnMgb3IgU3Vycm9nYXRlIHBhaXJz
LgogICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSkKQEAg
LTEwOTMsNyArMTExNiw3IEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJz
ZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgICAgICBp
ZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICByZWNvcmRVbmljb2Rl
Q29kZVBvaW50KGNoYXJhY3Rlci52YWx1ZSgpKTsKICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFy
dCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKLSAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAg
ICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoVTE2
X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpKTsKQEAgLTExMDksMTAgKzExMzIsMTAgQEAgSlNUb2tl
blR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9r
ZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgc2hpZnQoKTsKICAg
ICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwotICAgICAgICByZXR1
cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfTsKIAotICAgIEpTVG9r
ZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50aWZpZXJTdGFydCA9PSBjdXJyZW50U291cmNl
UHRyKCkpOworICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50Q2hhcnNTdGFy
dCA9PSBjdXJyZW50U291cmNlUHRyKCkpOwogICAgIGlmIChVTkxJS0VMWSh0eXBlICYgRXJyb3JU
b2tlbkZsYWcpKQogICAgICAgICByZXR1cm4gdHlwZTsKIApAQCAtMTE0NSwxMyArMTE2OCwxMyBA
QCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nh
c2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFp
blRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICBy
ZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBKU1Rv
a2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1
ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmlj
dE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gVU5FWFBFQ1RFRF9FU0NBUEVfRVJST1JUT0s7CiAg
ICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFjdGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dD
YXNlKExDaGFyIGNoYXJhY3RlcikKQEAgLTI0NzgsMTQgKzI1MDEsMjEgQEAgc3RhcnQ6CiAgICAg
ICAgIG1faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbiA9IHRydWU7CiAgICAgICAgIG1fbGlu
ZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0OwotICAgIGNhc2UgQ2hhcmFjdGVy
SGFzaDoKKyAgICBjYXNlIENoYXJhY3Rlckhhc2g6IHsKICAgICAgICAgLy8gSGFzaGJhbmcgaXMg
b25seSBwZXJtaXR0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzb3VyY2UgdGV4dC4KLSAgICAgICAg
aWYgKHBlZWsoMSkgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKKyAgICAgICAgYXV0byBu
ZXh0ID0gcGVlaygxKTsKKyAgICAgICAgaWYgKG5leHQgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0
KCkpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAg
ICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwogICAgICAgICB9CisgICAgICAgIC8vIE90
aGVyd2lzZSwgaXQgY291bGQgYmUgYSB2YWxpZCBQcml2YXRlTmFtZS4KKyAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpICYmIChpc1NpbmdsZUNoYXJhY3RlcklkZW50
U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkgeworICAgICAgICAgICAgbGV4ZXJGbGFncy5y
ZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5d29yZHMpOworICAgICAgICAgICAgZ290byBw
YXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKKyAg
ICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgogICAgICAgICBp
ZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAgICAgZ290byBwYXJzZUlkZW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApp
bmRleCAyY2VlYzM4YjY2ZWU2MTYwOTljYzIzOWIzMTc2NTIzZDcxYmUwMTAwLi4wZGNlNjcxMjZk
ODVkNjViYjZkMWNkNzQ1MDE5YjYyMWQ3YjdmNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMzI3LDEwICszMjcsMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6
OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgaW5saW5lIEJhc2VE
b3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkK
ICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAg
IHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUpCisgICAgICAgIDogQmFzZURvdE5v
ZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00
MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9u
LCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0g
ICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAg
ICAgfQpAQCAtNDM3LDE0ICs0NDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFz
ZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFz
ZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAg
ICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlw
ZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1
bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9
CkBAIC03NzIsMjEgKzc3NiwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlw
ZSkKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25t
ZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVh
ZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
T3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJl
YWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBPcGVy
YXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VE
b3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVT
dWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwg
bV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0
KHJpZ2h0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgLCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAKaW5kZXggOWQxY2ZhNGYxNzYxMzAyYTMzYmJhZTMxZWY2MGZkZmNhZjIwN2Rm
NS4uMTFiZjRhNjg0YTFiZDlhMDkzZWI4ZWIxNmUxZTEzNzI2NjIwZDM5MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIFByb3Bl
cnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1lZFByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIm
IHByb3BOYW1lKQogYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2Nv
cGVGb3JDbGFzcyhQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQogewogICAgIHdoaWxlIChsaXN0KSB7
Ci0gICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCisgICAg
ICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgfHwgbGlzdC0+bV9u
b2RlLT5pc1ByaXZhdGUoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBsaXN0
ID0gbGlzdC0+bV9uZXh0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApp
bmRleCA3NGViY2FlNWIwYmY2NGFlNzc5MmQ3ODk3MWExODBiODg2OGE2MDIxLi5kN2YzMDdlODBl
ZmQ1ZjNhMGVmNjEzZWY3Yzg0MzFiZThlODVjNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnN0YW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlTG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25t
ZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBpc0xvY2F0aW9uKCk7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25SZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CkBAIC03MTksNyArNzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBD
bGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcg
fTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVl
YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3Rh
bnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9
IDE2LCBTcHJlYWQgPSAzMiB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3Rh
bnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9
IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CiAgICAgICAgIGVudW0gUHV0VHlwZSA6
IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVjdCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9k
ZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBl
ckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03MzgsNiArNzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFz
c1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc0lu
c3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5
KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5C
eUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0K
KyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiBQcml2YXRl
OyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHBy
ZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJl
dHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lk
IHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRl
ID0gdHJ1ZTsgfQpAQCAtNzQ4LDcgKzc1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBj
b25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJl
c3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWdu
ZWQgbV90eXBlIDogNjsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNzsKICAgICAgICAgdW5z
aWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0VHlw
ZSA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0
IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKQEAgLTc3Niw2ICs3NzgsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qKTsK
IAorICAgICAgICB2b2lkIGVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBzY29wZSk7CisKICAgICBwcml2YXRlOgogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0ID0gbnVsbHB0cikgb3ZlcnJpZGUKICAgICAgICAgewpAQCAtODIwLDkgKzgyNCwz
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgZW51
bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUgfTsKKyAgICBjbGFzcyBCYXNlRG90
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEb3RB
Y2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBl
KTsKKworICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudDsgfQorICAgICAgICBEb3RUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdl
dFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0
UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Jhc2U7CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CisgICAg
ICAgIERvdFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUg
ZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CisgICAgcHVibGljOgorICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBl
KTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudDsgfQpAQCAtODMxLDEwICs4NTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0K
ICAgICAgICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CiAKICAgICBjbGFzcyBTcHJlYWRFeHByZXNz
aW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKQEAgLTk0Nyw5ICs5NzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBG
dW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBw
dWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRz
Tm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CkBAIC05NTcsOCArOTgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1f
YXJnczsKICAgICB9OwogCkBAIC05OTUsNyArMTAxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25D
YWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5u
ZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKQEAgLTEwMDQsNyArMTAyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNz
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3RO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOworICAgICAgICBBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9z
dENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CkBA
IC0xNDY3LDI4ICsxNDg4LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fcmln
aHRIYXNBc3NpZ25tZW50cyA6IDE7CiAgICAgfTsKIAotICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUg
ZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CisgICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAg
ICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBt
X2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgYm9vbCBt
X3JpZ2h0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlEb3RO
b2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEgeworICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGlj
IEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgRG90VHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9yaWdodDsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsK
ICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwpAQCAtMjI4NSw3ICsyMzAy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNz
IFR5cGUgeyBOYW1lLCBDb21wdXRlZE5hbWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsg
TmFtZSwgUHJpdmF0ZU5hbWUsIENvbXB1dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25O
b2RlKiwgVHlwZSk7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IDc2NmEyYjNlYTY3MTU3ZjdmNDI1YWYzYTFlNzllZmFlMDQzNDgwNWQu
LjQ4ZjQwNDJmMjkwZGU2YzUxZjI0NjcwM2M2MTZiMjM0NTQ5NzdkZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTgyNiw2ICs4MjYsOCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVZhcmlhYmxlRGVjbAogICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAg
ZGVjbGFyYXRpb25zKys7CiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKwor
ICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2
YXRlIG5hbWUgdG8gZGVjbGFyZSBhIHZhcmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJ
ZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVj
bGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFy
YXRpb25UeXBlID09IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAg
ICAgICAgICAgICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBM
ZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTEyODgsNiArMTI5MCw4IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZURlCiAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVz
dHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJp
YWJsZUtpbmROYW1lKGtpbmQpKTsKKyAgICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0dXJp
bmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWlsSWZU
cnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAi
LCBkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAgICAg
ICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScg
aW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNo
KExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwg
a2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1
c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIp
OwpAQCAtMjk1Myw2ICsyOTU3LDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElm
RmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5hbWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVy
dHkgbmFtZSIpOwogICAgICAgICAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNL
RVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJUKE9w
dGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4gdG9r
ZW4gPSBtX3Rva2VuOworICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsK
KyAgICAgICAgICAgIGZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAi
U3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fubm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAgIGZh
aWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9k
IHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAg
ICAgICAgbmV4dCgpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVO
UEFSRU4sIHRva2VuKSwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5h
bWUiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJl
UHJpdmF0ZU5hbWUoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRl
RGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAg
ICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJv
cGVydHlOb2RlOjpQcml2YXRlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9r
ZW5GbGFnKQogICAgICAgICAgICAgICAgIGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk2OCw4ICsy
OTg1LDEwIEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHks
ICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25z
Ojp1c2VQdWJsaWNDbGFzc0ZpZWxkcygpICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBD
bGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGUpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVy
KTsKLSAgICAgICAgICAgIGlmIChpZGVudCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewogICAg
ICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5j
b25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3Rv
ciciKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3Bl
cnR5TmFtZXMuY29uc3RydWN0b3JQcml2YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2YXRl
IGNsYXNzIGZpZWxkIG5hbWVkICcjY29uc3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChjb21wdXRlZFByb3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAgIGlk
ZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlm
aWVyKG1fdm0sIG51bUNvbXB1dGVkRmllbGRzKyspOwpAQCAtMzAzMyw2ICszMDUyLDEwIEBAIHBh
cnNlTWV0aG9kOgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNl
dCAtIDE7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5n
ICd9JyBhZnRlciBhIGNsYXNzIGJvZHkiKTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRl
Q2xhc3NGaWVsZHMoKSkgeworICAgICAgICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQg
cHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQgYW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBu
YW1lcy4KKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVO
YW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUg
bmFtZXMiKTsKKyAgICB9CiAgICAgYXV0byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0
ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5mbywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52
aXJvbm1lbnQoKSwgY29uc3RydWN0b3IsIHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAg
ICBwb3BTY29wZShjbGFzc1Njb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KTsKICAgICByZXR1cm4gY2xhc3NFeHByZXNzaW9uOwpAQCAtMzA1Niw2ICszMDc5LDkgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9w
ZXJ0eU5hbWUgPSAwOwogICAgICAgICBEZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmlu
ZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsKICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkg
eworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZp
ZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAg
ICAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5
d29yZDoKQEAgLTMwOTUsNiArMzEyMSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAg
ICAgIGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZp
bmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBk
ZWZpbmVGaWVsZCA9IGNvbnRleHQuY3JlYXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRl
bnQsIGluaXRpYWxpemVyLCB0eXBlKTsKICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQo
c291cmNlRWxlbWVudHMsIGRlZmluZUZpZWxkKTsKICAgICB9CkBAIC00Nzk4LDYgKzQ4MjcsMjIg
QEAgc3RhdGljIGlubGluZSB2b2lkIHJlY29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSos
IFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUgUGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KK2Jvb2wgUGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50KQoreworICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9u
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKGF1dG8gbWF5YmVDdXJyZW50ID0g
ZmluZFByaXZhdGVOYW1lU2NvcGUoKSkgeworICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gbWF5
YmVDdXJyZW50LnZhbHVlKCk7CisgICAgICAgIGlmICghY3VycmVudC0+aGFzUHJpdmF0ZU5hbWUo
KmlkZW50KSkKKyAgICAgICAgICAgIGN1cnJlbnQtPnVzZVByaXZhdGVOYW1lKCppZGVudCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKQEAgLTQ5OTksOCArNTA0NCwyMSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubm9uVHJpdmlhbEV4
cHJlc3Npb25Db3VudCsrOwogICAgICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGV4cHJlc3Np
b25FbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIG5leHRFeHBl
Y3RJZGVudGlmaWVyKFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3JkcyB8IExleGVyRmxhZ3M6
Oklnbm9yZVJlc2VydmVkV29yZHMpOworICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICAgICAgYXV0byB0eXBl
ID0gRG90VHlwZTo6TmFtZTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2goUFJJVkFURU5BTUUp
KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CisgICAgICAgICAgICAgICAg
ICAgIGZhaWxJZlRydWUoYmFzZUlzU3VwZXIsICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbmFtZXMg
ZnJvbSBzdXBlciIpOworICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFNj
b3BlKCktPmV2YWxDb250ZXh0VHlwZSgpID09IEV2YWxDb250ZXh0VHlwZTo6SW5zdGFuY2VGaWVs
ZEV2YWxDb250ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFs
c2UoY3VycmVudFNjb3BlKCktPmhhc1ByaXZhdGVOYW1lKCppZGVudCksICJDYW5ub3QgcmVmZXJl
bmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBmaWVsZCAnIiwgaWRlbnQtPmltcGwoKSwgIiciKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZSh1c2VQcml2YXRlTmFtZShpZGVu
dCksICJDYW5ub3QgcmVmZXJlbmNlIHByaXZhdGUgbmFtZXMgb3V0c2lkZSBvZiBjbGFzcyIpOwor
ICAgICAgICAgICAgICAgICAgICBtX3BhcnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZSA9IGlkZW50
OworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQs
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IERvdFR5cGU6OlByaXZhdGVOYW1l
OworICAgICAgICAgICAgICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IElERU5UOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEg
cHJvcGVydHkgbmFtZSBhZnRlciAiLCBvcHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICInLici
KTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3RhcnRM
b2NhdGlvbiwgYmFzZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwgZXhw
cmVzc2lvbkVuZCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0g
Y29udGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3RhcnRMb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUs
IGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYmFzZUlzU3VwZXIgJiYgY3VycmVudFNjb3BlKCkt
PmlzQXJyb3dGdW5jdGlvbigpKSkKICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9u
U2NvcGUoKS0+c2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlc1N1cGVyUHJvcGVydHkoKTsKICAgICAg
ICAgICAgICAgICBuZXh0KCk7CkBAIC01MTk1LDYgKzUyNTMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5
RXhwcmVzcwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CiAg
ICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QoY29udGV4dC5pc1Jlc29sdmUoZXhwciksICJD
YW5ub3QgZGVsZXRlIHVucXVhbGlmaWVkIHByb3BlcnR5ICciLCBtX3BhcnNlclN0YXRlLmxhc3RJ
ZGVudGlmaWVyLT5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CisgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoY29udGV4dC5pc1ByaXZhdGVMb2NhdGlvbihleHByKSwgIkNhbm5vdCBk
ZWxldGUgcHJpdmF0ZSBmaWVsZCAiLCBtX3BhcnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZS0+aW1w
bCgpKTsKICAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKGxvY2F0aW9u
LCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgp
LCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTUy
NzEsNyArNTMzMCwxMSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNl
cjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgSU5WQUxJ
RF9QUklWQVRFX05BTUVfRVJST1JUT0s6CiAgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2
YXRlIG5hbWUgJyIsIGdldFRva2VuKCksICInIik7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIAorCisgICAgY2FzZSBQUklWQVRFTkFNRToKKyAgICAgICAgb3V0LnByaW50KCJVbmV4cGVj
dGVkIHByaXZhdGUgbmFtZSAiLCBnZXRUb2tlbigpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAg
Y2FzZSBBV0FJVDoKICAgICBjYXNlIElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0
ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCmluZGV4IDE2OGI2ZmY3ZWY4ZWNlZjVmZDMyYzcxNTgyZjBiMDRmNzY5ZGIx
Y2YuLmZlY2NhYTI5NjNlY2FkOTllOGFmYTdkMjViZjg0OTUwMzYwYWVlZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzR2VuZXJhdG9yQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9y
Qm91bmRhcnk7IH0KICAgICBib29sIGlzQXN5bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBc3luY0Z1bmN0aW9uOyB9CiAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJp
dmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc1Njb3BlOyB9CiAgICAgYm9v
bCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAg
Ym9vbCBoYXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAt
MzA5LDYgKzMxMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0
aW9ucyA9IHRydWU7CiAgICAgfQogCisgICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQor
ICAgIHsKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgaXNQcml2YXRlTmFtZVNjb3BlIGlz
IGFuIGFsaWFzIGZvciBpc0NsYXNzU2NvcGUgLS0tIFRoaXMgaXMgcG90ZW50aWFsbHkgbWlzbGVh
ZGluZywKKyAgICAgICAgLy8gcGFydGljdWxhcmx5IHdoZW4gcGFyc2luZyBkaXJlY3QgZXZhbCBj
b2RlIHdoaWNoIG9jY3VycyB3aXRoaW4gYSBjbGFzcy4KKyAgICAgICAgc2V0SXNDbGFzc1Njb3Bl
KCk7CisgICAgfQorCiAgICAgdm9pZCBzZXRJc0NsYXNzU2NvcGUoKQogICAgIHsKICAgICAgICAg
bV9pc0NsYXNzU2NvcGUgPSB0cnVlOwpAQCAtNDc1LDcgKzQ4Myw0NCBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmdldCgp
KTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQ
cml2YXRlTmFtZShpZGVudCk7CisgICAgfQorCisgICAgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZh
dGVOYW1lc1RvKFNjb3BlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxl
cy5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKG90aGVyLm1fbGV4aWNhbFZhcmlhYmxlcyk7
CisgICAgfQorCisgICAgYm9vbCBoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lc1Np
emUoKSA+IDApIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IG1fbGV4aWNhbFZhcmlh
Ymxlcy5wcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5p
c1VzZWQoKSAmJiAhZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlv
bnMpOworICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRlbnQpOwor
ICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhp
Y2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9
IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xl
eGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNEZWNsYXJlZFBhcmFtZXRlcihj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBoYXNEZWNsYXJl
ZFBhcmFtZXRlcihpZGVudC5pbXBsKCkpOwpAQCAtOTEwLDcgKzk1NSw3IEBAIHB1YmxpYzoKICAg
ICB+UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlm
aWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25z
dCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3Vy
Y2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3Ry
dWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqID0gbnVsbHB0ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBu
dWxscHRyKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0K
ICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJl
dHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC0xMTgzLDYgKzEyMjgsNDQg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwog
ICAgIH0KIAorICAgIE9wdGlvbmFsPFNjb3BlUmVmPiBwcml2YXRlTmFtZVNjb3BlKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAgdW5zaWduZWQg
aSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29w
ZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAg
ICAgIGlmIChtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAgICAgICAg
ICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBTY29wZVJlZiBleHBlY3RQcml2YXRlTmFtZVNjb3Bl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAg
dW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICB3aGlsZSAoaSAm
JiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0t
OworCisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkp
OworICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisgICAgfQorCisg
ICAgYm9vbCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpCisgICAgewor
ICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gZXhwZWN0UHJpdmF0ZU5hbWVTY29wZSgpOworICAg
ICAgICB1bnNpZ25lZCBpID0gY3VycmVudC5pbmRleCgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkg
JiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGkt
LTsKKworICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICByZXR1cm4gIWN1cnJlbnQtPmhhc1Vz
ZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCk7CisKKyAgICAgICAgY3VycmVudC0+Y29weVVu
ZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhtX3Njb3BlU3RhY2tbaV0pOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICBTY29wZVJlZiBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlv
bk5vbkxleGljYWxTY29wZSgpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0
YWNrLnNpemUoKSAtIDE7CkBAIC0xNDYyLDYgKzE1NDUsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hBbmRVcGRhdGUoSlNUb2tlblR5cGUgZXhwZWN0ZWQsIGNv
bnN0IEpTVG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgaWYgKG1hdGNoKGV4cGVjdGVkKSkg
eworICAgICAgICAgICAgbV90b2tlbiA9IHRva2VuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBtYXRjaENvbnRleHR1YWxLZXl3b3JkKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiAgICAgewpAQCAtMTcxNSw2ICsxODA4LDggQEAgcHJpdmF0ZToKIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxl
QXNzaWdubWVudFRhcmdldChUcmVlQnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAorICAgIEFM
V0FZU19JTkxJTkUgYm9vbCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyKik7CisKICAg
ICBBTFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBi
b29sIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgCkBAIC0xODA5LDYgKzE5MDQsNyBA
QCBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblBhcnNlUGhhc2UgZnVuY3Rpb25QYXJzZVBoYXNl
IHsgRnVuY3Rpb25QYXJzZVBoYXNlOjpCb2R5IH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGxhc3RJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBs
YXN0RnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBs
YXN0UHJpdmF0ZU5hbWUgeyBudWxscHRyIH07CiAgICAgICAgIGJvb2wgYWxsb3dBd2FpdCB7IHRy
dWUgfTsKICAgICAgICAgYm9vbCBpc1BhcnNpbmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgeyBmYWxz
ZSB9OwogICAgIH07CkBAIC0xOTU5LDcgKzIwNTUsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9y
JiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVu
Y3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVjdG9yPEpTVGV4
dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJz
ZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25z
dCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJz
aW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVs
ZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwpAQCAt
MTk3NCw2ICsyMDcwLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgQVNTRVJUKG1f
c291cmNlLT5zdGFydENvbHVtbigpID4gT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSk7CiAg
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKS56ZXJvQmFz
ZWRJbnQoKTsKIAorICAgIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgJiYgdmFyaWFibGVz
VW5kZXJURFogJiYgdmFyaWFibGVzVW5kZXJURFotPnByaXZhdGVOYW1lc1NpemUoKSkgeworICAg
ICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SXNQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHZh
cmlhYmxlc1VuZGVyVERaLT5jb3B5UHJpdmF0ZU5hbWVzVG8oY3VycmVudFNjb3BlKCktPmxleGlj
YWxWYXJpYWJsZXMoKSk7CisgICAgfQorCiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5u
ZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1
Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAg
ICBpbnQgbGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKQEAgLTIwNTgsNiArMjE1
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAog
ICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwK
KyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxw
dHIsCiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0
aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxz
ZSkKIHsKQEAgLTIwNzAsNyArMjE3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAgICAgICAgUGFyc2VyPExl
eGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJz
ZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9k
ZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFy
c2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0
LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9k
ZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdU
Rjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwog
ICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0
aW4pIHsKQEAgLTIwODMsNyArMjE4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3VsZCBhbHdh
eXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBh
cnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFy
c2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1
bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZh
bENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
KTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1l
LCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpF
dmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVs
ZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihl
cnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5n
Q29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZh
cmlhYmxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGUwZWJlYWY4
NWZkNzEyMzcxN2Y4NzcxMTI3ZjcxOTIzZmZlNjc0OC4uN2IzYzFlYzNiN2Y2YTZiMTFiZmM0NWY0
YmM5MWQwNDgxMmY0Y2QyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9V
QkxFLAogICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJ
TkcsCiAgICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBmOWJiMDdiNGRkNDA4OWM3YjFlM2EwZjNmNTk1
NDFiMzE3YTUyZDdmLi5lOWI2ZDdlOTQ2NzQ0ZTFhMDhkYzFjYzI4YTQ2YjcxMzc3M2M5ODRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIs
IEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAg
ICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFs
RXhwciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0
RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQ
cmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAor
ICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHBy
LCBPcHRpb25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHBy
LCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlM
aXRlcmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAg
IEFycmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNS
ZXN1bHQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpIHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tl
dEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lv
blR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
RG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUg
dHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFt
ZSA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJu
LCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZ
YXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6
IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhw
cjsgfQpAQCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24o
RXhwcmVzc2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29s
dmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAg
ICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9
PSBQcml2YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJv
b2wgaXNQcml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3Np
Z25tZW50TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFj
N2I2Y2IzMTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdk
NDc3NDA2OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9w
ZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9
IG90aGVyLm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZl
cnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIu
bV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJs
ZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAq
dGhpczsKK30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1
cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
CiB7CiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgw
LDYgKzkwLDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJv
bm1lbnQmIG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1f
cmFyZURhdGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmly
b25tZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52
aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1
cmVkKCkpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJp
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBw
YWlyIDogZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgp
LCBwYWlyLnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVm
ZGJlYTE5OTJjNTIuLjE3N2Y4ODE1YmMzYTM3ZTRlYWQ2YmQ2MDFhY2NmNGZhYzAxM2YyMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9JdGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJh
bWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1By
aXZhdGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsg
bV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25z
dCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlv
bjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9
IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRh
dGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRz
IHw9IElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFy
KCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9
IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5
TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwK
ICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUg
QEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRz
PFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgewor
cHVibGljOgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2Jp
dHMgPSB0cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNs
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0K
KworICAgIHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVu
dW0gVHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAg
IElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBt
X2JpdHMgeyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBI
YXNoVHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsK
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eUhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJh
aXRzPiBQcml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0g
ZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBv
dGhlcikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRv
cj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVu
dmlyb25tZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7Cisg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFy
aWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIu
bV9tYXApKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJl
RGF0YSkpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAg
ICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJl
ZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlx
dWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51
bGxwdHIpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0o
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBN
YXA6Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAt
OTksNyArMTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkp
OyB9Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZp
ZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmll
cik7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50
aWZpZXIpOyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVy
eXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisg
ICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5h
bWVzOjppdGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xh
cmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNs
YXJlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJp
dmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNs
YXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
cikKKyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50
aWZpZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0
byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJ
c1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50
cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIs
IGVudHJ5KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9
IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0
SXNVc2VkKCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZp
bmQoaWRlbnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgewor
ICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHBy
ZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJU
KHByaXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFu
Z2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJp
dmF0ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICgh
bV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lc1RvKFZhcmlhYmxl
RW52aXJvbm1lbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRh
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW90aGVyLm1fcmFyZURhdGEpCisg
ICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6ZSgpID4g
MCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIShlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiBlbnRyeS52YWx1ZS5p
c0RlY2xhcmVkKCkpKQorICAgICAgICAgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQ
cml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgeworICAgICAg
ICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2
YXRlTmFtZXMgZnJvbSBhbgorICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50
IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKKyAgICAgICAgLy8gZWFy
bGllciBpbiB0aGUgc291cmNlIGNvZGUgdGhhbiBpdCBpcyBkZWZpbmVkLgorICAgICAgICBpZiAo
cHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDog
cHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2Vk
KCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0
ZXIuZ2V0T3JBZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpLnNldElzVXNlZCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFJhcmVEYXRhIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFJhcmVEYXRh
KCkgeyB9CisgICAgICAgIFJhcmVEYXRhKFJhcmVEYXRhJiYgb3RoZXIpCisgICAgICAgICAgICA6
IG1fcHJpdmF0ZU5hbWVzKFdURk1vdmUob3RoZXIubV9wcml2YXRlTmFtZXMpKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7
CisgICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7
CisgICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICB9OworCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50OwogCiAgICAgTWFw
IG1fbWFwOwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCB7IGZhbHNlIH07CisKKyAg
ICBQcml2YXRlTmFtZUVudHJ5JiBnZXRPckFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbXBsKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9y
YXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4o
KTsKKworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGltcGws
IFByaXZhdGVOYW1lRW50cnkoMCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICB9CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9
OwogCiBjbGFzcyBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggMWY5Zjk0YTRkYjY1M2RlNjBj
ZjYzMWIwYjQyYjMwNTdlOGYwYmZiZC4uYTNjN2I0YmVlNTkyYzIzMTZiOTk5MDE5MDAwNDBlNzA1
MTZhYTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmNwcApAQCAtODU3LDYgKzg1NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGVuY29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQorCisgICAgU291cmNlVHlw
ZTxUPiogZGVjb2RlQXNQdHIoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gdGhpcy0+
dGVtcGxhdGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKTsKKyAgICB9CiB9OwogCiBjbGFz
cyBDYWNoZWRTaW1wbGVKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlPiB7CkBAIC0xMDA0LDIzICsxMDEwLDQ1IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiB9OwogCitjbGFzcyBDYWNo
ZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVE
YXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVE
YXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0Cisg
ICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9w
cml2YXRlTmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6
UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVu
dmlyb25tZW50PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KQogICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZCA9IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21h
cC5lbmNvZGUoZW5jb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUo
ZW5jb2RlciwgZW52Lm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikgY29uc3QKICAgICB7
CiAgICAgICAgIGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZDsKICAgICAgICAgbV9tYXAuZGVjb2RlKGRlY29kZXIsIGVudi5tX21hcCk7CisgICAgICAg
IGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVudi5tX3JhcmVEYXRh
ID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICplbnYubV9yYXJlRGF0YSk7Cisg
ICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1
cmVkOwogICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJ
bXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmlu
Z0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5SGFzaFRyYWl0cz4gbV9tYXA7CisgICAgQ2FjaGVkUHRyPENhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnRSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZENvbXBhY3RWYXJp
YWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0VmFyaWFibGVFbnZp
cm9ubWVudD4gewpAQCAtMTE0OCw2ICsxMTc2LDIyIEBAIHByaXZhdGU6CiAgICAgaW50cHRyX3Qg
bV9iaXRzOwogfTsKIAorY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBD
YWNoZWRPYmplY3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+IHsKK3B1YmxpYzoK
KyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3lt
Ym9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1l
cy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAg
IHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJh
cmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRl
Y29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRl
OgorICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBs
PiwgSWRlbnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVk
U3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6
CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlKQpAQCAtMTE1OCw2ICsxMjAyLDcgQEAgcHVibGljOgogICAgICAgICBtX25lc3Rl
ZExleGljYWxTY29wZSA9IHN5bWJvbFRhYmxlLm1fbmVzdGVkTGV4aWNhbFNjb3BlOwogICAgICAg
ICBtX3Njb3BlVHlwZSA9IHN5bWJvbFRhYmxlLm1fc2NvcGVUeXBlOwogICAgICAgICBtX2FyZ3Vt
ZW50cy5lbmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9hcmd1bWVudHMuZ2V0KCkpOworICAg
ICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdl
dCgpKTsKICAgICB9CiAKICAgICBTeW1ib2xUYWJsZSogZGVjb2RlKERlY29kZXImIGRlY29kZXIp
IGNvbnN0CkBAIC0xMTcxLDYgKzEyMTYsMTEgQEAgcHVibGljOgogICAgICAgICBTY29wZWRBcmd1
bWVudHNUYWJsZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVj
b2Rlcik7CiAgICAgICAgIGlmIChzY29wZWRBcmd1bWVudHNUYWJsZSkKICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLT5tX2FyZ3VtZW50cy5zZXQoZGVjb2Rlci52bSgpLCBzeW1ib2xUYWJsZSwgc2Nv
cGVkQXJndW1lbnRzVGFibGUpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxT
eW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPmRlY29kZShkZWNvZGVyLCAqc3ltYm9sVGFibGUtPm1fcmFyZURhdGEpOworICAgICAgICB9
CisKICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KIApAQCAtMTE4MSw2ICsxMjMx
LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAg
ICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOwogICAgIENhY2hlZFB0cjxDYWNoZWRTY29wZWRB
cmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CisgICAgQ2FjaGVkUHRyPENhY2hlZFN5bWJvbFRh
YmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggOWUxNzJiNmFl
YTc0YjA2MmRlOWZmZWY4ZGE1NmQ0OTM0Zjk0ZDU1Ni4uZTcyYmQzNWYxNWI3ZjMxMmFhNGExYmUy
YzEyMmRkMWNhNzAzYzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAg
dHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3RO
b2RlIFJvb3ROb2RlOwogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZXhlY3V0
YWJsZSAmJiBleGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAg
ICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tU
eXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5
cGUsIG51bGxwdHIsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgICAg
IHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlw
ZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJURFosIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbik7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcAppbmRleCA2MmMwZDU5NTczYTZhNjM5OTA5MzlmMWNlZjk0ZDkxOWQ3ZDczYzZlLi43ZWU3
MTNjOWM0YTI1OTJmZjMzMGY2OGY1YTY2NDZlZDNlODA5YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMiw2ICsz
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkg
LCBuYW1lIyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZp
bmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1
aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5JVElBTElaRV9TWU1C
T0wobmFtZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQor
I2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZh
dGVGaWVsZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiIyIgI25hbWUpKQogCiBDb21tb25J
ZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIDogbnVsbElkZW50aWZp
ZXIoKQpAQCAtNDUsNiArNDYsNyBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmll
cnMoVk0mIHZtKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJ
QUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCisgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSU5JVElBTElaRV9QUklW
QVRFX0ZJRUxEX05BTUUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDhkYmM2ZDdhYzE4N2I3MTlkMDQ1MjY1NzAy
ODA5NjE2MjI5ZDU4ZGMuLjg1NThiYWI5MGNlNWQ4YmIzZGQxMDhlMDg0NWY4YTUyOTRmNDVmNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaApAQCAtMjA5LDYgKzIwOSw5IEBACiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNy
byh5ZWFyKQogCisjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJ
RUxEKG1hY3JvKSBcCisgICAgbWFjcm8oY29uc3RydWN0b3IpCisKICNkZWZpbmUgSlNDX0NPTU1P
Tl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhhd2FpdCkgXAog
ICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0zMjMsNiArMzI2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZ
TUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xP
QkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZ
TUJPTF9HTE9CQUwKIAorI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklF
TERfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZUZpZWxkOworICAg
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwKKwogICAgICAgICAvLyBDYWxsZXJzIG9mIHRo
aXMgbWV0aG9kIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpZGVudGlmaWVycyBnaXZlbiB0byB0aGlz
IG1ldGhvZCAKICAgICAgICAgLy8gc3Vydml2ZSB0aGUgbGlmZXRpbWUgb2YgQ29tbW9uSWRlbnRp
ZmllcnMgYW5kIHJlbGF0ZWQgVk0uCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBw
ZW5kRXh0ZXJuYWxOYW1lKGNvbnN0IElkZW50aWZpZXImIHB1YmxpY05hbWUsIGNvbnN0IElkZW50
aWZpZXImIHByaXZhdGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGI3YjgwMjBhMjAwNGRiYjI2YWQ3ZjA1NzliN2Q3
YTI5YjEzMDdkMTcuLjVmMjE5N2JhOTZjZTQ5YzFjNDUyODYxMjJkOGM3ZWU0MjE4YmM3MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMTMwNSw2ICsxMzA1LDY5IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
dmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfdmFsX2RpcmVjdCkKK3sKKyAgICBCRUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9
IHBjLT5hczxPcEdldEJ5VmFsRGlyZWN0PigpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VU
X0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBH
RVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVlKCk7CisKKyAgICBpZiAoTElLRUxZKGJh
c2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgU3Ry
dWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwor
ICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkg
eworICAgICAgICAgICAgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBleGlzdGluZ0F0b21TdHJpbmcg
PSBhc1N0cmluZyhzdWJzY3JpcHQpLT50b0V4aXN0aW5nQXRvbVN0cmluZyhnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgICAgICBpZiAoZXhpc3Rp
bmdBdG9tU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3Rp
bmdBdG9tU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJTEVE
KHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3Vi
c2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJ
bnQzMigpOworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVC
bG9jayk7CisgICAgICAgIEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxlID0gJm1ldGFkYXRhLm1f
YXJyYXlQcm9maWxlOworCisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKKyAg
ICAgICAgICAgIGlmIChhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAg
ICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpKSk7CisgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91
bmRzKCk7CisgICAgICAgIH0gZWxzZSBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAg
ICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgICAgICAg
ICAgaWYgKG9iamVjdC0+Y2FuR2V0SW5kZXhRdWlja2x5KGkpKQorICAgICAgICAgICAgICAgIFJF
VFVSTl9QUk9GSUxFRChvYmplY3QtPmdldEluZGV4UXVpY2tseShpKSk7CisKKyAgICAgICAgICAg
IGJvb2wgc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAo
b2JqZWN0LT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhDb250aWd1b3VzICYmIGkgPCBvYmpl
Y3QtPmJ1dHRlcmZseSgpLT5wdWJsaWNMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBleHBhbmQgdGhpcyB0byBBcnJheVN0b3JhZ2UsIEludDMyLCBhbmQgbWF5YmUgRG91Ymxl
OgorICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NDAKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBvYmplY3Qt
Pmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICAgICAgc2tpcE1hcmtpbmdPdXRPZkJvdW5k
cyA9IGdsb2JhbE9iamVjdC0+aXNPcmlnaW5hbEFycmF5U3RydWN0dXJlKG9iamVjdC0+c3RydWN0
dXJlKHZtKSkgJiYgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZUNoYWluSXNTYW5lKCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghc2tpcE1hcmtpbmdPdXRPZkJvdW5kcyAm
JiAhQ29tbW9uU2xvd1BhdGhzOjpjYW5BY2Nlc3NBcmd1bWVudEluZGV4UXVpY2tseSgqb2JqZWN0
LCBpKSkKKyAgICAgICAgICAgICAgICBhcnJheVByb2ZpbGUtPnNldE91dE9mQm91bmRzKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBSRVRVUk5fUFJPRklMRUQoanNVbmRlZmluZWQoKSk7CisgICAg
fQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsK
KyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRv
UHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBib29sIGZvdW5kID0gKHByb3BlcnR5LmlzUHJp
dmF0ZU5hbWUoKSkKKyAgICAgICAgPyBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmll
bGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkKKyAgICAgICAgOiBiYXNlVmFsdWUuZ2V0
T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIENIRUNL
X0VYQ0VQVElPTigpOworICAgIFJFVFVSTl9QUk9GSUxFRChmb3VuZCA/IHNsb3QuZ2V0VmFsdWUo
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkgOiBqc1VuZGVmaW5lZCgpKTsKK30KKwogU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXgg
YTgyNDhkNDUyNGEzYzVkZjA5ZGFmNjQ5NzQ2NmI5NzI1MDMzMjU2Zi4uN2MxZDgyM2FhNmExMTFj
YTM0N2FiNDFhMmEwOWExZDcxODI4ODVmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI3Miw2ICsyNzIsNyBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV92YWxfZGlyZWN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA1ZmZmNzA0NjFlZGNlY2Y2YmQwOGI2
MTI2NDZkMWI1ZDhjNzE4ODY3Li5lYWFiY2NlMmM5NDVlNWM3MTFiNDBmNDYwNTk0ODBlNDA5MDU4
Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcApAQCAtMzI4LDYgKzMyOCwxNiBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxl
LiIpOwogfQogCitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmll
bGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7Cit9CisKK0pTT2JqZWN0
KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoIkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRT
b3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCiBFeGNlcHRpb24qIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29w
ZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCBlOWE1MjMxZmM1NjRiMDdk
ZDM5ZDFjYWMxNDY5MDk1YTNkYmQ0MTJjLi5lMWI3ZTAyMTE4ZDQ4YjVmNTQ0ODc0NWJkMzY0YTJl
OTM5OTczYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5oCkBAIC01Myw2ICs1Myw4IEBAIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5z
dGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xvCiBK
U09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1l
bnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKK0pTT2JqZWN0KiBjcmVhdGVJbnZh
bGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0ZVJl
ZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKIFN0cmluZyBlcnJvckRl
c2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3Qq
LCBUaHJvd1Njb3BlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggNjY1MWEwMmY3MmQyMzRjOTJiNzcxODQ5MjA3ZjQzMWZkMDAy
N2IyMy4uNDVmYTdjNDZiZjFlNzM5YWI0ODZkMmY2Y2NhZGUzMDM2YmZjNWRkNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzEx
LDYgKzMxMSwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25M
ZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSkpKTsKIH0KIAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3JlYXRlUHJpdmF0ZVN5bWJvbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3Jl
YXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7Cit9
CisKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKQEAgLTEyMDEsNiArMTIwNywxMSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1
Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFt
ZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0Rh
dGVUaW1lRm9ybWF0KSk7CiAgICAgICAgIH0pOwogCisgICAgLy8gUHJpdmF0ZVN5bWJvbHMgLyBQ
cml2YXRlTmFtZXMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKV0uaW5pdExhdGVyKFtdIChj
b25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7CisgICAgICAgIH0pOwor
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFNSU5H
X0FQSSkKICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCiAgICAgbV9saW5rVGltZUNv
bnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6d2ViQXNzZW1i
bHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxp
emVyPEpTQ2VsbD4mIGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCmluZGV4IDRjNmY5OTU1YmU5ZTIyZmUwM2M5MmI2YzQwYzU3N2IxMjRlZDc3ZmMuLjkyYTlj
ZjM1ZTM1MzMyNTQxZGUyNDYwZTVkNjRmOWU2YjZhYmMyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTc5LDYgKzE3OSwxMSBAQCBwdWJsaWM6CiAgICAg
Ly8gYmVpbmcgcmV0dXJuZWQuIE9uY2UgdGhpcyBpcyBmaXhlZCB3ZSBzaG91bGQgbWlncmF0ZSBj
b2RlICYgcmVtb3ZlIHRoaXMgbWV0aG9kLgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKIAorICAgIHN0YXRpYyBib29sIGdldFByaXZhdGVGaWVsZFNsb3Qo
SlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CisgICAgaW5saW5lIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgdm9pZCBwdXRQcml2YXRlRmllbGQo
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYp
OworICAgIGlubGluZSB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisKICAgICB1bnNpZ25lZCBn
ZXRBcnJheUxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKQEAgLTE0NDMsNiArMTQ0OCw3OCBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgSlNPYmplY3Q6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplYwogewogfQogCitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1l
RXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRl
TmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVj
dDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCit7CisgICAgQVNTRVJUKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpOworICAgIFZN
JiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBv
YmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIFBy
b3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNl
dCk7CisgICAgQVNTRVJUKHZhbHVlKTsKKyAgICBpZiAodmFsdWUuaXNDZWxsKCkpIHsKKyAgICAg
ICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgICAgIEpTVHlwZSB0eXBlID0g
Y2VsbC0+dHlwZSgpOworICAgICAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQodHlwZSwgdHlwZSAhPSBHZXR0ZXJTZXR0ZXJUeXBlICYmIHR5cGUgIT0gQ3VzdG9t
R2V0dGVyU2V0dGVyVHlwZSk7CisgICAgICAgIC8vIEZJWE1FOiBGb3Igbm93LCBwcml2YXRlIGZp
ZWxkcyBkbyBub3Qgc3VwcG9ydCBnZXR0ZXIvc2V0dGVyIGZpZWxkcy4gTGF0ZXIgb24sIHdlIHdp
bGwgbmVlZCB0byBmaWxsIGluIGFjY2Vzc29yIG1ldGFkYXRhIGhlcmUsCisgICAgICAgIC8vIGFz
IGluIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCgpCisgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzUKKyAgICB9CisKKyAg
ICBzbG90LnNldFZhbHVlKG9iamVjdCwgYXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGlmICghSlNP
YmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUsIHNsb3QpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNlKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FT
U0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
dHJ1ZSk7Cit9CisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRQcml2YXRlRmllbGQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90KQoreworICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRo
b2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgaWYgKCFKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxk
U2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVO
YW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9CisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpkZWZpbmVQ
cml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90KQorewor
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgaWYgKEpTT2JqZWN0
OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorICAgIEVYQ0VQVElPTl9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFNsb3QpOworfQorCiAvLyBJdCBtYXkg
c2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBh
IGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1bmN0aW9uIHZlcnkgaG90IGluIHZh
cmlhYmxlIGxvb2t1cAogdGVtcGxhdGU8Ym9vbCBjaGVja051bGxTdHJ1Y3R1cmU+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IGIzYzI3MjAyMjgwNmI4MTE0
MzU3ZDgxZGU5ZjNiNWZjMTAzNTRkOWEuLjkyNzQwNjRlZjVjOTdlNThkZDIwNTZiZjVmZjZmN2Y3
MGZmZjM5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBA
IC0zMzksNiArMzM5LDEwIEBAIHZvaWQgSlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNV
bmRlclREWihKU1Njb3BlKiBzY29wZSwgVmFyaWFibGVFbnZpcm9ubWVuCiAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgIGZvciAo
YXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKGxvY2tlciksIGl0ZXIgPSBzeW1ib2xUYWJsZS0+
YmVnaW4obG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgIHJlc3VsdC5h
ZGQoaXRlci0+a2V5KTsKKyAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMo
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5h
bWVzKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAK
KyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmgKaW5kZXggZjlhOGJkNTU3NGMxNWI0YjZhODFlYzBiZGNmMjFhMTBjNjAzNmFi
NS4uZjQ4NGQ4ZmRhMTMzYTk1ZTg2MDRlMDAwMmFjYWIxZWM5OTNmNDBjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01MDgsNiArNTA4LDcgQEAg
Y29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAg
ICB2KEJvb2wsIHVzZVB1YmxpY0NsYXNzRmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0
aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNz
ZXMuIikgXAogICAgIHYoQm9vbCwgdXNlTG9naWNhbEFzc2lnbm1lbnRPcGVyYXRvcnMsIGZhbHNl
LCBOb3JtYWwsICJFbmFibGUgc3VwcG9ydCBmb3IgXD9cPz0sIHx8PSwgYW5kICYmPSBsb2dpY2Fs
IGFzc2lnbm1lbnQgb3BlcmF0b3JzLiIpIFwKICAgICB2KEJvb2wsIHVzZVJhbmRvbWl6aW5nRXhl
Y3V0YWJsZUlzbGFuZEFsbG9jYXRpb24sIGZhbHNlLCBOb3JtYWwsICJGb3IgdGhlIGFybTY0IEV4
ZWN1dGFibGVBbGxvY2F0b3IsIGlmIHRydWUsIHNlbGVjdCB3aGljaCByZWdpb24gdG8gdXNlIHJh
bmRvbWx5LiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGVzdGluZyB0aGF0IGp1bXAgaXNsYW5kcyB3b3Jr
LiIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgZmFsc2UsIE5vcm1hbCwg
IklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMg
aW5zaWRlIGNsYXNzZXMuIikgXAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1l
T3B0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9s
VGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3Bw
CmluZGV4IGJjNDlkYzk4MmM3MzI4MmJlZGViMmIxZGVmYzc2N2E4NWFiMzVhZjkuLjc3OTBjZjU3
M2QyNmY5NTJmNDk5OWE1M2YzYzI3NWQ2NzUxYTNjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTE4Myw2ICsxODMsMTEgQEAgU3ltYm9s
VGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAgICAgICAgICAgICBm
b3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFy
ZURhdGEtPm1fdW5pcXVlVHlwZVNldE1hcC5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CiAg
ICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzKQorICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAg
IHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFi
bGUuaAppbmRleCBlMjM0ZDMxNGM2OWVkMmQxMTEzMjM5MTRiYTI3ZDNkOTMxNTUyNjc2Li4zMWY4
MWZhZTAyZmIyMDFkMzIxOGJiMGZiNGM1MmQyMjFmNGNkNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRl
ICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJh
aXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TeW1ib2xJbXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NTAsNiAr
NDUwLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFi
bGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OworICAg
IHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVy
YXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3Bh
Y2VGb3IoVk0mIHZtKQpAQCAtNTk0LDcgKzU5NiwyNSBAQCBwdWJsaWM6CiAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgYWRkKGxvY2tlciwga2V5LCBz
dGQ6OmZvcndhcmQ8RW50cnk+KGVudHJ5KSk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNQ
cml2YXRlTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhICYmIG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLnNpemUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVJdGVy
YXRvclJhbmdlIHByaXZhdGVOYW1lcygpCisgICAgeworICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0
ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGlu
IGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKGhhc1ByaXZhdGVOYW1lcygpKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICB9CisKKyAg
ICB2b2lkIGFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgeworICAg
ICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkpOworICAgICAgICBpZiAoIW1fcmFy
ZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRh
YmxlUmFyZURhdGE+KCk7CisKKyAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5jb250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
YWRkKGtleSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CiAgICAgdm9p
ZCBzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwg
RW50cnkmJiBlbnRyeSkKICAgICB7CkBAIC03MjksMTggKzc0OSwyMSBAQCBwcml2YXRlOgogICAg
IFNjb3BlT2Zmc2V0IG1fbWF4U2NvcGVPZmZzZXQ7CiBwdWJsaWM6CiAgICAgbXV0YWJsZSBDb25j
dXJyZW50SlNMb2NrIG1fbG9jazsKLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV91c2VzTm9uU3Ry
aWN0RXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOyAvLyBO
b24tZnVuY3Rpb24gTGV4aWNhbFNjb3BlLgotICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsg
Ly8gU2NvcGVUeXBlCi0gICAgCisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVSYXJlRGF0YSB7CiAg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVW5pcXVlSURN
YXAgbV91bmlxdWVJRE1hcDsKICAgICAgICAgT2Zmc2V0VG9WYXJpYWJsZU1hcCBtX29mZnNldFRv
VmFyaWFibGVNYXA7CiAgICAgICAgIFVuaXF1ZVR5cGVTZXRNYXAgbV91bmlxdWVUeXBlU2V0TWFw
OwogICAgICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKKyAgICAgICAg
UHJpdmF0ZU5hbWVTZXQgbV9wcml2YXRlTmFtZXM7CiAgICAgfTsKKworcHJpdmF0ZToKKyAgICB1
bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDogMTsKKyAgICB1bnNpZ25lZCBtX25lc3RlZExl
eGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCisgICAgdW5zaWdu
ZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5cGUKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxT
eW1ib2xUYWJsZVJhcmVEYXRhPiBtX3JhcmVEYXRhOwogCiAgICAgV3JpdGVCYXJyaWVyPFNjb3Bl
ZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzA3ZTM4NmNmZjQxODFiNGQ4YWM1YmUyMGMz
NzYzNmRjOGRhODBhNS4uNmUyMTI3OGMxOTkzZjA3MzY0ODQ0OGZmMGFiNmMxM2QzYjRhOTI4MCAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMiBAQAorMjAyMC0wNS0wNiAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZvciBwcml2YXRlIGNsYXNzIGZpZWxk
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDMx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwYW5k
cyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBmaWVsZHMgcGF0Y2gsIGFkZGluZyBhIG51bWJlciBv
ZiBwcml2YXRlCisgICAgICAgIGZpZWxkIHRlc3RzLgorCisgICAgICAgICogc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2RlLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQt
ZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzOgorICAgICAg
ICAqIHN0cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9w
ZXJ0eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHBy
aXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRw
cml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIw
LTA1LTA2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBCeVZhbCBub2RlcyB3aXRoIEFycmF5TW9kZXMgc2hvdWxkIGNsb2JiZXJUb3AgdW50aWwg
Rml4dXAgcGhhc2UgcnVucy4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhhMTE2M2UxNjdlZDBkNmM1ZjY3NjU2
ZDAxYjM0ZDg4Y2I3NGYyZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNt
ID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7
CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQt
Ynl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQt
Ynl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJhNGY0MzU0Zjg5N2YxMTM3NDA4NzEyNjA0NmM2ZjFk
ZmQzZTdlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpAQCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNv
ZGVDYWNoZSgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNm
ID0gMzsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQor
fQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMyk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2YtbGlu
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2Yt
bGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YjUzZjZiMjMxMDdkZGFhMmI0NWJjM2YwNThlYWJmMTFjZjAx
OTNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtZnJlZXplLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3Qu
YXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYg
KGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2Fn
ZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGVx
dWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwg
KGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJy
b3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2Ug
Y2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRk
IGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVs
ZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNs
YXNzIEJhc2UgeworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmlu
ZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtp
fSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxk
QWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QuZnJl
ZXplKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc0Zyb3plbih0aGlz
KSwgIk9iamVjdC5pc0Zyb3plbih0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyBy
ZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlv
biB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5z
aW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09IDE1MCk7CisgIGMueDE1MCA9IDAuMTsK
KyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1
YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEp
OwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjQyY2MwZmY5MmQ2YmFjOWM4NGQ5MDY5NDM0ZjNiNzdkN2RmNWIyMgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcwpAQCAt
MCwwICsxLDQzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4
cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cg
bmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQg
d2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBi
IHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAg
cmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1g
KTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlz
LnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lv
bnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LmZyZWV6ZSh0aGlzKSwgNDIpOworICAj
YXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNGcm96ZW4odGhpcyksICJPYmplY3QuaXNGcm96ZW4o
dGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAg
c2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBj
ID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGMueCA9IDAuMTsK
KyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1
YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEp
OwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc2MWY3MThkOTc0MjcwYWM4YTE5ZTVmN2JmMDUyMDBkZWI5Mzc2Y2QKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5q
cwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5
Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2Yg
YXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3Ro
OyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFb
aV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsK
KworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3Ap
IHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2Ns
YXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAgICBtZXRob2QoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgp
OworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290
OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY5ZDg2MjE2MDFkNWRlMzRhNDI4MzQ2ZDUxY2NmODIyZmJmNTYwYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2Yt
bGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9
PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdv
dDogIiArIGEpOworfQorCitsZXQga2xhc3NTb3VyY2UgPSBgCit2YXIgQyA9IGNsYXNzIHsKKyAg
ICBhc3NlcnRPdXRPZkxpbmVWYWx1ZSgpIHsKKyAgICAgICAgYXNzZXJ0KHRoaXMuI2YyMDAsICJm
b28iKTsKKyAgICB9CitgOworCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwOyBpKyspIHsKKyAg
ICBrbGFzc1NvdXJjZSArPSAiICAgICNmIiArIGkgKyAiO1xuIjsKK30KKwora2xhc3NTb3VyY2Ug
Kz0gIiAgICAjZjIwMCA9IFwiZm9vXCI7XG59IjsKKworZXZhbChrbGFzc1NvdXJjZSk7CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMu
YXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91
dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZGI4YjE2YWUwZDVjYjdmM2Y1NTg1MjdlNDAwZWI1
MjJjMWIzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSw1MiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0
IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdl
ID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9
YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIg
PT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJl
eHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFscyhhLCBi
KSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEg
JiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMg
ZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAor
Ly8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0
LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2Ug
eworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0
aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07
XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2
ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QucHJldmVudEV4dGVu
c2lvbnModGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQuZmFsc2UoT2JqZWN0LmlzRXh0
ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5pc0V4dGVuc2libGUodGhpcykiKSwgdGhpcy4jaSArIDEp
OworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7
IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54MTUwID09PSAxNTApOwor
ICBjLngxNTAgPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChp
KTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0
ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytp
KQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNjA5NzI3ODE0ZmM2
MDVlMTA0YzY2NGQ2ZTNlNjBlMmQ0YzVjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMuanMKQEAgLTAsMCAr
MSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikK
KworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBt
ZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAk
e2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYg
KGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdl
IHx8ICJleHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFs
cyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEg
IT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworY2xhc3MgQmFzZSB7Cisg
IGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMueCA9IDE7CisgIH0KK30KKworY2xhc3MgUHJpdmF0
ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmpl
Y3QucHJldmVudEV4dGVuc2lvbnModGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQuZmFs
c2UoT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5pc0V4dGVuc2libGUodGhpcyki
KSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkp
IHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3
IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGMueCA9IDAuMTsKKyAgYXNz
ZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMu
Z2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVz
dCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1vZi1saW5l
LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGlu
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NjFiMzBlNjJlMjgzOWFkNDc1MjMxZjM3Y2E0ZGZjNTExNjEwZDU0
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
c2VhbC1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDUyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2ln
bigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHBy
ID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwg
ImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBmYWxzZShl
eHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSB0cnVlKQorICAgICAgdGhyb3cg
bmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSBmYWxzZSwgYnV0
IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8
fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBiKSkKKyAgICAgIHJl
dHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7
CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBjbGFzcyBpcyBkZWNsYXJlZCBpbiBldmFsIHNwZWNp
ZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQgZW5vdWdoCisvLyBwcm9wZXJ0aWVzIHRvIHRoZSBj
bGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxkcyBpbiBvdXQtb2YtbGluZSBwcm9wZXJ0eSBzdG9y
YWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xhc3MgQmFzZSB7CisgIC8vIE1ldGhvZHMKKyAgY29u
c3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5lIHByb3BlcnRpZXMKKyAgICAke0FycmF5KDIwMCku
bWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9ID0gJHtpfTtcbmApLmpvaW4oIiIpfQorICB9Cit9
KWApOworCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMg
QmFzZSB7CisgICNpID0gKE9iamVjdC5zZWFsKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNz
ZXJ0KE9iamVjdC5pc1NlYWxlZCh0aGlzKSwgIk9iamVjdC5pc1NlYWxlZCh0aGlzKSIpLCB0aGlz
LiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlz
LiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0
ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09
IDE1MCk7CisgIGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7Cisg
IGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVz
dCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1zZWFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtc2VhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODNlN2FiMzVkN2MxNGE2Yzc2OTEyNjI2Y2ZkMTI4MTdj
NWEwYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtc2VhbC5qcwpAQCAtMCwwICsxLDQzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAg
ZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZh
bHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIi
fSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMoYSwgYikg
eworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYm
IGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1
Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LnNlYWwo
dGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0LmlzU2VhbGVkKHRoaXMpLCAi
T2JqZWN0LmlzU2VhbGVkKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVy
biB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRl
c3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25z
OworICBjLnggPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChp
KTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0
ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytp
KQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtdXNlLWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11
c2UtZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc4ODA1N2IxYmY0OTU1MGEwZThmM2Q5OGE5NDFhODM3
Y2YxMWMzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtdXNlLWV2YWwuanMKQEAgLTAsMCArMSwxNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIiwgIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9MSIpCisK
K2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9
IGV2YWwoIihpKSA9PiBpLiNiIik7CisKKyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54
ID0gMTsKK2Fzc2VydChpbnN0LmEoaW5zdCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCmluZGV4IGU1MTYyOTlhNzkyYzYzODRiODQy
YzY5N2Y0MWZjZWQ3ZjVjZmZmY2YuLjUwNjlhN2RhNWExNTVkY2MwNjA0ZTQ2MzJiOTBlODMwOTM5
ZmU4MzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5z
dGFuY2UuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5j
ZS5qcwpAQCAtMSwxMSArMSwxNSBAQAotLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0Ns
YXNzRmllbGRzPXRydWUiKQorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmll
bGRzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCiAKIGNsYXNzIEEgewog
ICAgIGEgPSAwOwogICAgIGIgPSAxOworICAgICNjID0gMDsKKyAgICAjZCA9IDE7CiAgICAgZSA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07CisgICAgI2YgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IDE7IH07CiAgICAgWyJnIl0gPSAwOwogICAgIGggPSBldmFsKCJ0cnVlIik7CisgICAgI2kgPSBl
dmFsKCJmYWxzZSIpOwogfQogCiBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJpdmF0ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMTYzMzYyZmFhNjNlNDA1NjI1ZDFmZWNlY2U5OWJjZDI2NmI5ZWE5Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LWJ5LXZhbC1kaXJlY3QtZ2V0cHJpdmF0ZS5qcwpAQCAt
MCwwICsxLDI5IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikK
Ky8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gR2V0QnlW
YWxEaXJlY3Qgc2hvdWxkIHRocm93IHdoZW4gdGhlIHJlY2VpdmVyIGRvZXMgbm90IGhhdmUgdGhl
IHJlcXVlc3RlZCBwcml2YXRlIHByb3BlcnR5CitsZXQgaSwgdGhyZXcgPSBmYWxzZTsKK2NsYXNz
IEMgeworICAgICN4ID0gaTsKKyAgICBjb25zdHJ1Y3RvcigpIHsgaWYgKGkgPT09IDMwKSByZXR1
cm4geyBbU3ltYm9sLnRvU3RyaW5nVGFnXTogIndpdGhvdXQgI3gifTsgfQorICAgIHN0YXRpYyB4
KG9iaikgeyByZXR1cm4gb2JqLiN4OyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkg
eyByZXR1cm4gIndpdGggI3giOyB9Cit9CisKK3RyeSB7CisgICAgZm9yIChpID0gMDsgaSA8IDUw
OyArK2kpIHsKKyAgICAgICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMu
eChjKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gaSkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgQy54KCR7Y30pIHRvIGJlICR7aX0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1g
KTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9
PSAzMCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsK
KyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBU
eXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzIGIvSlNU
ZXN0cy9zdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg0MmNmMTJiNjRhMTY0MzAyZWQyN2Y1YjkxZTA3NTQ0NzFlMTE3ZTYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1m
aWVsZHMuanMKQEAgLTAsMCArMSw5MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IChh
LCBlKSA9PiB7CisgICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKworICAg
IHRocm93czogKGV4cGVjdGVkRXhjZXB0aW9uLCBmdW5jdG9yLCBtKSA9PiB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXhjZXB0aW9uKSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IobSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoKCkgPT4g
eworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAg
IHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8/LiNmaWVsZDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCAn
dGVzdCcpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKHVuZGVmaW5lZCksIHVu
ZGVmaW5lZCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MobnVsbCksIHVuZGVm
aW5lZCk7CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICAgICAgQy5hY2Nlc3Moe30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxk
IHNob3VsZCB0aHJvdyIpOworfSkoKTsKKworLy8gQ2hhaW5lZCBjYXNlCisoKCkgPT4geworICAg
IGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHN0YXRp
YyBjaGFpbmVkQWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvLnByaXZhdGU/LiNmaWVs
ZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgbGV0IG8gPSB7
cHJpdmF0ZTogY307CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAg
ICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2VzcyhvKSwgJ3Rlc3QnKTsKKyAgICAg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNoYWluZWRBY2Nlc3Moe30pLCB1bmRlZmluZWQpOworICAg
ICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2Vzcyh7cHJpdmF0ZTogbnVsbH0pLCB1
bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7
CisgICAgICAgIG8ucHJpdmF0ZSA9IHt9OworICAgICAgICBDLmNoYWluZWRBY2Nlc3Mobyk7Cisg
ICAgfSwgIk9iamVjdCB3aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRocm93Iik7Cit9KSgp
OworCisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisKKyAgICAgICAg
c2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9Cisg
ICAgCisgICAgICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8uI2Zp
ZWxkPy5wcm9wZXJ0eTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBjLnNldEZpZWxk
KHtwcm9wZXJ0eTogJ3Rlc3QnfSk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3Mo
YyksICd0ZXN0Jyk7CisKKyAgICAgICAgYy5zZXRGaWVsZCh1bmRlZmluZWQpOworICAgICAgICBh
c3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCB1bmRlZmluZWQpOworCisgICAgICAgIGMuc2V0
RmllbGQobnVsbCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksIHVuZGVm
aW5lZCk7CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAg
ICAgICAgQy5hY2Nlc3Moe30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxk
IHNob3VsZCB0aHJvdyIpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTlkOGUyMTkyM2YyMDI0ZDAyMjAyZjNhMmUxNmJiNDllMWY5NWIzZAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVy
dHkuanMKQEAgLTAsMCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0Ns
YXNzRmllbGRzPTEiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQg
PSB7CisgICAgdGhyb3dzOiAoZXhwZWN0ZWRFcnJvciwgZnVuY3RvcikgPT4geworICAgICAgICB0
cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvci5u
YW1lICsgIiBidXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAg
ICAgW3t9LiN4XSA9IDE7IAorICAgICAgICAjeCA9ICJmb28iOworICAgIH0KK30pOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzIGIv
SlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MzEzNTQ2ODY5MjdmMzZjZWQ5YTk5YWVlNzQ0OTFkOGY3ZjIzMzc0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpAQCAt
MCwwICsxLDM0IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPTEiKSAtLSBDdXJyZW50bHksIGVhZ2VyIEpJVCBpcyBub3Qgc3VwcG9ydGVkIGZv
ciBwcml2YXRlIGZpZWxkIGFjY2Vzcy4KKy8vQCBydW5EZWZhdWx0KCItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisv
L0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIFByaXZhdGVG
aWVsZCAiQ3JlYXRlIiBhY2Nlc3Mgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhp
c3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBD
IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGkgPCAyOSA/IHRoaXMgOiBj
OworICAgIH0KK30KKworY2xhc3MgQ0MgZXh0ZW5kcyBDIHsKKyAgICAjeCA9IGkrKzsKKyAgICB4
KCkgeyByZXR1cm4gdGhpcy4jeDsgfQorfQorCitjID0gbmV3IENDOwordHJ5IHsKKyAgICBmb3Ig
KGxldCBqID0gMTsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IHggPSBuZXcgQ0M7CisgICAg
ICAgIGlmICh4LngoKSAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgeC54KCkgdG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7eC54KCl9YCk7CisgICAgfQorfSBjYXRj
aCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1
Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAo
IXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1i
eS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRp
cmVjdC1wdXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzODY1M2RkMjIyMTdkMWQxNmU3MDY3ZDhh
ZDI0NTk4YzQ1OGNjODgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnkt
dmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vIFRPRE86IC8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpIC0tIEN1cnJlbnRseSwg
ZWFnZXIgSklUIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgZmllbGQgYWNjZXNzLgorLy9A
IHJ1bkRlZmF1bHQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz0xIikKKworLy8gUHJpdmF0ZUZpZWxkICJQdXQiIGFjY2VzcyBzaG91bGQgdGhy
b3cgaWYgd3JpdGluZyB0byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0g
MCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICN4OworICAgIGNvbnN0cnVjdG9yKCkg
eyByZXR1cm4gaSA8IDMwID8gdGhpcyA6IHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0
ICN4IiB9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBvYmouI3ggPSBpKys7IH0KKyAg
ICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCIgfQorfQorCit0
cnkgeworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgb2Jq
ID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngob2JqKTsKKyAgICAgICAgaWYgKHJl
c3VsdCAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54KCR7
b2JqfSkgdG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0Y2gg
KGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgLy8gcnZhbCBvZiBBc3NpZ25tZW50RXhwcmVz
c2lvbiBpcyBldmFsdWF0ZWQgYmVmb3JlIFByaXZhdGVGaWVsZEZpbmQoI3gsIGxyZWYpIGlzIHBl
cmZvcm1lZCwKKyAgICAvLyB0aHVzIGBpYCBoYXMgYWxyZWFkeSBiZWVuIGluY3JlbWVudGVkLgor
ICAgIGlmIChpICE9PSAzMSB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAg
ICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCmluZGV4IDM2OTE4MjI2ZWM3YmFlNmI4YWU1ZGVlMWQ0MjY2OGRmYTBhN2U3ZDcu
LjUzMzk2NTZhZDRkMjQ3ZGFlZWI2YjMzYzgyNzczY2IzZGIyNWM1ZjkgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKQEAgLTYsNiArNiw3IEBAIGZsYWdzOgogICBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDogdXNl
SW50bFJlbGF0aXZlVGltZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1m
aWVsZHMtcHVibGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxkcworICBjbGFzcy1maWVsZHMtcHJpdmF0
ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCiAgIGxvZ2ljYWwtYXNzaWdubWVudC1vcGVyYXRvcnM6
IHVzZUxvZ2ljYWxBc3NpZ25tZW50T3BlcmF0b3JzCiBza2lwOgogICBmZWF0dXJlczoKQEAgLTE1
LDcgKzE2LDYgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQ5MzEKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAKLSAgICAtIGNsYXNzLWZp
ZWxkcy1wcml2YXRlCiAgICAgLSBjbGFzcy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0
YXRpYy1maWVsZHMtcHVibGljCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398693</attachid>
            <date>2020-05-06 18:47:22 -0700</date>
            <delta_ts>2020-05-27 11:38:09 -0700</delta_ts>
            <desc>Patch v19</desc>
            <filename>bug-206431-20200506214721.patch</filename>
            <type>text/plain</type>
            <size>200456</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODEwYWU4NmMzYTFlYTYwNjQxZDQ5YjNkZTE4ODUxZDI5MGQ2MmVlLi40MjI1ODYyZDkzZjgyZTZm
YTQ0ZDNkZGUxNzQ4MjQ1OGM4MDI5NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjUgQEAKKzIwMjAtMDUtMDYgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X2J5X3ZhbF9kaXJlY3QpLCBvbmUgY2hhbmdlZCBvcGNv
ZGUgKG9wX3B1dF9ieV92YWxfZGlyZWN0KS4KKyAgICAgICAgICAgIC0gQSBtZXRob2QgZm9yIGNy
ZWF0aW5nIFN5bWJvbCBvYmplY3RzIHdpdGggYSBudWxsIFByaXZhdGVTeW1ib2xJbXBsIGlzIGV4
cG9zZWQgYXMgYQorICAgICAgICAgICAgICBMaW5rVGltZUNvbnN0YW50IChAY3JlYXRlUHJpdmF0
ZVN5bWJvbCkuCisgICAgICAgICAgICAtIE51bGwgUHJpdmF0ZSBTeW1ib2xzIGFyZSBzdG9yZWQg
YnkgbmFtZSAobm90IGEgdmFsaWQgaWRlbnRpZmllcikgaW4gYSBKU1Njb3BlLCBhbmQKKyAgICAg
ICAgICAgICAgYXJlIGxvYWRlZCBmcm9tIHRoZSBvdXRlciBzY29wZSB3aGVuZXZlciB0aGV5IGFy
ZSB1c2VkIGJ5IHRoZSBtb2RpZmllZCBvcGNvZGVzLgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRv
IG9wX3B1dF9ieV92YWxfZGlyZWN0IGluY2x1ZGUgYSBuZXcgYnl0ZWNvZGUgb3BlcmFuZCAoUHV0
QnlWYWxGbGFncykgd2hpY2ggYXJlCisgICAgICAgIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biBvdmVyd3JpdGluZyBvciBkZWZpbmluZyBhIG5ldyBwcml2YXRlIGZpZWxkLiBTcGVjaWZpY2Fs
bHksIHdoZW4gaXQKKyAgICAgICAgY29tZXMgdG8gcHJpdmF0ZSBmaWVsZCBhY2Nlc3NlcywgaXQn
cyBuZWNlc3NhcnkgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gYWNjZXNzaW5nIGEgZmllbGQK
KyAgICAgICAgd2hpY2ggZG9lcyBub3QgZXhpc3QsIG9yIHdoZW4gYXR0ZW1wdGluZyB0byBkZWZp
bmUgYSBwcml2YXRlIGZpZWxkIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4KKyAgICAgICAgZGVmaW5l
ZC4KKworICAgICAgICBEdXJpbmcgdGhlIGV2YWx1YXRpb24gb2YgYSBjbGFzcyBleHByZXNzaW9u
LCBiZWZvcmUgdGhlIGNsYXNzIGVsZW1lbnQgbGlzdCBpcyBldmFsdWF0ZWQgKGluIGNhc2UKKyAg
ICAgICAgYW55IGNvbXB1dGVkIHByb3BlcnR5IG5hbWVzIGV4cHJlc3Npb25zIHJlZmVyIHRvIGEg
bmV3IHByaXZhdGUgZmllbGQpLCBhIG5ldyBQcml2YXRlU3ltYm9sIGlzCisgICAgICAgIGNyZWF0
ZWQgZm9yIGVhY2ggaW5kaXZpZHVhbCBwcml2YXRlIGZpZWxkIG5hbWUsIGFuZCBzdG9yZWQgaW4g
dGhlIGNsYXNzIGxleGljYWwgc2NvcGUuCisKKyAgICAgICAgUHJpdmF0ZSBmaWVsZCBuYW1lcyBh
cmUgbG9hZGVkIGZyb20gc2NvcGUgYmVmb3JlIHRoZWlyIHVzZS4gVGhpcyBwcmV2ZW50cyBtdWx0
aXBsZSBldmFsdWF0aW9ucworICAgICAgICBvZiB0aGUgc2FtZSBjbGFzcyBzb3VyY2UgZnJvbSBh
Y2Nlc3NpbmcgZWFjaCBvdGhlcidzIHByaXZhdGUgZmllbGRzLCBiZWNhdXNlIHRoZSB2YWx1ZXMg
b2YgdGhlCisgICAgICAgIHN5bWJvbHMgbG9hZGVkIGZyb20gdGhlIGNsYXNzIHNjb3BlIHdvdWxk
IGJlIGRpc3RpbmN0LiBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBwcm9wb3NhbCB0ZXh0LAorICAg
ICAgICBhbmQgaXMgdGhlIGtleSByZWFzb24gd2h5IHdlIHVzZSBCeVZhbCBsb29rdXBzIHJhdGhl
ciB0aGFuIEJ5SWQgbG9va3Vwcy4KKworICAgICAgICBUbyBpbGx1c3RyYXRlLCB0eXBpY2FsIHBy
aXZhdGUgZmllbGQgYWNjZXNzIHdpbGwgbG9vayBsaWtlOgorCisgICAgICAgIDxGaWVsZCBSZWFk
cz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29wZT0+LCA8Y3VycmVudFNjb3BlPiwg
IiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIDxzeW1i
b2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRocm93SWZOb3RGb3VuZHxHbG9iYWxQ
cm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAgICAgICAgZ2V0X2J5X3ZhbF9kaXJl
Y3QgIDx2YWx1ZT0+LCA8cmVjZWl2ZXIgLS0tIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+CisK
KyAgICAgICAgPEZpZWxkIFdyaXRlcz4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIDxzY29w
ZT0+LCA8Y3VycmVudFNjb3BlPiwgIiN4IiwgR2xvYmFsUHJvcGVydHksIDAKKyAgICAgICAgZ2V0
X2Zyb21fc2NvcGUgICAgIDxzeW1ib2w9PiwgPHNjb3BlPiwgIiN4IiwgMTA1MDYyNDxEb05vdFRo
cm93SWZOb3RGb3VuZHxHbG9iYWxQcm9wZXJ0eXxOb3RJbml0aWFsaXphdGlvbj4sIDAsIDAKKyAg
ICAgICAgcHV0X2J5X3ZhbF9kaXJlY3QgIDxyZWNlaXZlciwgcHJvYmFibHkgJ3RoaXMnPiwgPHN5
bWJvbD4sIDx2YWx1ZT4sIDxQdXRCeVZhbFByaXZhdGVOYW1lPgorCisgICAgICAgIDxGaWVsZCBE
ZWZpbml0aW9uPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50
U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAg
ICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5k
fEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlf
dmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVl
PiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWV8UHV0QnlWYWxUaHJvd0lmRXhpc3RzPgorCisgICAgICAg
IFRoZSBmZWF0dXJlIGlzIGN1cnJlbnRseSBoaWRkZW4gYmVoaW5kIHRoZSBmZWF0dXJlIGZsYWcg
SlNDOjpPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
SW5kZXhJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9GaXRzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5o
LgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QpOgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAo
SlNDOjpQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlND
OjpQdXRCeVZhbEZsYWdzOjppc0RpcmVjdCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFs
RmxhZ3M6OmVjbWFNb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6cHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6
OmlzUHJpdmF0ZUZpZWxkQWNjZXNzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFn
czo6aXNQcml2YXRlRmllbGRQdXQgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdz
Ojppc1ByaXZhdGVGaWVsZEFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6
OlB1dEJ5VmFsRmxhZ3MpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEtpbmQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6
OmdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFByaXZhdGVGaWVsZFB1dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZp
ZWxkTmFtZXMpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpT
Qzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjpl
bWl0RG90KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChK
U0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2Rp
ZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWZpbmVGaWVsZE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGU8T3BQdXRCeVZhbERp
cmVjdD4pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZh
bCk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAg
ICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAqIGdlbmVyYXRvci9EU0wu
cmI6CisgICAgICAgICogaml0L0lDU3RhdHMuaDoKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAg
ICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRQdXRC
eUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAgKiBqaXQvSklUSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVjbWFNb2RlKToKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZTxPcFB1dEJ5SWQ+KToKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZTxPcFB1
dEJ5VmFsRGlyZWN0Pik6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFs
RGlyZWN0Pik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlND
OjpwdXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpkZWZpbmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24pOgor
ICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlkRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2ln
bk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OkxleGVy
PExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VUNoYXI+Ojpw
YXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFy
c2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6bGV4V2l0aG91
dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6CisgICAgICAg
IChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6
OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6c2hv
dWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5o
OgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRpb24gY29uc3Qp
OgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAgICAgIChKU0M6
OkJhc2VEb3ROb2RlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5v
ZGU6OnR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlTmFt
ZSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1l
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lv
bik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tl
blRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6
OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1By
aXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzUHJpdmF0ZU5hbWUpOgor
ICAgICAgICAoSlNDOjpTY29wZTo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyk6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcyBjb25zdCk6
CisgICAgICAgIChKU0M6OlNjb3BlOjp1c2VQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlNj
b3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmZpbmRQcml2
YXRlTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwcml2YXRlTmFtZVNjb3BlKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJT
Y29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bWF0Y2hBbmRVcGRhdGUpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpwYXJzZSk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhD
aGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFjY2Vzcyk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgorICAgICAg
ICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudDo6c3dhcCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpD
b21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1By
aXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
OjpzZXRJc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6UHJp
dmF0ZU5hbWVFbnRyeSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzVXNlZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzRGVjbGFyZWQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc1VzZWQpOgorICAgICAgICAo
SlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc0RlY2xhcmVkKToKKyAgICAgICAgKEpTQzo6UHJp
dmF0ZU5hbWVFbnRyeTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50
cnk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50
OjpWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcFNp
emUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojp1c2VQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lcyBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lc1Np
emUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlQcml2YXRlTmFt
ZXNUbyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlVbmRl
Y2xhcmVkUHJpdmF0ZU5hbWVzVG8gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpnZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5
cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFzUHRyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjplbmNv
ZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmRl
Y29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmVu
Y29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY29kZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmVuY29kZSk6
CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6
CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlND
OjpDYWNoZWRTeW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0Nv
ZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBs
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
Y3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAg
ICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVQcml2YXRl
RmllbGQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpT
U2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDUtMDYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgREZHIEJ5VmFsIG5vZGVzIHdpdGggQXJyYXlNb2Rl
cyBzaG91bGQgY2xvYmJlclRvcCB1bnRpbCBGaXh1cCBwaGFzZSBydW5zLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDBkMWZlMzAwMGFiMmI0YjA4YWY0NDlkOTUzMjI3N2Jl
NDdhNmRjODcuLjYzODBmOTBkM2VkY2Q2MDA3NzQwNTAzM2Y3MzAzZTYxNjE4ZjE2YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0MSw2ICs1NDEsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJh
bmRzLmgKICAgICBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0
QnlJZEZsYWdzLmgKKyAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29k
ZS9TdXBlclNhbXBsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMjdmN2Vm
MmFjMTU2M2QzYTBjYmM1YmY3MDgyMGMxZmYxNDI2M2E0Li41OTg0ODcwZDc0YmE2MTA1Njg2ZmU3
NjRkYzEzNzMyMmFhMDllNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1
MSw2ICsxMjUxLDcgQEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJz
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0
QjgxMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdF
MDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxh
Z3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
Njg5MTZCMDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAv
KiBQcml2YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAw
MTE1OUY2IC8qIEpTQmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZF
NUExRkEzNzU4QTAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MTE4LDYgKzQxMTksOCBAQAogCQk4
NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlh
cnJQYXR0ZXJuLmNwcDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9
IHlhcnIvWWFyclBhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2
RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0
QnlWYWxGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0
NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRC
eVZhbEZsYWdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMy
OEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGgg
PSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MTEsNiArODQxNCw4IEBACiAJCQkJMEY5MzMyOUEx
NENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4Qjky
QzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJD
NEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMw
MEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBG
QUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQdXRLaW5kLmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29y
ZGVkU3RhdHVzZXMuY3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNv
cmRlZFN0YXR1c2VzLmggKi8sCkBAIC0xMDE2Miw2ICsxMDE2Nyw3IEBACiAJCQkJMEYxNUNEMjMx
QkE1Rjk4NjAwMzFGRkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5
MzMyQTQxNENBN0REOTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTNCNEFBMThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJ
bmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAv
KiBQdXRLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQg
LyogUHV0UHJvcGVydHlTbG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2Vz
LnR4dAppbmRleCBlY2NlOTEzZWM1MTM3YjBhMjllYTVkOGU4OTU2OGUzOWJlODM5NmM4Li42ZDhk
ZjU0MThjNGY1YmYzYWNiNTA1ZjUwMzQyZmZkNGFiNzY4NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yNjgsNiArMjY4LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2Fz
ZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKK2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3Mu
Y3BwCiBieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVz
cGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDEzNjI1ZjViYTg5OWNjZGViYjU2
MzU0ODdmZGMxNTI0NmU3MmI4MjIuLjBmMjUzMWMzMDY4MmQxYjgzZmIyNmE4ZDIxZTYyZGVlNDdk
NzBkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
TmFtZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVz
LmgKQEAgLTE2OSw3ICsxNjksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtZXRhKSBc
CiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBt
YWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKLSAgICBtYWNy
byhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIAorICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0
aWFsaXplcikgXAorICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVzcGFjZSBT
eW1ib2xzIHsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5hbWUpIGV4
dGVybiBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIG5hbWUj
I1N5bWJvbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCmluZGV4IDQ5ODU3OTAzMzBjYzllNTMyOWIzMWFlZTdjMjZiY2MxMmU0OWMxMzguLjljMDk3
MmMxM2VjZDdmZTJmMDlmOGMzMWM2ODUxNTMwYzlkZjU5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDksNiArNDksNyBAQCB0eXBl
cyBbCiAgICAgOlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9mZnNldCwK
ICAgICA6UHV0QnlJZEZsYWdzLAorICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNvbHZlVHlw
ZSwKICAgICA6U3RydWN0dXJlLAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU0OSw2ICs1NTAsMTcg
QEAgb3AgOmdldF9ieV92YWwsCiAgICAgICAgIHNlZW5JZGVudGlmaWVyczogR2V0QnlWYWxIaXN0
b3J5LAogICAgIH0KIAorb3AgOmdldF9ieV92YWxfZGlyZWN0LAorICAgIGFyZ3M6IHsKKyAgICAg
ICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFkYXRh
OiB7CisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgYXJyYXlQcm9maWxl
OiBBcnJheVByb2ZpbGUsCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAgICBhcmdzOiB7CiAg
ICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU3NCw3ICs1ODYsNyBAQCBvcCA6cHV0
X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAg
cHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZpcnR1YWxSZWdpc3Rl
ciwKLSAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAorICAgICAgICBmbGFnczogUHV0QnlWYWxG
bGFncywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5UHJvZmlsZTogQXJy
YXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5jcHAKaW5kZXggZTMxYjEzNGMyOGMxZjI4MzRlZmNiNzhlMDE2NWVkN2ZmNmQ4MWYz
YS4uMTEyNGEzZjZmMmUzZDU1ZWE1M2M5MTIwYzliMGVhZDU2NjdhMDM0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCkBAIC0yMTIs
NiArMjEyLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKFZpcnR1YWxS
ZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VTKE9wRW51bWVyYXRv
clN0cnVjdHVyZVBuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VTKE9wRW51bWVyYXRv
ckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEdldEJ5VmFsLCBi
YXNlLCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wR2V0QnlWYWxEaXJlY3QsIGJhc2UsIHByb3BlcnR5
KQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVlKQogICAgIFVTRVMo
T3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtNDIzLDYgKzQyNCw3IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1WYXJzLCBjb25zdCBJ
bnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRzdCkKICAgICBERUZT
KE9wSW5zdGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZhbCwgZHN0KQorICAg
IERFRlMoT3BHZXRCeVZhbERpcmVjdCwgZHN0KQogICAgIERFRlMoT3BUeXBlb2YsIGRzdCkKICAg
ICBERUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERFRlMoT3BJc0VtcHR5
LCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAppbmRleCAwZDk1NzA5MjZh
YjE0NzM3OGVjMzE3MjgzOGRiMjM1ODgyZGI3YmNkLi4zOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIy
YTM4MmJmNmI4YTBhYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJPcGNvZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJvZmls
ZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRl
ICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5
bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBA
IC0yNTYsNiArMjU3LDQ3IEBAIHN0cnVjdCBGaXRzPFB1dEJ5SWRGbGFncywgc2l6ZT4gewogICAg
ICAgICByZXR1cm4gaXNEaXJlY3QgPyBQdXRCeUlkRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9k
ZSkgOiBQdXRCeUlkRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSk7CiAgICAgfQogfTsKKwordGVtcGxh
dGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZpdHM8UHV0QnlWYWxGbGFncywgc2l6ZT4gewor
ICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFtZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25l
ZFR5cGU7CisKKyAgICAvLyBQdXRCeVZhbEZsYWdzIGlzIDIgYm9vbGVhbnMgYW5kIGEgMiBiaXQg
ZW51bSwgZW5jb2RlZCBhczoKKyAgICAvLyAgICAgICAgICBpc1N0cmljdAorICAgIC8vICAgICAg
ICAgICAgIHYKKyAgICAvLyAgICAgMDAwMHwwMHwwfDAgPCBpc0RpcmVjdAorICAgIC8vICAgICAg
ICAgICBeCisgICAgLy8gICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCB7MCA9IE5vbmUsIDEgPSBQ
dXQsIDIgPSBDcmVhdGUgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNEaXJlY3RCaXQg
PSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfaXNTdHJpY3RCaXQgPSAyOworICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sgPSAxMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCA9IDI7
CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRCeVZhbEZsYWdzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIFRhcmdldFR5cGUgY29udmVydChQdXRC
eVZhbEZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpKTsKKyAgICAg
ICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5kID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxh
Z3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsKKyAgICAgICAgcmV0dXJuIChwcml2YXRlRmll
bGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KSB8IChpc1N0cmlj
dCA8PCAxKSB8IGlzRGlyZWN0OworICAgIH0KKworICAgIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNv
bnZlcnQoVGFyZ2V0VHlwZSBncGkpCisgICAgeworICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3Rh
dGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVjdEJpdCk7CisgICAgICAgIGF1dG8gaXNTdHJp
Y3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzU3RyaWN0Qml0KTsKKyAgICAgICAgYXV0
byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRlRmllbGRBY2Nlc3NLaW5kPigoZ3BpICYgc19w
cml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4gc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hp
ZnQpOworICAgICAgICBhdXRvIGVjbWFNb2RlID0gaXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0
KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAgICAgIHJldHVybiBhY2Nlc3MgPT0gUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/CisgICAgICAgICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFs
RmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNt
YU1vZGUpIDoKKyAgICAgICAgICAgIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQ
dXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNtYU1vZGUpIDogUHV0
QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKTsKKyAgICB9Cit9
OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNvZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxF
LCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51
bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4gOiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlp
bmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNpbmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5
aW5nX3R5cGVfdDxFPiwgc2l6ZT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCBlMmMxYTQ5YjQzNGMwY2M1MTU4NDk0NDVhY2Q5
ZmVkYmY1OTdhMDM3Li43MDQyNTRiYmI3YTVkYTMxNjkxYjMxMDY2OGJmMzZjYTA0NTRlYzU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50
LmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICB2KEFycmF5
LCBudWxscHRyKSBcCiAgICAgdihhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxs
RnVuY3Rpb24sIG51bGxwdHIpIFwKKyAgICB2KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIp
CiAKIAogI2RlZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1l
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlh
IFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVk
ZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0
QnlWYWxGbGFncyBmbGFncykKK3sKKyAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBp
ZiAoZmxhZ3MuaXNEaXJlY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7
CisgICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCisgICAgICAgIG91dC5wcmludChj
b21tYSwgIlByaXZhdGVGaWVsZCtQdXQiKTsKKyAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRB
ZGQoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlWYWxGbGFncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1ZmZkNzk3ZjY1ODc4NzljMGMzMjE1OWM5NjUw
MjgyODJhMzlmY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIwIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2VudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA6IHVp
bnQ4X3QgeworICAgIE5vbmUsCisgICAgUHV0LAorICAgIENyZWF0ZSwKK307CisKK2NsYXNzIFB1
dEJ5VmFsRmxhZ3MgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFn
cyBjcmVhdGUoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlW
YWxGbGFncyhmYWxzZSwgZWNtYU1vZGUpOworICAgIH0KKworICAgIC8vIEEgZGlyZWN0IHB1dF9i
eV9pZCBtZWFucyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlm
IHRoZQorICAgIC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3RleHBy
IHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKKyAgICB9
CisKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5lUHJpdmF0
ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFs
RmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7CisgICAgfQor
CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZhdGVGaWVs
ZChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdz
KFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOworICAgIH0KKworICAgIGJv
b2wgaXNEaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9CisgICAgRUNNQU1vZGUg
ZWNtYU1vZGUoKSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9CisgICAgUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kOyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpOb25lOyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQ
dXQ7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZTsgfQor
Citwcml2YXRlOgorCisgICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0RpcmVjdCwg
RUNNQU1vZGUgZWNtYU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKKyAgICAg
ICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9u
ZSkKKyAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdGV4cHIgUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2VzcywgRUNN
QU1vZGUgZWNtYU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQorICAgICAgICAsIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChhY2Nlc3MpCisgICAgICAgICwgbV9lY21hTW9kZShlY21h
TW9kZSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0OworICAgIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOworICAgIEVDTUFNb2RlIG1f
ZWNtYU1vZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisK
K2NsYXNzIFByaW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBK
U0M6OlB1dEJ5VmFsRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCmluZGV4IDYxMTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1
YzhhZjY0ODA4MGM0YzYuLmY5MGQ1MjlkMmFlYmIzY2Q5NWM4YjQ1N2I2NDhiNWY3NGI4ZmIxM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcs
NiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJl
Y3QgfTsKK2VudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmll
bGRDcmVhdGUsIERpcmVjdFByaXZhdGVGaWVsZFB1dCB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDViOThhNTQ2ZjE5MmIyZDhmMDYzMGEzYzcx
ODVjNTFmZDE1MTVhNzcuLmY1MTU5YjRkZDFlMTNmOGYwNzVhNmRiZjExNjA3MDI2MjQyYTc3YzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTksNyArNTksNyBAQCBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
KAogICAgIEFTU0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgp
KSk7CiAgICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9
IGV4ZWN1dGFibGUtPmluc3RhbmNlRmllbGRMb2NhdGlvbnMoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAg
IHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJp
bmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENv
bnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIGluc3RhbmNl
RmllbGRMb2NhdGlvbnMpOworICAgICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCks
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBl
OjpOb25lLCBudWxscHRyLCBudWxscHRyLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAg
IGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IGMxOWU2MWM1Mjg5YjdjMTA1ZGY3YzY5ZmY1Nzc0NTVkNDhlNTI0ODIu
LjY1ODA4MGMwMWQ5ZDY1ZWMyMTA4ODAwMjI1OGI0ZjNiMWQ5MDcxNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC0xODg5LDYgKzE4ODksMTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFu
dGlhdGVMZXhpY2FsVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGwKIAogICAg
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgOiBQcm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPmFkZChOb0xvY2tpbmdOZWNlc3NhcnksIGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkpOwor
CisgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlzIGFuIGV2YWwo
KSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBuZWVkZWQuCisg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2
NjYzCisgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTmFtZSgpKQorICAgICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI2
NzYsOSArMjY4MSwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYQogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZh
bChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5
KQoreworICAgIE9wR2V0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0
eSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlz
LCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOworICAgIE9wUHV0QnlWYWxEaXJl
Y3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVh
dGVEaXJlY3QoZWNtYU1vZGUoKSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjcwMCw2
ICsyNzExLDE4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJu
YWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAgICAgcmV0dXJuIHZhbHVlOwog
fQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVs
ZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpCit7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwg
dmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgp
KSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0
aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZh
dGVGaWVsZChlY21hTW9kZSgpKSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1w
bGVyQmVnaW46OmVtaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMzk3ZGRkYzdlNWI4ZjEwMGU5
YTk3ZDdjMzRhNjk2ODY0NjFlNmRkOS4uNTM3NDU2ZGMyMTFmYzVlODI5OTFmMTJkMzU4NjY0NDU4
NjIwMzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzg3LDExICs3ODcsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVy
dHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGly
ZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UHV0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVn
aXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAg
ICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBl
clNhbXBsZXJFbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAzMTI0OTJhY2FiODUxZDI5YTVhYTM0NDFiOGM0OWY1
YmU4NmNkZmE0Li43ZDM3MDgxYWVmYjhkNWM2ZDRiNDU0NzQ2ZWViYzBkOGUwY2VhMjY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC01NDksMTEgKzU0OSwzMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVP
YmplY3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5i
dWlsdGluTmFtZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUoKSwgaG9tZU9iamVjdCk7CiB9CiAK
K3ZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzY29wZSkKK3sKKyAgICAvLyBX
YWxrIHRoZSBsaXN0IGFuZCBkZWNsYXJlIGFueSBQcml2YXRlIHByb3BlcnR5IG5hbWVzIChlLmcu
IGAjZm9vYCkgaW4gdGhlIHByb3ZpZGVkIHNjb3BlLgorICAgIGZvciAoUHJvcGVydHlMaXN0Tm9k
ZSogcCA9IHRoaXM7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgY29uc3QgUHJvcGVydHlO
b2RlJiBub2RlID0gKnAtPm1fbm9kZTsKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVy
dHlOb2RlOjpQcml2YXRlKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRl
UHJpdmF0ZVN5bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBM
aW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgICAgICAgICAgQ2Fs
bEFyZ3VtZW50cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAwKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVk
KCkpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN5bWJvbCA9IGdlbmVyYXRvci5l
bWl0Q2FsbChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQcml2YXRl
U3ltYm9sLmdldCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBhcmd1bWVudHMsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIERlYnVn
Z2FibGVDYWxsOjpObyk7CisKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZSgqbm9kZS5uYW1lKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Nj
b3BlKHNjb3BlLCB2YXIsIHN5bWJvbC5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRp
YWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9
CisKIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3Rl
cklEKiBwcm90b3R5cGUsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpCiB7Ci0gICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3Vs
YXIgdmFsdWUgcHJvcGVydGllcy4KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKICAg
ICBSZWdpc3RlcklEKiBkc3QgPSBudWxscHRyOworCisgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxv
b3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KICAgICBmb3IgKDsgcCAm
JiAocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1f
bmV4dCkgewogICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5
KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCkBAIC03MTUsNiArNzM0LDkgQEAg
UmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKIAogdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0
Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBuZXdPYmosIFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBh
cmUgaGFuZGxlZCBpbiB0aGUgc3ludGhldGljIGluc3RhbmNlRmllbGRJbml0aWFsaXplciBmdW5j
dGlvbiwgbm90IGhlcmUuCisgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6
OlByaXZhdGUpKTsKKwogICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZ2VuZXJhdG9y
LnNob3VsZFNldEZ1bmN0aW9uTmFtZShub2RlLm1fYXNzaWduKTsKIAogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9wZXJ0eU5hbWU7CkBAIC04NDUsMTYgKzg2Nyw2NiBAQCBSZWdpc3RlcklEKiBE
b3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcgogICAgIH0KIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0g
ICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFs
dWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1f
aWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiBy
ZXQgPSBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZpbmFsRGVzdC5nZXQoKSwgYmFz
ZS5nZXQoKSk7CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdC5nZXQo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQogCitSZWdp
c3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8
UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7Cisg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVz
IG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJp
dmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBw
cml2YXRlTmFtZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUo
KSkgeworICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdl
bmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZHN0LCBiYXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVn
aXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVy
dHlWYWx1ZShnZW5lcmF0b3IsIGRzdCwgYmFzZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJ
RCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVy
SUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBW
YXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJl
IHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1l
LmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLCBwcml2YXRlTmFtZS5n
ZXQoKSwgdmFsdWUpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsK
KyAgICAgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0
b3IuZW5zdXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJh
c2UsIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUpOworICAgIH0KKworICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgbV9pZGVudCwgdmFsdWUpOworfQorCitSZWdp
c3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRQdXRQcm9wZXJ0eShn
ZW5lcmF0b3IsIGJhc2UsIHZhbHVlLCB0aGlzVmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQXJndW1lbnRMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBSZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMTczOCwxMSAr
MTgxMCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE9wdGlvbmFsQ2hlY2soY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7CiAgICAgfQog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1
YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGlmIChiYXNlSXNT
dXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJCYXNlID0gZW1pdFN1cGVy
QmFzZUZvckNhbGxlZShnZW5lcmF0b3IpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZnVuY3Rpb24uZ2V0KCksIHN1cGVyQmFzZS5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7
CisKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVy
QmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKTsK
KyAgICBlbWl0R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZ1bmN0aW9uLmdldCgpLCBiYXNl
LmdldCgpKTsKIAogICAgIGlmIChpc09wdGlvbmFsQ2hhaW5CYXNlKCkpCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0T3B0aW9uYWxDaGVjayhmdW5jdGlvbi5nZXQoKSk7CkBAIC0yMDYzLDYgKzIxMzMs
MjIgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGJhc2VOb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0
KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKKworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQ
cml2YXRlTmFtZSgpKSB7CisgICAgICAgIEFTU0VSVCghYmFzZUlzU3VwZXIpOworICAgICAgICBW
YXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2
YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZh
dGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RH
ZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1l
LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJ
bmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUu
Z2V0KCksIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5n
ZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShk
c3QsIG9sZFZhbHVlLmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFzZUlzU3Vw
ZXIpIHsKQEAgLTIyODYsNiArMjM3MiwyMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0
RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFj
Y2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAgICBSZWdp
c3RlcklEKiB2YWx1ZTsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgewor
ICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgVmFyaWFi
bGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFt
ZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAg
ICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBi
YXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIGVtaXRJbmNPckRlYyhnZW5l
cmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwg
dmFsdWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBw
cm9wRHN0LmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVl
OwogICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkgewogICAgICAgICB0aGlzVmFsdWUg
PSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwpAQCAtMzEyOCwxMSArMzIyOSw3IEBAIFJlZ2lzdGVy
SUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklECiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRv
ci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKSA/IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVz
dGluYXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsKLSAgICBpZiAobV9iYXNlLT5p
c1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFz
ZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1f
aWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOworICAgIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0
b3IsIGJhc2UuZ2V0KCksIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdC5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsK
IH0KQEAgLTMxNDQsMjMgKzMyNDEsMTUgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lk
ZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRv
cikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2
b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7
Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICB0aGlzVmFsdWUgPSBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1
ZS5nZXQoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwg
bV9pZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZW1pdEdldFByb3BlcnR5
VmFsdWUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIHRoaXNWYWx1ZSk7CisKICAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVh
ZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJh
bmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlw
dG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1f
YmFzZS0+aXNTdXBlck5vZGUoKSkKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlk
KGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBt
X2lkZW50LCB1cGRhdGVkVmFsdWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXQgPSBlbWl0
UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLmdldCgpLCB1cGRhdGVkVmFsdWUsIHRoaXNWYWx1
ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmV0LmdldCgp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2hvcnRDaXJjdWl0UmVh
ZE1vZGlmeURvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2
MjQsNiArNDcxMywxNyBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5
TmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJh
dG9yOjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdy
aXRhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3NpdGlv
bik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlw
ZTo6UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlh
YmxlKCptX2lkZW50KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCks
ICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxl
cyIpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwg
cG9zaXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQtPmxlbmd0aCgpKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShw
cml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdERlZmluZVByaXZhdGVGaWVsZChnZW5lcmF0b3IudGhp
c1JlZ2lzdGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1l
OiB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFz
cyBmaWVsZHMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5ODMzMApAQCAtNDYzNCw3ICs0NzM0LDcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJDb21wdXRlZCBuYW1lcyBt
dXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkg
KyAxKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRS
ZXNvbHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHBy
aXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1f
cG9zaXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CkBAIC00NzI3LDYgKzQ4
MjcsOCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERl
ZmluZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0
KCksIHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CiAK
ICAgICBpZiAobV9jbGFzc0VsZW1lbnRzKSB7CisgICAgICAgIG1fY2xhc3NFbGVtZW50cy0+ZW1p
dERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhnZW5lcmF0b3IsIGdlbmVyYXRvci5zY29wZVJlZ2lz
dGVyKCkpOworCiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gaW5zdGFuY2VGaWVsZExv
Y2F0aW9uczsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVDbGFzc0VsZW1lbnRzKG1fY2xh
c3NFbGVtZW50cywgY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgaW5zdGFuY2VG
aWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmICghaW5zdGFuY2VGaWVsZExvY2F0aW9ucy5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggOGFkNGJjMDc5Y2Y4MTI2N2FiNWUxN2QxYjI0OGM0N2MxYWU4Y2Q2ZS4uNDM5
MTljNjRlNWEyNjJlYmQwZGI4ZTZjYzkwMWEwOThhY2Q1NGM1OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcyLDYgKzcyLDcgQEAK
ICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3Mu
aCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5o
IgogI2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50
LmgiCiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTEyNjksNiArMTI3MCwxOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNv
ZGUgYnl0ZWNvZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Cit9CisKK3Rl
bXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVj
dD4oT3BQdXRCeVZhbERpcmVjdCBieXRlY29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9m
bGFncy5lY21hTW9kZSgpOworfQorCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2Nh
dGVUYXJnZXRhYmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFT
U0VSVChieXRlY29kZUluZGV4KTsKQEAgLTgxOTQsNyArODIwNyw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9z
ckV4aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0g
ICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1i
ZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBieXRlY29k
ZS5tX2VjbWFNb2RlKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ciwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JF
eGl0SW5kZXgsIGVjbWFNb2RlKGJ5dGVjb2RlKSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxl
ZEFzUHV0QnlJZCkgewpAQCAtODIwNSw3ICs4MjE4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdElu
ZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGls
ZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9HcmFw
aChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwgT3BJ
bmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7Cisg
ICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0
IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oZWNtYU1vZGUo
Ynl0ZWNvZGUpKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFuZCBQ
dXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQgc3Rh
dGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA2NTMy
OWY1YzQ1ZjQzMTU4M2YzOWUxZjAwN2U0ZTA2NTM5ZTU5NDc1Li5iMGY0Y2RlZmVkZmRjZjQxY2I1
Nzg4YzFiZDJhNWJiNWNhZjZlNWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTcsNiArMjk3LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IEkKIAogICAgIGNhc2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9y
X2ZyYW1lX2Vudmlyb25tZW50OgorICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF9kaXJlY3Q6IC8vIEZJ
WE1FOiBvcF9nZXRfYnlfdmFsX2RpcmVjdCB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRvIHNo
aXAgY2xhc3MgZmllbGRzLgogICAgIGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAgICBj
YXNlIGxsaW50X2V2YWxfcHJvbG9ndWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3JhbV9w
cm9sb2d1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggZmEyOGYzOTMwZDRkODJlZTY4Y2QwMjg3MGZjMTY4N2QwMmMyNTkyYy4uOTNj
YzZmYjA3ZGQ2N2QxM2MzZGM0ZmFkNTBiZGYyZDk2ZDBhMTMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MjA0LDcgKzE0MjA0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
bigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1c2Vk
UmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
YmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtp
bmQpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6Tm9uZSk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA1
MmE2OTlmZmM5Y2U2YjgzYWIwNGZjYmQzMDc0M2YwNDY0Y2E0MjM0Li43NzdjNGQ0OGUwODk2NzUw
NDM0ZGVkOTQzMzBhNGUwOWQ2OWVmMThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MjA0LDcgKzQyMDQsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxlUmVn
aXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86OnBh
dGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAg
ICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3RE
aXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOwogCiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0b3IvRFNMLnJiCmluZGV4IDk0ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIxMGM4
MzEuLmQ5NjU4NWIxMDU3NzhlN2Q1MDE1YjBiNmM3Yzc1Y2NjYTIwNTlmMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDEsNiArMTQxLDcgQEAgbW9kdWxlIERT
TAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNpbmNs
dWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVk
ZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0lDU3RhdHMuaAppbmRleCA5MDQwZGYzODIwNzY0ZWRmOGQ1MTYxMWY4NjBmYzRkNDI2NTZjMTQ5
Li45NmMxOWExN2JkYzJhN2QxMGYxNWY5YmNhMzkwMjE2MjFjOTlkYjgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0lDU3RhdHMuaApAQCAtNjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8o
T3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9wZXJh
dGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKKyAgICBtYWNybyhPcGVyYXRp
b25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSkgXAorICAgIG1h
Y3JvKE9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplKSBc
CiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlkUmVw
bGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCmluZGV4IDk0YjBlNTY2MTM4MTJlZWVmMzZkYjFhOTIyMzY0MjNkMzg3
Mzk3NzcuLjMwYmQ1MjljM2U0ZDIyYTJlZDFmNjc4OTliNDBhZDE0MTE1ZjMwYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9zY29w
ZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiAg
ICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAgICAgICBERUZJ
TkVfU0xPV19PUChnZXRfYnlfdmFsX2RpcmVjdCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0
X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X3ZhbF93aXRo
X3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5n
X2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMzRmM2Q1MGYw
NGJjMmI5NmUwZjk1OWM3YzZiNTUzZjc0NzAwNTUxZC4uNjY5ODM2MjhlMmQ2NTBhNWVhZGUwYjNm
NjI4YmY3ZDQwNTg1NmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00MDEsNyArNDAx
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAg
ICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CiAKLSAgICAgICAgLy8gSWRlbnRpZmllciBj
aGVjayBoZWxwZXIgZm9yIFB1dEJ5VmFsLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
KyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOworCisgICAgICAgIC8vIERldGVybWluZXMg
dGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworCisgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sg
aGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFs
SWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggMjI2ZTZiNzk4NTFiNjFiY2NiZDUxMDdjZmE1
ZmNjMzAyNjBlNzk1Yi4uMDVjNzUxNWRkNTRjM2RjY2ZiZTRhMDM0ZGNlMDEyNTljNmUwZTRmMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKQEAgLTEzNywxMSArMTM3LDExIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAg
RUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoCi0gICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQotICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1
dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAg
ICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5k
KQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9
CkBAIC0xNTMsNiArMTUzLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgeworICAg
ICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFN
b2RlLmlzU3RyaWN0KCkpOworICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAg
fQorCiAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAobV9wdXRL
aW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggZjAzZTA5MjUzODU0MWZiMDM0MGYxMmM2YmE4YTYx
MTExZjMzNjc3NS4uZWJmY2I1NTk2NDA5OGM2MjRiMDI4ZmQ3ZmRhMDlmN2M2NDE0ZWMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1
dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJT
ZXQuaCIKIApAQCAtMTMwLDExICsxMzEsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKKyAgICAgICAg
LCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkK
ICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwg
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKICAgICAKICAgICB2b2lkIGdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0Myw2ICsxNDUsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAgUHV0S2lu
ZCBtX3B1dEtpbmQ7CisgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CmluZGV4IDliNmMwNTI0OGJhMjkyOTZmOTllZDM3NmZiOTQ4MjhmYmM5MzNjYmYuLmQ1M2U2OTc3
ZDM5ZDc1OWU2NzQxMmZkOWFkMWI5ZTY3ODJiOTdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCkBAIC02ODYsNiArNjg2LDM2IEBAIEFMV0FZU19JTkxJTkUgQmluYXJ5
QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQog
ICAgIHJldHVybiBhcml0aFByb2ZpbGU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wPgorQUxX
QVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlKE9wIG9wKQoreworICAgIHJldHVybiBv
cC5tX2VjbWFNb2RlOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJ
VDo6ZWNtYU1vZGU8T3BQdXRCeUlkPihPcFB1dEJ5SWQgb3ApCit7CisgICAgcmV0dXJuIG9wLm1f
ZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9k
ZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCit7
CisgICAgcmV0dXJuIG9wLm1fZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgT3A+CitQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChPcCkKK3sKKyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsKK30KKwor
dGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9w
KQoreworICAgIHJldHVybiBvcC5tX2ZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOTdmNGRjMDdhNWY5YmU3
NWI4MzY2NzBmYzcyN2U2MjZhNDJmMjBlOS4uNTdhNWJmMzIwYjY3YTRiZTRhZjcxZTYzNDJkMTY0
N2VkNjFlZDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC03MTEsNiArNzExLDExNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAg
ICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3Ry
dWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKK30gLy8g
ZXh0ZXJuICJDIgorCit1c2luZyBQdXRQcml2YXRlRmllbGRDYWxsYmFjayA9IHN0ZDo6ZnVuY3Rp
b248dm9pZChWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSosIFB1dFByb3BlcnR5U2xvdCYsIGNv
bnN0IElkZW50aWZpZXImKT47CitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dFByaXZhdGVG
aWVsZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sg
PSBQdXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRl
TmFtZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Cisg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwor
CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2Nr
LT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHB1dFNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNr
KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxs
YmFjaygpKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVy
LnVpZCgpKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworCisgICAgUHV0UHJvcGVydHlTbG90
IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsK
KyAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBpZGVudCwg
dmFsdWUsIHB1dFNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKHZtLCBjb2RlQmxvY2ssIG9s
ZFN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitleHRlcm4gIkMiIHsKKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qg
cmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIGRlZmluZVByaXZh
dGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmll
ciwgdmFsdWUpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmlu
ZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0Jp
dHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworCisg
ICAgZGVmaW5lUHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9i
amVjdCwgaWRlbnRpZmllciwgdmFsdWUsIFs9XShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0
LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOwor
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOworCisgICAgICAgIGlmIChz
dHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBp
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpz
dHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICB9KTsKK30KKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3
Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworCisg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVs
ZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFs
dWUpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7
CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZp
ZXIpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwg
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBb
Jl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkRmll
bGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNs
b3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vz
c1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpKTsKKworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZt
LCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBh
dGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0
dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFB1
dCk7CisgICAgfSk7Cit9CisKIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1
ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKaW5kZXggOWVhM2NiZDkzNGViNDczNjk3MWQ2ZjllMWIyN2U3ODE4OGQ0
NjQxMC4uNjY3MDVlNDU5OGFmOTY3ZTA5MjA1MjY4NTgxNzU3YTk4N2JhYWY4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE4OCw2ICsxODgsMTAgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWIKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkTm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggYTQwODA1OTM2
NTBhNmVjNTY4YWE2MTA2OTE3ZmU5N2IzOGYxMzM4Yi4uOGU4ZjNhZGJmN2FhZjM4ZTA4Y2Y2N2Vi
MTQzNGM0N2VjOTI2NTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI4Nyw3ICsyODcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFt
ZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBieXRlY29kZS5tX2VjbWFNb2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtp
bmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91
dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5j
b25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2Ug
Y29kZSBzaXplLgpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAg
ICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAg
ICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CisgICAgICAgIGVjbWFNb2RlID0gSklU
OjplY21hTW9kZShieXRlY29kZSk7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTY3
MCw4ICs2NzAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUo
Ynl0ZWNvZGUpLAorICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmlu
ZGV4IDQwOTFjNDRmN2Q3MTdmYzJiM2EwMWIyNDExMmVmYThkMzdhOWY1MDUuLjYzZWE5NzFhYmZl
MGIwNGFjNTZjNjAzYjFlMzdiYzcyMDhmMTRlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtMzc4LDcgKzM3OCw3
IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3Ag
Ynl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxs
U2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgYnl0ZWNvZGUubV9l
Y21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSks
IHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2Vu
ZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOwogCkBA
IC00MDcsNyArNDA3LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZTsKKyAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5
dGVjb2RlKTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtNjE2LDcgKzYxNiw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLAotICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJl
Y3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFn
cy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggMThiZDZlNDUzZThkNjA1NzBiOTNiMTI0N2ViNjViODJlZjIz
ZWU2Ny4uMGU4ZjA5NmZjZWFmMWJhYTQ3MDlmMTk1ZDY0ZDhhYTg5MmQ4YzVhMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01MjAsNiArNTIwLDEwIEBAIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpCiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3Q7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVs
ZENyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0
ZUZpZWxkU3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQ
dXQpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0
cmljdDsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7CiAgICAgfQogICAg
IGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTUzMiw2ICs1MzYsMTAgQEAgc3RhdGljIGF1dG8g
YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xv
dCAmc2xvdCwgUHUKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRl
RmllbGRDcmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQ
cml2YXRlRmllbGRQdXQpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdE9wdGltaXplOwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC02
MjUsNiArNjMzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWlu
OwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNl
dDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1
dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAgICAg
YXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBi
YXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY0Miw2
ICs2NTEsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IERp
cmVjdFByaXZhdGVGaWVsZENyZWF0ZSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0g
Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBwcm9w
ZXJ0eU5hbWUsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNl
dCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxl
U2V0dGVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggNzEyNWJkNGY1MWFmODE1YjlkNTA2NjFlYjdhM2My
NDFhNWFkNjAzYi4uNzU2OGQyMzZkM2FmYjVmYzE0YTYzODc0NTE4NzZmODk5MmY5NDY3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA3NTlj
MTMyNzBlNThjNjQ0MWFjZjIxYjJmMmQ4YzU1OGRlOWE4NTMxLi45ZWQ2ZDU3MTFkMWM3NDc3NGY5
OGE2MWUwOWQyZWU0YWRhZGJiZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTExMjIsMTUgKzExMjIsMTggQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUg
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9B
U1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwogICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0g
YXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1f
ZWNtYU1vZGUuaXNTdHJpY3QoKTsKKyAgICBib29sIGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpOworICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nl
c3MgPSBieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWNjZXNzKCk7CiAgICAgaWYgKExJ
S0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKICAgICAgICAgLy8gRGVzcGl0ZSBpdHMgbmFt
ZSwgSlNWYWx1ZTo6aXNVSW50MzIgd2lsbCByZXR1cm4gdHJ1ZSBvbmx5IGZvciBwb3NpdGl2ZSBi
b3hlZCBpbnQzMl90OyBhbGwgdGhvc2UgdmFsdWVzIGFyZSB2YWxpZCBhcnJheSBpbmRpY2VzLgog
ICAgICAgICBBU1NFUlQoaXNJbmRleChzdWJzY3JpcHQuYXNVSW50MzIoKSkpOworICAgICAgICBB
U1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHQuYXNVSW50MzIoKSwgdmFsdWUsIDAsIGlz
U3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCiAgICAgaWYgKHN1
YnNjcmlwdC5pc0RvdWJsZSgpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nl
c3MpOwogICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3Vi
bGUoKTsKICAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOwogICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3Vi
bGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsK
QEAgLTExNDQsOSArMTE0NywxOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbF9kaXJlY3QpCiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkp
KQogICAgICAgICBMTElOVF9FTkQoKTsKIAorICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVO
YW1lKCkgPT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJf
dD4gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0
RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJp
Y3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxk
Tm90VGhyb3cpOwogICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3Mp
IHsKKyAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0
TW9kZSk7CisgICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFk
ZCgpKQorICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9i
YWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHksIHZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9
CisKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2Rl
KTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2Jh
bE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCmluZGV4IDU3ZTM5ODJiODM5ZWFmOWVhOThjZjQ4MjkwZDYxNDIzMjA0NGE1YTYu
LjZlM2I0MmQ4ZThjNTI1NzJhMzE3MzA4NDlkMTBiYWE4M2VjOTVkNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCkBAIC0xNTE5LDg0ICsxNTE5LDg5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5
X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAKIGVu
ZCkKIAorbWFjcm8gZ2V0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIHNsb3dQYXRo
TmFtZSwgb3NyRXhpdFBvaW50KQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5h
bWUlLCAlb3Bjb2RlU3RydWN0JSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCisgICAgICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHRQYXlsb2Fk
LCBzY3JhdGNoKQorICAgICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQorICAgICAgICAgICAg
c3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQorICAgICAgICAgICAg
c3RvcmVpIHJlc3VsdFBheWxvYWQsIFBheWxvYWRPZmZzZXRbY2ZyLCBzY3JhdGNoLCA4XQorICAg
ICAgICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCBtX3Byb2ZpbGUsIHQ1LCBJbnQz
MlRhZywgcmVzdWx0UGF5bG9hZCkKKyAgICAgICAgICAgIGRpc3BhdGNoKCkKKyAgICAgICAgZW5k
CiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAgbWFjcm8gZmluaXNo
SW50R2V0QnlWYWwocmVzdWx0UGF5bG9hZCwgc2NyYXRjaCkKLSAgICAgICAgZ2V0KG1fZHN0LCBz
Y3JhdGNoKQotICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHNjcmF0Y2gs
IDhdCi0gICAgICAgIHN0b3JlaSByZXN1bHRQYXlsb2FkLCBQYXlsb2FkT2Zmc2V0W2Nmciwgc2Ny
YXRjaCwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUs
IEludDMyVGFnLCByZXN1bHRQYXlsb2FkKQotICAgICAgICBkaXNwYXRjaCgpCi0gICAgZW5kCisg
ICAgICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0
Y2gyLCBzY3JhdGNoMykKKyAgICAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaDEpCisgICAgICAg
ICAgICBmZDJpaSByZXN1bHQsIHNjcmF0Y2gyLCBzY3JhdGNoMworICAgICAgICAgICAgc3RvcmVp
IHNjcmF0Y2gzLCBUYWdPZmZzZXRbY2ZyLCBzY3JhdGNoMSwgOF0KKyAgICAgICAgICAgIHN0b3Jl
aSBzY3JhdGNoMiwgUGF5bG9hZE9mZnNldFtjZnIsIHNjcmF0Y2gxLCA4XQorICAgICAgICAgICAg
dmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCBtX3Byb2ZpbGUsIHQ1LCBzY3JhdGNoMywgc2Ny
YXRjaDIpCisgICAgICAgICAgICBkaXNwYXRjaCgpCisgICAgICAgIGVuZAogCi0gICAgbWFjcm8g
ZmluaXNoRG91YmxlR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNjcmF0Y2gz
KQotICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gxKQotICAgICAgICBmZDJpaSByZXN1bHQsIHNj
cmF0Y2gyLCBzY3JhdGNoMwotICAgICAgICBzdG9yZWkgc2NyYXRjaDMsIFRhZ09mZnNldFtjZnIs
IHNjcmF0Y2gxLCA4XQotICAgICAgICBzdG9yZWkgc2NyYXRjaDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCBzY3JhdGNoMSwgOF0KLSAgICAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmls
ZSwgdDUsIHNjcmF0Y2gzLCBzY3JhdGNoMikKKyAgICAgICAgbWV0YWRhdGEodDUsIHQyKQorICAg
ICAgICBnZXQobV9iYXNlLCB0MikKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQoc2l6ZSwgdDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgICAgIG1vdmUg
dDAsIHQyCisgICAgICAgIGFycmF5UHJvZmlsZSglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
YXJyYXlQcm9maWxlLCB0MiwgdDUsIHQxKQorICAgICAgICBnZXQobV9wcm9wZXJ0eSwgdDMpCisg
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQzLCBJbnQzMlRhZywg
dDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICAgICAgbG9hZHAgSlNPYmplY3Q6Om1fYnV0dGVyZmx5
W3QwXSwgdDMKKyAgICAgICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKKyAgICAgICAgYmll
cSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXMKKyAgICAgICAgYmluZXEg
dDIsIENvbnRpZ3VvdXNTaGFwZSwgLm9wR2V0QnlWYWxOb3RDb250aWd1b3VzCisKKyAgICAub3BH
ZXRCeVZhbElzQ29udGlndW91czoKKyAgICAgICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdI
ZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdl
dEJ5VmFsU2xvdworICAgICAgICBsb2FkaSBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICAg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgICAgICBqbXAgLm9wR2V0
QnlWYWxEb25lCisKKyAgICAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXM6CisgICAgICAgIGJpbmVx
IHQyLCBEb3VibGVTaGFwZSwgLm9wR2V0QnlWYWxOb3REb3VibGUKKyAgICAgICAgYmlhZXEgdDEs
IC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1Ymxp
Y0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdworICAgICAgICBsb2FkZCBbdDMsIHQxLCA4XSwg
ZnQwCisgICAgICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcEdldEJ5VmFsU2xvdworICAgICAgICAj
IEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hc3NpdmVseSBvcHRpbWl6ZWQuCisgICAgICAgIGZkMmlp
IGZ0MCwgdDEsIHQyCisgICAgICAgIGdldChtX2RzdCwgdDApCisgICAgICAgIGptcCAub3BHZXRC
eVZhbE5vdEVtcHR5CisKKyAgICAub3BHZXRCeVZhbE5vdERvdWJsZToKKyAgICAgICAgc3ViaSBB
cnJheVN0b3JhZ2VTaGFwZSwgdDIKKyAgICAgICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdl
U2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGJpYWVx
IHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52
ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgbG9hZGkgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgICAgICBsb2FkaSBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorCisg
ICAgLm9wR2V0QnlWYWxEb25lOgorICAgICAgICBnZXQobV9kc3QsIHQwKQorICAgICAgICBiaWVx
IHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICAub3BHZXRCeVZhbE5vdEVt
cHR5OgorICAgICAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgICAgICBz
dG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICAgICAgdmFsdWVQcm9maWxl
KCVvcGNvZGVTdHJ1Y3QlLCBtX3Byb2ZpbGUsIHQ1LCB0MiwgdDEpCiAgICAgICAgIGRpc3BhdGNo
KCkKLSAgICBlbmQKIAotICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICBnZXQobV9iYXNlLCB0MikK
LSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MiwgQ2VsbFRhZywgdDAs
IC5vcEdldEJ5VmFsU2xvdykKLSAgICBtb3ZlIHQwLCB0MgotICAgIGFycmF5UHJvZmlsZShPcEdl
dEJ5VmFsOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUsIHQyLCB0NSwgdDEpCi0gICAgZ2V0KG1f
cHJvcGVydHksIHQzKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQz
LCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKLSAgICBsb2FkcCBKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDBdLCB0MwotICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCi0gICAgYmll
cSB0MiwgSW50MzJTaGFwZSwgLm9wR2V0QnlWYWxJc0NvbnRpZ3VvdXMKLSAgICBiaW5lcSB0Miwg
Q29udGlndW91c1NoYXBlLCAub3BHZXRCeVZhbE5vdENvbnRpZ3VvdXMKLQotLm9wR2V0QnlWYWxJ
c0NvbnRpZ3VvdXM6Ci0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRl
eGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwot
ICAgIGxvYWRpIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgotICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDMsIHQxLCA4XSwgdDEKLSAgICBqbXAgLm9wR2V0QnlWYWxEb25lCi0KLS5vcEdldEJ5VmFs
Tm90Q29udGlndW91czoKLSAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUsIC5vcEdldEJ5VmFsTm90
RG91YmxlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hl
YWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGxv
YWRkIFt0MywgdDEsIDhdLCBmdDAKLSAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNs
b3cKLSAgICAjIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hc3NpdmVseSBvcHRpbWl6ZWQuCi0gICAg
ZmQyaWkgZnQwLCB0MSwgdDIKLSAgICBnZXQobV9kc3QsIHQwKQotICAgIGptcCAub3BHZXRCeVZh
bE5vdEVtcHR5Ci0KLS5vcEdldEJ5VmFsTm90RG91YmxlOgotICAgIHN1YmkgQXJyYXlTdG9yYWdl
U2hhcGUsIHQyCi0gICAgYmlhIHQyLCBTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0
b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZQotICAgIGJpYWVxIHQxLCAt
c2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JM
ZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVj
dG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCi0gICAgbG9hZGkgQXJyYXlTdG9yYWdlOjpt
X3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKLQotLm9wR2V0QnlWYWxEb25l
OgotICAgIGdldChtX2RzdCwgdDApCi0gICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0
QnlWYWxTbG93Ci0ub3BHZXRCeVZhbE5vdEVtcHR5OgotICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCi0gICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0g
ICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmlsZSwgdDUsIHQyLCB0MSkKLSAgICBk
aXNwYXRjaCgpCisgICAgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFnZTogICAKKyAgICAgICAg
Z2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJs
ZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCiAKLS5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3Jh
Z2U6Ci0gICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZp
bmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgLm9wR2V0QnlWYWxTbG93
OgorICAgICAgICBjYWxsU2xvd1BhdGgoc2xvd1BhdGhOYW1lKQorICAgICAgICBkaXNwYXRjaCgp
CiAKLS5vcEdldEJ5VmFsU2xvdzoKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9n
ZXRfYnlfdmFsKQotICAgIGRpc3BhdGNoKCkKKyAgICAub3NyUmV0dXJuUG9pbnQ6CisgICAgICAg
IG9zckV4aXRQb2ludChzaXplLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIGVuZCkKK2VuZAogCi0u
b3NyUmV0dXJuUG9pbnQ6CitnZXRCeVZhbE9wKGdldF9ieV92YWwsIE9wR2V0QnlWYWwsIF9sbGlu
dF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCwgbWFjcm8oc2l6ZSwgbWV0YWRhdGEsIHJldHVybikKICAg
ICBnZXR0ZXJTZXR0ZXJPU1JFeGl0UmV0dXJuUG9pbnQob3BfZ2V0X2J5X3ZhbCwgc2l6ZSkKICAg
ICBtZXRhZGF0YSh0MiwgdDMpCiAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWwsIG1fcHJvZmls
ZSwgdDIsIHIxLCByMCkKICAgICByZXR1cm4ocjEsIHIwKQotCiBlbmQpCiAKK2dldEJ5VmFsT3Ao
Z2V0X2J5X3ZhbF9kaXJlY3QsIE9wR2V0QnlWYWxEaXJlY3QsIF9zbG93X3BhdGhfZ2V0X2J5X3Zh
bF9kaXJlY3QsIG1hY3JvKGEsIGIsIGMpIGVuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRh
KG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNjU1OTJlODI0ZDY0MDgxZDA3M2Ni
NjMyMTBhYzY2MzY4ODc3ZjFkMS4uYmYxMjQ0MDJjN2NlYzY3NzRkNTU4Zjc1MjFiYmNmNzQ0ZDQy
M2UzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE1NjUsOTAgKzE1NjUsOTMgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXQKIAogZW5kKQogCittYWNybyBnZXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0
cnVjdCwgc2xvd1BhdGhOYW1lKQorICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5h
bWUlLCAlb3Bjb2RlU3RydWN0JSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRh
LCByZXR1cm4pCisgICAgICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkK
KyAgICAgICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKKyAgICAgICAgICAgIHN0b3JlcSByZXN1
bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCisgICAgICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0
cnVjdCUsIG1fcHJvZmlsZSwgdDUsIHJlc3VsdCkKKyAgICAgICAgICAgIGRpc3BhdGNoKCkKKyAg
ICAgICAgZW5kCiAKLWxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCi0gICAgbWFj
cm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQotICAgICAgICBnZXQobV9kc3QsIHNj
cmF0Y2gpCi0gICAgICAgIHN0b3JlcSByZXN1bHQsIFtjZnIsIHNjcmF0Y2gsIDhdCi0gICAgICAg
IHZhbHVlUHJvZmlsZShPcEdldEJ5VmFsLCBtX3Byb2ZpbGUsIHQ1LCByZXN1bHQpCi0gICAgICAg
IGRpc3BhdGNoKCkKLSAgICBlbmQKKyAgICAgICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVz
dWx0LCBzY3JhdGNoKQorICAgICAgICAgICAgb3JxIG51bWJlclRhZywgcmVzdWx0CisgICAgICAg
ICAgICBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCisgICAgICAgIGVuZAogCi0gICAg
bWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQotICAgICAgICBvcnEgbnVt
YmVyVGFnLCByZXN1bHQKLSAgICAgICAgZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQot
ICAgIGVuZAorICAgICAgICBtYWNybyBmaW5pc2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0
Y2gxLCBzY3JhdGNoMiwgdW51c2VkKQorICAgICAgICAgICAgZmQycSByZXN1bHQsIHNjcmF0Y2gx
CisgICAgICAgICAgICBzdWJxIG51bWJlclRhZywgc2NyYXRjaDEKKyAgICAgICAgICAgIGZpbmlz
aEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKKyAgICAgICAgZW5kCiAKLSAgICBtYWNybyBm
aW5pc2hEb3VibGVHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgdW51c2VkKQot
ICAgICAgICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEKLSAgICAgICAgc3VicSBudW1iZXJUYWcsIHNj
cmF0Y2gxCi0gICAgICAgIGZpbmlzaEdldEJ5VmFsKHNjcmF0Y2gxLCBzY3JhdGNoMikKLSAgICBl
bmQKKyAgICAgICAgbWV0YWRhdGEodDUsIHQyKQogCi0gICAgbWV0YWRhdGEodDUsIHQyKQorICAg
ICAgICBnZXQobV9iYXNlLCB0MikKKyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwo
c2l6ZSwgdDIsIHQwLCAub3BHZXRCeVZhbFNsb3cpCiAKLSAgICBnZXQobV9iYXNlLCB0MikKLSAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MiwgdDAsIC5vcEdldEJ5VmFsU2xv
dykKLQotICAgIG1vdmUgdDAsIHQyCi0gICAgYXJyYXlQcm9maWxlKE9wR2V0QnlWYWw6Ok1ldGFk
YXRhOjptX2FycmF5UHJvZmlsZSwgdDIsIHQ1LCB0MSkKLQotICAgIGdldChtX3Byb3BlcnR5LCB0
MykKLSAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRC
eVZhbFNsb3cpCi0gICAgc3hpMnEgdDEsIHQxCi0KLSAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2Jq
ZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCi0gICAgbW92ZSBUYWdOdW1iZXIs
IG51bWJlclRhZwotCi0gICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKLSAgICBiaWVxIHQy
LCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwotICAgIGJpbmVxIHQyLCBDb250
aWd1b3VzU2hhcGUsIC5vcEdldEJ5VmFsTm90Q29udGlndW91cwotCi0ub3BHZXRCeVZhbElzQ29u
dGlndW91czoKLSAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5n
SGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93Ci0gICAg
Z2V0KG1fZHN0LCB0MCkKLSAgICBsb2FkcSBbdDMsIHQxLCA4XSwgdDIKLSAgICBidHF6IHQyLCAu
b3BHZXRCeVZhbFNsb3cKLSAgICBqbXAgLm9wR2V0QnlWYWxEb25lCi0KLS5vcEdldEJ5VmFsTm90
Q29udGlndW91czoKLSAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUsIC5vcEdldEJ5VmFsTm90RG91
YmxlCi0gICAgYmlhZXEgdDEsIC1zaXplb2YgSW5kZXhpbmdIZWFkZXIgKyBJbmRleGluZ0hlYWRl
cjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0M10sIC5vcEdldEJ5VmFsU2xvdwotICAgIGdldCht
X2RzdCwgdDApCi0gICAgbG9hZGQgW3QzLCB0MSwgOF0sIGZ0MAotICAgIGJkbmVxdW4gZnQwLCBm
dDAsIC5vcEdldEJ5VmFsU2xvdwotICAgIGZkMnEgZnQwLCB0MgotICAgIHN1YnEgbnVtYmVyVGFn
LCB0MgotICAgIGptcCAub3BHZXRCeVZhbERvbmUKLSAgICAKLS5vcEdldEJ5VmFsTm90RG91Ymxl
OgotICAgIHN1YmkgQXJyYXlTdG9yYWdlU2hhcGUsIHQyCi0gICAgYmlhIHQyLCBTbG93UHV0QXJy
YXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSwgLm9wR2V0QnlWYWxOb3RJbmRleGVk
U3RvcmFnZQotICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5kZXhpbmdI
ZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cKLSAgICBn
ZXQobV9kc3QsIHQwKQotICAgIGxvYWRxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3JbdDMsIHQxLCA4
XSwgdDIKLSAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNsb3cKLQotLm9wR2V0QnlWYWxEb25lOgot
ICAgIHN0b3JlcSB0MiwgW2NmciwgdDAsIDhdCi0gICAgdmFsdWVQcm9maWxlKE9wR2V0QnlWYWws
IG1fcHJvZmlsZSwgdDUsIHQyKQotICAgIGRpc3BhdGNoKCkKKyAgICAgICAgbW92ZSB0MCwgdDIK
KyAgICAgICAgYXJyYXlQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVBy
b2ZpbGUsIHQyLCB0NSwgdDEpCiAKLS5vcEdldEJ5VmFsTm90SW5kZXhlZFN0b3JhZ2U6Ci0gICAg
Z2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWwsIGZpbmlzaERvdWJs
ZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MykK
KyAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9wR2V0
QnlWYWxTbG93KQorICAgICAgICBzeGkycSB0MSwgdDEKIAotLm9wR2V0QnlWYWxTbG93OgotICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCi0gICAgZGlzcGF0Y2go
KQorICAgICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQz
LCBudW1iZXJUYWcpCisgICAgICAgIG1vdmUgVGFnTnVtYmVyLCBudW1iZXJUYWcKIAotLm9zclJl
dHVyblBvaW50OgotICAgIGdldHRlclNldHRlck9TUkV4aXRSZXR1cm5Qb2ludChvcF9nZXRfYnlf
dmFsLCBzaXplKQotICAgIG1ldGFkYXRhKHQ1LCB0MikKLSAgICB2YWx1ZVByb2ZpbGUoT3BHZXRC
eVZhbCwgbV9wcm9maWxlLCB0NSwgcjApCi0gICAgcmV0dXJuKHIwKQorICAgICAgICBhbmRpIElu
ZGV4aW5nU2hhcGVNYXNrLCB0MgorICAgICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRC
eVZhbElzQ29udGlndW91cworICAgICAgICBiaW5lcSB0MiwgQ29udGlndW91c1NoYXBlLCAub3BH
ZXRCeVZhbE5vdENvbnRpZ3VvdXMKKworICAgIC5vcEdldEJ5VmFsSXNDb250aWd1b3VzOgorICAg
ICAgICBiaWFlcSB0MSwgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1
Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QzXSwgLm9wR2V0QnlWYWxTbG93CisgICAgICAgIGdldCht
X2RzdCwgdDApCisgICAgICAgIGxvYWRxIFt0MywgdDEsIDhdLCB0MgorICAgICAgICBidHF6IHQy
LCAub3BHZXRCeVZhbFNsb3cKKyAgICAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQorCisgICAgLm9w
R2V0QnlWYWxOb3RDb250aWd1b3VzOgorICAgICAgICBiaW5lcSB0MiwgRG91YmxlU2hhcGUsIC5v
cEdldEJ5VmFsTm90RG91YmxlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVh
ZGVyICsgSW5kZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDNdLCAub3BHZXRC
eVZhbFNsb3cKKyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZGQgW3QzLCB0MSwg
OF0sIGZ0MAorICAgICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKKyAgICAg
ICAgZmQycSBmdDAsIHQyCisgICAgICAgIHN1YnEgbnVtYmVyVGFnLCB0MgorICAgICAgICBqbXAg
Lm9wR2V0QnlWYWxEb25lCisgICAgICAgIAorICAgIC5vcEdldEJ5VmFsTm90RG91YmxlOgorICAg
ICAgICBzdWJpIEFycmF5U3RvcmFnZVNoYXBlLCB0MgorICAgICAgICBiaWEgdDIsIFNsb3dQdXRB
cnJheVN0b3JhZ2VTaGFwZSAtIEFycmF5U3RvcmFnZVNoYXBlLCAub3BHZXRCeVZhbE5vdEluZGV4
ZWRTdG9yYWdlCisgICAgICAgIGJpYWVxIHQxLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5k
ZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy52ZWN0b3JMZW5ndGhbdDNdLCAub3BHZXRCeVZhbFNsb3cK
KyAgICAgICAgZ2V0KG1fZHN0LCB0MCkKKyAgICAgICAgbG9hZHEgQXJyYXlTdG9yYWdlOjptX3Zl
Y3Rvclt0MywgdDEsIDhdLCB0MgorICAgICAgICBidHF6IHQyLCAub3BHZXRCeVZhbFNsb3cKKwor
ICAgIC5vcEdldEJ5VmFsRG9uZToKKyAgICAgICAgc3RvcmVxIHQyLCBbY2ZyLCB0MCwgOF0KKyAg
ICAgICAgdmFsdWVQcm9maWxlKCVvcGNvZGVTdHJ1Y3QlLCBtX3Byb2ZpbGUsIHQ1LCB0MikKKyAg
ICAgICAgZGlzcGF0Y2goKQogCi1lbmQpCisgICAgLm9wR2V0QnlWYWxOb3RJbmRleGVkU3RvcmFn
ZToKKyAgICAgICAgZ2V0QnlWYWxUeXBlZEFycmF5KHQwLCB0MSwgZmluaXNoSW50R2V0QnlWYWws
IGZpbmlzaERvdWJsZUdldEJ5VmFsLCAub3BHZXRCeVZhbFNsb3cpCisKKyAgICAub3BHZXRCeVZh
bFNsb3c6CisgICAgICAgIGNhbGxTbG93UGF0aChzbG93UGF0aE5hbWUpCisgICAgICAgIGRpc3Bh
dGNoKCkKKworICAgIC5vc3JSZXR1cm5Qb2ludDoKKyAgICAgICAgZ2V0dGVyU2V0dGVyT1NSRXhp
dFJldHVyblBvaW50KG9wXyVvcGNvZGVOYW1lJSwgc2l6ZSkKKyAgICAgICAgbWV0YWRhdGEodDUs
IHQyKQorICAgICAgICB2YWx1ZVByb2ZpbGUoJW9wY29kZVN0cnVjdCUsIG1fcHJvZmlsZSwgdDUs
IHIwKQorICAgICAgICByZXR1cm4ocjApCisgICAgZW5kKQorZW5kCisKK2dldEJ5VmFsT3AoZ2V0
X2J5X3ZhbCwgT3BHZXRCeVZhbCwgX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfdmFsKQogCitnZXRC
eVZhbE9wKGdldF9ieV92YWxfZGlyZWN0LCBPcEdldEJ5VmFsRGlyZWN0LCBfc2xvd19wYXRoX2dl
dF9ieV92YWxfZGlyZWN0KQogCiBtYWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0
cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5h
bWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBk
OTU1ODA4YzZhMzI4ZGNlMDZkYTczZTc1MWQ2MjIzN2RkNzdiYTYyLi5iY2Y2OWYxNjNlNDE2NmM2
OTk5MmEyMjRmZTI2MGIwYTEyNjQ4OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaApAQCAtMjcwLDEyICsyNzAsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCisgICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHks
IERvdFR5cGUgdHlwZSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCiAgICAgewogICAgICAg
ICBpZiAoYmFzZS0+aXNTdXBlck5vZGUoKSkKICAgICAgICAgICAgIHVzZXNTdXBlclByb3BlcnR5
KCk7CiAgICAgICAgIAotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFy
c2VyQXJlbmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5KTsKKyAg
ICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBEb3RBY2Nl
c3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSwgdHlwZSk7CiAgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQpAQCAtNjUxLDYgKzY1MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBub2RlLT5pc0Fzc2lnbm1lbnRMb2NhdGlvbigpOwogICAgIH0KIAorICAgIGJvb2wgaXNQcml2
YXRlTG9jYXRpb24oY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBub2RlLT5pc1ByaXZhdGVMb2NhdGlvbigpOworICAgIH0KKwogICAgIGJvb2wgaXNPYmplY3RM
aXRlcmFsKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbm9k
ZS0+aXNPYmplY3RMaXRlcmFsKCk7CkBAIC0xNDM4LDE1ICsxNDQzLDE1IEBAIEV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uCiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RB
Y2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlID0gbnVs
bHB0cjsKICAgICBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3QtPmlkZW50aWZpZXIo
KSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCkg
fHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5jYWxsUHJpdmF0ZU5hbWUoKSkpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlD
aGlsZERlcHRoKTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
ZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBw
bHlDaGlsZERlcHRoKTsKICAgICBlbHNlIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRv
dC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBw
bHlQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hcHBseVByaXZhdGVOYW1lKCkpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGNoZWNrIGlzIG9ubHkgbmVlZGVkIGJlY2F1c2Ugd2UgaGF2ZW4ndCB0YXVnaHQgdGhl
IGJ5dGVjb2RlIGdlbmVyYXRvciB0byBpbmxpbmUKICAgICAgICAgLy8gUmVmbGVjdC5hcHBseSB5
ZXQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjY4Lgog
ICAgICAgICBpZiAoIWRvdC0+YmFzZSgpLT5pc1Jlc29sdmVOb2RlKCkgfHwgc3RhdGljX2Nhc3Q8
UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlkZW50aWZpZXIoKSAhPSAiUmVmbGVjdCIpCi0g
ICAgICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOworICAgICAg
ICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBh
cmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7
CiAgICAgfQogICAgIGlmICghbm9kZSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAgICBub2Rl
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+
ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CkBA
IC0xNTg3LDcgKzE1OTIsNyBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2ln
bk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcgogICAgIERvdEFjY2Vz
c29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obG9jKTsKIAogICAg
IGlmIChvcCA9PSBPcGVyYXRvcjo6RXF1YWwpCi0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQp
OworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0
aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBl
eHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CiAKICAgICBpZiAo
b3AgPT0gT3BlcmF0b3I6OkNvYWxlc2NlRXEgfHwgb3AgPT0gT3BlcmF0b3I6Ok9yRXEgfHwgb3Ag
PT0gT3BlcmF0b3I6OkFuZEVxKSB7CiAgICAgICAgIGF1dG8qIG5vZGUgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIFNob3J0Q2lyY3VpdFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90
LCBzdGFydCwgZW5kKTsKQEAgLTE1OTUsNyArMTYwMCw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByCiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIFJlYWRNb2RpZnlEb3ROb2Rl
KiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBu
ZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2ln
bm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbklu
Zm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9k
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggOWFhMjY3MzAz
MzBkNjUzOGY0OGIwYzAxNTM2YjdjMjMyMTUyNzVjNS4uZjZiMzY5MmQ2MDJhZmQ0MjFlMzJkZmNk
YzExMWQ4ZmFjYjRiNzZmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
QEAgLTk1MCwxMCArOTUwLDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZp
ZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAg
ICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJ
REVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisK
KyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOworICAgIGJvb2wgaXNC
dWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
OwogICAgIGJvb2wgaXNXZWxsS25vd25TeW1ib2wgPSBmYWxzZTsKLSAgICBpZiAoaXNQcml2YXRl
TmFtZSkgeworICAgIGlmIChpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24pOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICdAJykgewpAQCAtOTYxLDggKzk2MiwxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6
cAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGNv
bnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisKKyAgICBp
ZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIEFTU0VSVChpc0lkZW50
U3RhcnQobV9jdXJyZW50KSB8fCBtX2N1cnJlbnQgPT0gJ1xcJyk7CiAgICAgd2hpbGUgKGlzSWRl
bnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAgIHNoaWZ0KCk7CkBAIC05NzQsNyArOTc5LDggQEAg
dGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rv
a2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRp
ZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZp
ZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7Ci0gICAgICAg
IGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24gJiYgaXNQcml2YXRlTmFtZSkgeworICAgICAg
ICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0
aCk7CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24gJiYgaXNCdWlsdGluTmFt
ZSkgewogICAgICAgICAgICAgaWYgKGlzV2VsbEtub3duU3ltYm9sKQogICAgICAgICAgICAgICAg
IGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyKG1fdm0sIG1fdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3duU3ltYm9sKGlkZW50aWZpZXJTdGFydCwg
aWRlbnRpZmllckxlbmd0aCkpOwogICAgICAgICAgICAgZWxzZQpAQCAtOTk2LDIwICsxMDAyLDIx
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAgICAgIHRva2VuRGF0
YS0+aWRlbnQgPSBudWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBtYXhU
b2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdub3JlUmVz
ZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgYXV0byBpZGVudFR5cGUgPSBp
c1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBpZiAoVU5MSUtFTFkoKHJl
bWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZs
YWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAg
QVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwg
bWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRy
eSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgICAgICBBU1NFUlQoKHJl
bWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAgICAgICAgICAgaWYgKCFl
bnRyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGlkZW50VHlwZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRva2VuID0gc3RhdGljX2Nh
c3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAgICAgICAgICAgcmV0dXJu
ICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IElE
RU5UOworICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8
IHN0cmljdE1vZGUgPyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgfQogCi0gICAgcmV0dXJu
IElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBsYXRlIDw+CkBAIC0xMDI2
LDcgKzEwMzMsMTIgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAgICAgICAgfQogICAgIH0K
IAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CiAgICAgY29uc3Qg
VUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKworICAgIGlmIChp
c1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgVUNoYXIgb3JBbGxDaGFycyA9
IDA7CiAgICAgQVNTRVJUKGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRTdGFydChtX2N1cnJlbnQpIHx8
IFUxNl9JU19TVVJST0dBVEUobV9jdXJyZW50KSB8fCBtX2N1cnJlbnQgPT0gJ1xcJyk7CiAgICAg
d2hpbGUgKGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRQYXJ0KG1fY3VycmVudCkpIHsKQEAgLTEwNTAs
NiArMTA2Miw5IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgfSBlbHNlCiAgICAgICAg
IHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogICAgIAorICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICByZXR1cm4gUFJJVkFURU5BTUU7CisKICAgICBpZiAoVU5MSUtFTFkoKHJlbWFp
bmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdz
OjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlk
ZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKQEAg
LTEwNzQsNiArMTA4OSwxNCBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFy
c2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgIEFTU0VSVCht
X2J1ZmZlcjE2LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCF0b2tlbkRhdGEtPmVzY2FwZWQpOwog
CisgICAgYXV0byBpZGVudENoYXJzU3RhcnQgPSBpZGVudGlmaWVyU3RhcnQ7CisgICAgYm9vbCBp
c1ByaXZhdGVOYW1lID0gKmlkZW50aWZpZXJTdGFydCA9PSAnIyc7CisgICAgaWYgKGlzUHJpdmF0
ZU5hbWUpCisgICAgICAgICsraWRlbnRDaGFyc1N0YXJ0OworCisgICAgSlNUb2tlblR5cGUgaWRl
bnRUeXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CisgICAgQVNTRVJU
KCFpc1ByaXZhdGVOYW1lIHx8IGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50U291cmNlUHRyKCkp
OworCiAgICAgYXV0byBmaWxsQnVmZmVyID0gWyZdIChib29sIGlzU3RhcnQgPSBmYWxzZSkgewog
ICAgICAgICAvLyBcdVhYWFggdW5pY29kZSBjaGFyYWN0ZXJzIG9yIFN1cnJvZ2F0ZSBwYWlycy4K
ICAgICAgICAgaWYgKGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50U291cmNlUHRyKCkpCkBAIC0x
MDkzLDcgKzExMTYsNyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJ
ZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAgICAgICAgaWYg
KHNob3VsZENyZWF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgcmVjb3JkVW5pY29kZUNv
ZGVQb2ludChjaGFyYWN0ZXIudmFsdWUoKSk7CiAgICAgICAgICAgICBpZGVudGlmaWVyU3RhcnQg
PSBjdXJyZW50U291cmNlUHRyKCk7Ci0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAg
ICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKFUxNl9J
U19TVVJST0dBVEUobV9jdXJyZW50KSk7CkBAIC0xMTA5LDEwICsxMTMyLDEwIEBAIEpTVG9rZW5U
eXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2Vu
RGF0YSogdG9rZW5EYXRhCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAg
ICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKLSAgICAgICAgcmV0dXJu
IElERU5UOworICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgIH07CiAKLSAgICBKU1Rva2Vu
VHlwZSB0eXBlID0gZmlsbEJ1ZmZlcihpZGVudGlmaWVyU3RhcnQgPT0gY3VycmVudFNvdXJjZVB0
cigpKTsKKyAgICBKU1Rva2VuVHlwZSB0eXBlID0gZmlsbEJ1ZmZlcihpZGVudENoYXJzU3RhcnQg
PT0gY3VycmVudFNvdXJjZVB0cigpKTsKICAgICBpZiAoVU5MSUtFTFkodHlwZSAmIEVycm9yVG9r
ZW5GbGFnKSkKICAgICAgICAgcmV0dXJuIHR5cGU7CiAKQEAgLTExNDUsMTMgKzExNjgsMTMgQEAg
SlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNl
KEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50
aWZpZXIpOwogICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6Om1haW5U
YWJsZS5lbnRyeSgqaWRlbnQpOwogICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAgcmV0
dXJuIElERU5UOworICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgSlNUb2tl
blR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUo
KSk7CiAgICAgICAgIGlmICgodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RN
b2RlKQogICAgICAgICAgICAgcmV0dXJuIFVORVhQRUNURURfRVNDQVBFX0VSUk9SVE9LOwogICAg
IH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQogCiBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGNoYXJhY3RlclJlcXVpcmVzUGFyc2VTdHJpbmdTbG93Q2Fz
ZShMQ2hhciBjaGFyYWN0ZXIpCkBAIC0yNDc4LDE0ICsyNTAxLDIxIEBAIHN0YXJ0OgogICAgICAg
ICBtX2hhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4gPSB0cnVlOwogICAgICAgICBtX2xpbmVT
dGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKLSAgICBjYXNlIENoYXJhY3Rlckhh
c2g6CisgICAgY2FzZSBDaGFyYWN0ZXJIYXNoOiB7CiAgICAgICAgIC8vIEhhc2hiYW5nIGlzIG9u
bHkgcGVybWl0dGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgc291cmNlIHRleHQuCi0gICAgICAgIGlm
IChwZWVrKDEpID09ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7CisgICAgICAgIGF1dG8gbmV4
dCA9IHBlZWsoMSk7CisgICAgICAgIGlmIChuZXh0ID09ICchJyAmJiAhY3VycmVudE9mZnNldCgp
KSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAg
ICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKICAgICAgICAgfQorICAgICAgICAvLyBPdGhl
cndpc2UsIGl0IGNvdWxkIGJlIGEgdmFsaWQgUHJpdmF0ZU5hbWUuCisgICAgICAgIGlmIChPcHRp
b25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSAmJiAoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFN0
YXJ0KG5leHQpIHx8IG5leHQgPT0gJ1xcJykpIHsKKyAgICAgICAgICAgIGxleGVyRmxhZ3MucmVt
b3ZlKExleGVyRmxhZ3M6OkRvbnRCdWlsZEtleXdvcmRzKTsKKyAgICAgICAgICAgIGdvdG8gcGFy
c2VJZGVudDsKKyAgICAgICAgfQogICAgICAgICBnb3RvIGludmFsaWRDaGFyYWN0ZXI7CisgICAg
fQogICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFydDoKICAgICAgICAgaWYg
KG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgICAgIGdvdG8gcGFyc2VJZGVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5k
ZXggMmNlZWMzOGI2NmVlNjE2MDk5Y2MyMzliMzE3NjUyM2Q3MWJlMDEwMC4uMGRjZTY3MTI2ZDg1
ZDY1YmI2ZDFjZDc0NTAxOWI2MjFkN2I3ZjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTMyNywxMCArMzI3LDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpE
b3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIGlubGluZSBCYXNlRG90
Tm9kZTo6QmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUpCiAg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9iYXNlKGJhc2Up
CiAgICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICB7
CisgICAgfQorCisgICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlKQorICAgICAgICA6IEJhc2VEb3ROb2Rl
KGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICB7CiAgICAgfQogICAgIApAQCAtNDE4
LDExICs0MjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5l
IEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwg
YmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAg
IH0KQEAgLTQzNywxNCArNDQxLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2Us
IGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCisgICAgaW5saW5lIENh
bGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2Us
IGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAg
ICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBB
cmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKKyAgICAgICAgOiBGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgYXJncywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgICAgICAsIG1fZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkKICAgICB7CiAgICAgfQpA
QCAtNzcyLDIxICs3NzYsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUp
CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQp
CiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVu
dHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRN
b2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFk
TW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgT3BlcmF0
b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90
Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1f
YmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChy
aWdodCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAgICwgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuY3BwCmluZGV4IDlkMWNmYTRmMTc2MTMwMmEzM2JiYWUzMWVmNjBmZGZjYWYyMDdkZjUu
LjExYmY0YTY4NGExYmQ5YTA5M2ViOGViMTZlMWUxMzcyNjYyMGQzOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBQcm9wZXJ0
eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyJiBw
cm9wTmFtZSkKIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4aWNhbFNjb3Bl
Rm9yQ2xhc3MoUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKIHsKICAgICB3aGlsZSAobGlzdCkgewot
ICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQorICAgICAg
ICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIHx8IGxpc3QtPm1fbm9k
ZS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgbGlzdCA9
IGxpc3QtPm1fbmV4dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5k
ZXggNzRlYmNhZTViMGJmNjRhZTc3OTJkNzg5NzFhMTgwYjg4NjhhNjAyMS4uZDdmMzA3ZTgwZWZk
NWYzYTBlZjYxM2VmN2M4NDMxYmU4ZTg1YzU1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaApAQCAtMTg1LDYgKzE4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0gICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWdubWVu
dExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNMb2NhdGlvbigpOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
dmlydHVhbCBib29sIGlzQXNzaWduUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQpAQCAtNzE5LDcgKzcyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gY2xhc3MgQ2xh
c3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07
CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFi
bGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50
ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAx
NiwgU3ByZWFkID0gMzIgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50
ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAx
NiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OwogICAgICAgICBlbnVtIFB1dFR5cGUgOiB1
aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUo
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJC
aW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzM4LDYgKzczOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NQ
cm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNJbnN0
YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgp
ICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlE
dXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9Cisg
ICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsg
fQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVz
c2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1
cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBz
ZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9
IHRydWU7IH0KQEAgLTc0OCw3ICs3NTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNz
aW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVk
IG1fdHlwZSA6IDY7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7CiAgICAgICAgIHVuc2ln
bmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX3B1dFR5cGUg
OiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4ndCB1
c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CkBAIC03NzYsNiArNzc4LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+Kik7CiAK
KyAgICAgICAgdm9pZCBlbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogc2NvcGUpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCA9IG51bGxwdHIpIG92ZXJyaWRlCiAgICAgICAgIHsKQEAgLTgyMCw5ICs4MjQsMzAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50
czsKICAgICB9OwogCi0gICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIGVudW0g
Y2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVOYW1lIH07CisgICAgY2xhc3MgQmFzZURvdE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRG90QWNj
ZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7
CisKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7
IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnQ7IH0KKyAgICAgICAgRG90VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQorCisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQ
cm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFBy
b3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
dmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdmFsdWUpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9iYXNlOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OworICAgICAg
ICBEb3RUeXBlIG1fdHlwZTsKKyAgICB9OworCisgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZp
bmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
eworICAgIHB1YmxpYzoKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSk7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7
IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnQ7IH0KQEAgLTgzMSwxMCArODU2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CiAg
ICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0KLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwogCiAgICAgY2xhc3MgU3ByZWFkRXhwcmVzc2lv
bk5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CkBAIC05NDcsOSArOTcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgRnVu
Y3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVi
bGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05v
ZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwpAQCAtOTU3LDggKzk4MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2Fy
Z3M7CiAgICAgfTsKIApAQCAtOTk1LDcgKzEwMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKKyAgICAgICAgQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVy
bW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CkBAIC0xMDA0LDcgKzEwMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBB
cHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBz
aXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKKyAgICAgICAgQXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RD
YWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwpAQCAt
MTQ2NywyOCArMTQ4OCwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3JpZ2h0
SGFzQXNzaWdubWVudHMgOiAxOwogICAgIH07CiAKLSAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgeworICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBB
c3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAg
ICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9p
ZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIGJvb2wgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9k
ZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhIHsKKyAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBC
YXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IERvdFR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIE9wZXJhdG9yIG1fb3BlcmF0b3I7CiAg
ICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzIDogMTsKQEAgLTIyODUsNyArMjMwMiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVmaW5lRmllbGROb2RlIGZpbmFsIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBjbGFzcyBU
eXBlIHsgTmFtZSwgQ29tcHV0ZWROYW1lIH07CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5h
bWUsIFByaXZhdGVOYW1lLCBDb21wdXRlZE5hbWUgfTsKICAgICAgICAgRGVmaW5lRmllbGROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBFeHByZXNzaW9uTm9k
ZSosIFR5cGUpOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCA3NjZhMmIzZWE2NzE1N2Y3ZjQyNWFmM2ExZTc5ZWZhZTA0MzQ4MDVkLi40
OGY0MDQyZjI5MGRlNmM1MWYyNDY3MDNjNjE2YjIzNDU0OTc3ZGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC04MjYsNiArODI2LDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VW
YXJpYWJsZURlY2wKICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IDA7CiAgICAgICAgIGRl
Y2xhcmF0aW9ucysrOwogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gZmFsc2U7CisKKyAg
ICAgICAgZmFpbElmVHJ1ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgdXNlIGEgcHJpdmF0
ZSBuYW1lIHRvIGRlY2xhcmUgYSB2YXJpYWJsZSIpOwogICAgICAgICBpZiAobWF0Y2hTcGVjSWRl
bnRpZmllcigpKSB7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGRlY2xh
cmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xhcmF0aW9uIHx8IGRlY2xhcmF0
aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24pLCAKICAgICAgICAg
ICAgICAgICAiQ2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4
aWNhbERlY2xhcmF0aW9uIik7CkBAIC0xMjg4LDYgKzEyOTAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VEZQogICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3Ry
dWN0dXJlVG9FeHByZXNzaW9ucykKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAg
ICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFi
bGVLaW5kTmFtZShraW5kKSk7CisgICAgICAgICAgICBpZiAoa2luZCAhPSBEZXN0cnVjdHVyaW5n
S2luZDo6RGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZmFpbElmVHJ1
ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3QgdXNlIGEgcHJpdmF0ZSBuYW1lIGFzIGEgIiwg
ZGVzdHJ1Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2luZE5hbWUoa2luZCkpOwogICAgICAgICAgICAg
ZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhIHBhcmFtZXRlciBwYXR0ZXJuIG9yIGEgJyknIGlu
IHBhcmFtZXRlciBsaXN0Iik7CiAgICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChM
RVQpICYmIChraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvTGV0IHx8IGtp
bmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9Db25zdCksICJDYW5ub3QgdXNl
ICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRpb24iKTsK
QEAgLTI5NTMsNiArMjk1NywxOSBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5
IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VU
LCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKKyAgICAgICAgICAgIEFTU0VSVChPcHRp
b25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7CisgICAgICAgICAgICBKU1Rva2VuIHRva2Vu
ID0gbV90b2tlbjsKKyAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7Cisg
ICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0
YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CisgICAgICAgICAgICBmYWls
SWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3
aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAg
ICAgIG5leHQoKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBB
UkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1l
Iik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVBy
aXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAg
ICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3Bl
cnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2Vu
RmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5hbWVkS2V5d29yZDsKQEAgLTI5NjgsOCArMjk4
NSwxMCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAi
Q2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6
dXNlUHVibGljQ2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xh
c3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpN
ZXRob2RNb2RlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzR2V0dGVyICYmICFpc1NldHRlcik7
Ci0gICAgICAgICAgICBpZiAoaWRlbnQpCisgICAgICAgICAgICBpZiAoaWRlbnQpIHsKICAgICAg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29u
c3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBjbGFzcyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3In
Iik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0
eU5hbWVzLmNvbnN0cnVjdG9yUHJpdmF0ZUZpZWxkLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBj
bGFzcyBmaWVsZCBuYW1lZCAnI2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAgICBpZGVu
dCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmll
cihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsKQEAgLTMwMzMsNiArMzA1MiwxMCBAQCBwYXJz
ZU1ldGhvZDoKICAgICBpbmZvLmVuZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQg
LSAxOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAn
fScgYWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNs
YXNzRmllbGRzKCkpIHsKKyAgICAgICAgLy8gRmFpbCBpZiB0aGVyZSBhcmUgbm8gcGFyZW50IHBy
aXZhdGUgbmFtZSBzY29wZXMgYW5kIGFueSB1c2VkLWJ1dC11bmRlY2xhcmVkIHByaXZhdGUgbmFt
ZXMuCisgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY29weVVuZGVjbGFyZWRQcml2YXRlTmFt
ZXNUb091dGVyU2NvcGUoKSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIG5h
bWVzIik7CisgICAgfQogICAgIGF1dG8gY2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVD
bGFzc0V4cHIobG9jYXRpb24sIGluZm8sIGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmly
b25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAg
cG9wU2NvcGUoY2xhc3NTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7
CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVzc2lvbjsKQEAgLTMwNTYsNiArMzA3OSw5IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVy
dHlOYW1lID0gMDsKICAgICAgICAgRGVmaW5lRmllbGROb2RlOjpUeXBlIHR5cGUgPSBEZWZpbmVG
aWVsZE5vZGU6OlR5cGU6Ok5hbWU7CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsK
KyAgICAgICAgY2FzZSBQUklWQVRFTkFNRToKKyAgICAgICAgICAgIHR5cGUgPSBEZWZpbmVGaWVs
ZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAg
ICAgIGNhc2UgU1RSSU5HOgogICAgICAgICBjYXNlIElERU5UOgogICAgICAgICBuYW1lZEtleXdv
cmQ6CkBAIC0zMDk1LDYgKzMxMjEsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAg
ICBpZiAoY29uc3VtZShFUVVBTCkpCiAgICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNz
aWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAKKyAgICAgICAgaWYgKHR5cGUgPT0gRGVmaW5l
RmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIGN1cnJlbnRTY29wZSgp
LT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgZGVm
aW5lRmllbGQgPSBjb250ZXh0LmNyZWF0ZURlZmluZUZpZWxkKGZpZWxkTG9jYXRpb24sIGlkZW50
LCBpbml0aWFsaXplciwgdHlwZSk7CiAgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNv
dXJjZUVsZW1lbnRzLCBkZWZpbmVGaWVsZCk7CiAgICAgfQpAQCAtNDc5OCw2ICs0ODI3LDIyIEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRDYWxsT3JBcHBseURlcHRoKFBhcnNlclR5cGUqLCBW
TSYsIE9wdGlvbmFsPHR5cGVuYW1lIFBhCiB7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+Citib29sIFBhcnNlcjxMZXhlclR5cGU+Ojp1c2VQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChhdXRvIG1heWJlQ3VycmVudCA9IGZp
bmRQcml2YXRlTmFtZVNjb3BlKCkpIHsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9IG1heWJl
Q3VycmVudC52YWx1ZSgpOworICAgICAgICBpZiAoIWN1cnJlbnQtPmhhc1ByaXZhdGVOYW1lKCpp
ZGVudCkpCisgICAgICAgICAgICBjdXJyZW50LT51c2VQcml2YXRlTmFtZSgqaWRlbnQpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CkBAIC00OTk5LDggKzUwNDQsMjEgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
ZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBtX3BhcnNlclN0YXRlLm5vblRyaXZpYWxFeHBy
ZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBleHByZXNzaW9u
RW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICBuZXh0RXhwZWN0
SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMgfCBMZXhlckZsYWdzOjpJ
Z25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9
IERvdFR5cGU6Ok5hbWU7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkg
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAgICAgICAg
ICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90IGFjY2VzcyBwcml2YXRlIG5hbWVzIGZy
b20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnJlbnRTY29w
ZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFsQ29udGV4dFR5cGU6Okluc3RhbmNlRmllbGRF
dmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNl
KGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5j
ZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIsIGlkZW50LT5pbXBsKCksICInIik7CisgICAg
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UodXNlUHJpdmF0ZU5hbWUoaWRlbnQp
LCAiQ2Fubm90IHJlZmVyZW5jZSBwcml2YXRlIG5hbWVzIG91dHNpZGUgb2YgY2xhc3MiKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUgPSBpZGVudDsK
KyAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlTmFtZTsK
KyAgICAgICAgICAgICAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBJREVOVDsKKyAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIHBy
b3BlcnR5IG5hbWUgYWZ0ZXIgIiwgb3B0aW9uYWxDaGFpbkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7
Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9j
YXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIHRva2VuRW5kUG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNv
bnRleHQuY3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBl
eHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kUG9zaXRpb24oKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKGJhc2VJc1N1cGVyICYmIGN1cnJlbnRTY29wZSgpLT5p
c0Fycm93RnVuY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvblNj
b3BlKCktPnNldElubmVyQXJyb3dGdW5jdGlvblVzZXNTdXBlclByb3BlcnR5KCk7CiAgICAgICAg
ICAgICAgICAgbmV4dCgpOwpAQCAtNTE5NSw2ICs1MjUzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4
cHJlc3MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERFTEVURVRPS0VOOgogICAg
ICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGNvbnRleHQuaXNSZXNvbHZlKGV4cHIpLCAiQ2Fu
bm90IGRlbGV0ZSB1bnF1YWxpZmllZCBwcm9wZXJ0eSAnIiwgbV9wYXJzZXJTdGF0ZS5sYXN0SWRl
bnRpZmllci0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKGNvbnRleHQuaXNQcml2YXRlTG9jYXRpb24oZXhwciksICJDYW5ub3QgZGVs
ZXRlIHByaXZhdGUgZmllbGQgIiwgbV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUtPmltcGwo
KSk7CiAgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlRGVsZXRlTm9kZShsb2NhdGlvbiwg
ZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwg
ZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC01Mjcx
LDcgKzUzMzAsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIElOVkFMSURf
UFJJVkFURV9OQU1FX0VSUk9SVE9LOgogICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0
ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAKKworICAgIGNhc2UgUFJJVkFURU5BTUU6CisgICAgICAgIG91dC5wcmludCgiVW5leHBlY3Rl
ZCBwcml2YXRlIG5hbWUgIiwgZ2V0VG9rZW4oKSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNh
c2UgQVdBSVQ6CiAgICAgY2FzZSBJREVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVk
IGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAppbmRleCAxNjhiNmZmN2VmOGVjZWY1ZmQzMmM3MTU4MmYwYjA0Zjc2OWRiMWNm
Li5mOWJlMDlkOWM5YWIwYmY5ZmE3Mzg5M2EzMzQ4MzA2N2Y0ZDM1NjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0dlbmVyYXRvckJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvckJv
dW5kYXJ5OyB9CiAgICAgYm9vbCBpc0FzeW5jRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QXN5bmNGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSBjb25z
dCB7IHJldHVybiBtX2lzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5OyB9CisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogICAgIGJvb2wg
aXNDbGFzc1Njb3BlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzU2NvcGU7IH0KIAogICAgIGJv
b2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KQEAgLTMw
OSw2ICszMTAsMTMgQEAgcHVibGljOgogICAgICAgICBtX2FsbG93c0xleGljYWxEZWNsYXJhdGlv
bnMgPSB0cnVlOwogICAgIH0KIAorICAgIHZvaWQgc2V0SXNQcml2YXRlTmFtZVNjb3BlKCkKKyAg
ICB7CisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIGlzUHJpdmF0ZU5hbWVTY29wZSBpcyBh
biBhbGlhcyBmb3IgaXNDbGFzc1Njb3BlIC0tLSBUaGlzIGlzIHBvdGVudGlhbGx5IG1pc2xlYWRp
bmcsCisgICAgICAgIC8vIHBhcnRpY3VsYXJseSB3aGVuIHBhcnNpbmcgZGlyZWN0IGV2YWwgY29k
ZSB3aGljaCBvY2N1cnMgd2l0aGluIGEgY2xhc3MuCisgICAgICAgIHNldElzQ2xhc3NTY29wZSgp
OworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFzc1Njb3BlKCkKICAgICB7CiAgICAgICAgIG1f
aXNDbGFzc1Njb3BlID0gdHJ1ZTsKQEAgLTQ3NSw3ICs0ODMsNDQgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5nZXQoKSk7
CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuaGFzUHJp
dmF0ZU5hbWUoaWRlbnQpOworICAgIH0KKworICAgIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRl
TmFtZXNUbyhTY29wZSYgb3RoZXIpCisgICAgeworICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMu
Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMpOwor
ICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXpl
KCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJs
ZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNV
c2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25z
KTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAg
ICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNh
bERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBE
ZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhp
Y2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICghYWRk
UmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQ
YXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTkxMCw3ICs5NTUsNyBAQCBwdWJsaWM6CiAgICAg
flBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmll
ciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3Qg
VmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNl
UGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVs
bHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1
cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtMTE4Myw2ICsxMjI4LDQ0IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAg
ICB9CiAKKyAgICBPcHRpb25hbDxTY29wZVJlZj4gZmluZFByaXZhdGVOYW1lU2NvcGUoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB1bnNpZ25l
ZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Nj
b3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAg
ICAgICAgaWYgKG1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAg
ICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKKworICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgIH0KKworICAgIFNjb3BlUmVmIHByaXZhdGVOYW1lU2NvcGUoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB1bnNp
Z25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFt
X3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisK
KyAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSk7Cisg
ICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKKyAgICB9CisKKyAgICBi
b29sIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCkKKyAgICB7CisgICAg
ICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBwcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2ln
bmVkIGkgPSBjdXJyZW50LmluZGV4KCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29w
ZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAg
ICAgIGlmICghaSkKKyAgICAgICAgICAgIHJldHVybiAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVj
bGFyZWRQcml2YXRlTmFtZXMoKTsKKworICAgICAgICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFBy
aXZhdGVOYW1lc1RvKG1fc2NvcGVTdGFja1tpXSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKwogICAgIFNjb3BlUmVmIGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNh
bFNjb3BlKCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgp
IC0gMTsKQEAgLTE0NjIsNiArMTU0NSwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdG9rZW4ubV90eXBlID09IGV4cGVjdGVkOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBtYXRjaEFuZFVwZGF0ZShKU1Rva2VuVHlwZSBleHBlY3RlZCwgY29uc3QgSlNUb2tl
biYgdG9rZW4pCisgICAgeworICAgICAgICBpZiAobWF0Y2goZXhwZWN0ZWQpKSB7CisgICAgICAg
ICAgICBtX3Rva2VuID0gdG9rZW47CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElO
RSBib29sIG1hdGNoQ29udGV4dHVhbEtleXdvcmQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKICAgICB7CkBAIC0xNzE1LDYgKzE4MDgsOCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTaW1wbGVBc3NpZ25tZW50
VGFyZ2V0KFRyZWVCdWlsZGVyJiwgVHJlZUV4cHJlc3Npb24pOwogCisgICAgQUxXQVlTX0lOTElO
RSBib29sIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19J
TkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dB
dXRvbWF0aWNTZW1pY29sb24oKTsKICAgICAKQEAgLTE4MDksNiArMTkwNCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIEZ1bmN0aW9uUGFyc2VQaGFzZSBmdW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlv
blBhcnNlUGhhc2U6OkJvZHkgfTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdElkZW50
aWZpZXIgeyBudWxscHRyIH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlv
bk5hbWUgeyBudWxscHRyIH07CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRl
TmFtZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAg
ICAgICBib29sIGlzUGFyc2luZ0NsYXNzRmllbGRJbml0aWFsaXplciB7IGZhbHNlIH07CiAgICAg
fTsKQEAgLTE5NTksNyArMjA1NSw3IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBj
b25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQ
YXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZp
ZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0
IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0
ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
KQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xOTc0LDYgKzIw
NzAsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0
YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25l
ZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwog
CisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAm
JiB2YXJpYWJsZXNVbmRlclREWi0+cHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJl
bnRTY29wZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5k
ZXJURFotPmNvcHlQcml2YXRlTmFtZXNUbyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxl
cygpKTsKKyAgICB9CisKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVO
YW1lLCBwYXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5l
TnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwpAQCAtMjA1OCw2ICsyMTU5LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBk
ZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENv
bnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBE
ZWJ1Z2dlclBhcnNlRGF0YSogZGVidWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBj
b25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVs
bHB0ciwKICAgICBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlKQogewpAQCAt
MjA3MCw3ICsyMTcyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZS5wcm92
aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+
PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUs
IHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2
ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCks
IGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEsIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwg
bmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4
dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNl
RmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9k
ZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFy
c2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0
LCB2YXJpYWJsZXNVbmRlclREWiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlm
IChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAg
ICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAt
MjA4Myw3ICsyMTg1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9y
S2luZEZvclRvcExldmVsRnVuY3Rpb24gPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRp
bkV4ZWN1dGFibGVzJ3Mgc3BlY2lhbCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGFsd2F5cyB1c2UgYSA4
LWJpdCBzdHJpbmciKTsKICAgICAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBz
b3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1
cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRl
cml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5
cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAg
ICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9k
ZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJz
aW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
KTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1l
LCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpF
dmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5k
ZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0g
cGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBkZTBlYmVhZjg1ZmQ3MTIzNzE3
Zjg3NzExMjdmNzE5MjNmZmU2NzQ4Li43YjNjMWVjM2I3ZjZhNmIxMWJmYzQ1ZjRiYzkxZDA0ODEy
ZjRjZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRv
a2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgK
QEAgLTExNCw2ICsxMTQsNyBAQCBlbnVtIEpTVG9rZW5UeXBlIHsKICAgICBET1VCTEUsCiAgICAg
QklHSU5ULAogICAgIElERU5ULAorICAgIFBSSVZBVEVOQU1FLAogICAgIFNUUklORywKICAgICBU
RU1QTEFURSwKICAgICBSRUdFWFAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IGY5YmIwN2I0ZGQ0MDg5YzdiMWUzYTBmM2Y1OTU0MWIzMTdhNTJk
N2YuLmU5YjZkN2U5NDY3NDRlMWEwOGRjMWNjMjhhNDZiNzEzNzczYzk4NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03Myw3ICs3Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgUmVzb2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4
cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHBy
LCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAg
ICAgICBGdW5jdGlvbkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFj
a2V0RXhwciwgRG90RXhwciwgQ2FsbEV4cHIsCi0gICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBv
c3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sCisgICAgICAgIE5l
d0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFs
Q2hhaW4sIFByaXZhdGVEb3RFeHByLAogICAgICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1l
bnRFeHByLCBUeXBlb2ZFeHByLAogICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHBy
LCBCaW5kaW5nRGVzdHJ1Y3R1cmluZywgUmVzdFBhcmFtZXRlciwKICAgICAgICAgQXJyYXlEZXN0
cnVjdHVyaW5nLCBPYmplY3REZXN0cnVjdHVyaW5nLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKQEAg
LTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVh
bihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1
cm4gTnVsbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9v
bCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9
CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiB0eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lID8gUHJpdmF0
ZURvdEV4cHIgOiBEb3RFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElk
ZW50aWZpZXImIGZsYWdzLCBpbnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNr
U3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC00
MDMsNyArNDAzLDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMb2NhdGlvbihFeHByZXNzaW9u
VHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwg
dHlwZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0gQnJhY2tldEV4cHI7CisgICAgICAgIHJldHVybiB0
eXBlID09IFJlc29sdmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IFByaXZhdGVE
b3RFeHByIHx8IHR5cGUgPT0gQnJhY2tldEV4cHI7CisgICAgfQorCisgICAgYm9vbCBpc1ByaXZh
dGVMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5
cGUgPT0gUHJpdmF0ZURvdEV4cHI7CiAgICAgfQogCiAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2Nh
dGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggOGU2OTE1MWM3YjZjYjMxMTFi
MGZlNzdjZTg5NzMwNzQwNjJmNWY1YS4uMWY1NzA4OGEzNGM2NjNjYTcwMmY3N2Q0Nzc0MDY5NmUy
Njc2ODhlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuY3BwCkBAIC0yOSw2ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorVmFyaWFibGVFbnZpcm9ubWVudCYgVmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQoreworICAgIG1fbWFwID0gb3RoZXIubV9t
YXA7CisgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQ7CisgICAgbV9yYXJlRGF0YS5yZXNldCgpOworICAgIGlmIChvdGhlci5tX3JhcmVEYXRh
KQorICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1l
bnQ6OlJhcmVEYXRhPigqb3RoZXIubV9yYXJlRGF0YSk7CisgICAgcmV0dXJuICp0aGlzOworfQor
CiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmlu
ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBh
dXRvIGZpbmRSZXN1bHQgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOwpAQCAtODAsNiArOTAsNyBA
QCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6OnN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3Ro
ZXIpCiB7CiAgICAgbV9tYXAuc3dhcChvdGhlci5tX21hcCk7CiAgICAgbV9pc0V2ZXJ5dGhpbmdD
YXB0dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5z
d2FwKG90aGVyLm1fcmFyZURhdGEpOwogfQogCiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1h
cmtWYXJpYWJsZUFzSW1wb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRl
bnRpZmllcikKQEAgLTEwMCw3ICsxMTEsNyBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6
Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAg
IDogbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChlbnYuaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSkKIHsK
ICAgICBWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZWRTdHJpbmdJbXBsKiwgVmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5PiwgMzI+IHNvcnRlZEVudHJpZXM7Ci0gICAgc29ydGVkRW50cmllcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGVudi5zaXplKCkpOworICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShlbnYubWFwU2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnYp
CiAgICAgICAgIHNvcnRlZEVudHJpZXMuYXBwZW5kKHsgcGFpci5rZXkuZ2V0KCksIHBhaXIudmFs
dWUgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmgKaW5kZXggNTMyZDE0NmVmZDFmY2FlNTMyNjllNzVkZjZmNWZkYmVhMTk5MmM1
Mi4uMTc3Zjg4MTViYzNhMzdlNGVhZDZiZDYwMWFjY2Y0ZmFjMDEzZjIwNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTI3
LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9y
UmFuZ2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRz
ICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBi
b29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRz
ICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0g
SXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2Jp
dHMgfD0gSXNDb25zdDsgfQpAQCAtNTMsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0
ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5k
aWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2
YXRlTmFtZTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0
cyAmPSB+SXNWYXI7IH0KIApAQCAtNzQsNyArNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0lt
cG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2LAogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAog
ICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwKLSAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3Rp
bmdDYW5kaWRhdGUgPSAxIDw8IDkKKyAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRh
dGUgPSAxIDw8IDksCisgICAgICAgIElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAogICAgIH07CiAg
ICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTgzLDE1ICs4OCw1NSBAQCBzdHJ1Y3Qg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5PgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0
aW9uID0gZmFsc2U7CiB9OwogCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CitwdWJsaWM6Cisg
ICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0
czsgfQorCisgICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQorCisgICAgdWlu
dDE2X3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0czsgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFByaXZhdGVOYW1lRW50cnkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fYml0cyA9PSBvdGhlci5tX2JpdHM7CisgICAgfQorCisgICAgZW51bSBUcmFpdHMg
OiB1aW50MTZfdCB7CisgICAgICAgIElzVXNlZCA9IDEgPDwgMCwKKyAgICAgICAgSXNEZWNsYXJl
ZCA9IDEgPDwgMSwKKyAgICB9OworCitwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYml0cyB7IDAg
fTsKK307CisKK3N0cnVjdCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8
UHJpdmF0ZU5hbWVFbnRyeT4geworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rp
b24gPSBmYWxzZTsKK307CisKIGNsYXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0
cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZh
dGVOYW1lczsKIHB1YmxpYzoKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgPSBkZWZhdWx0Owot
ICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKSA9IGRl
ZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
JikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBW
YXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQm
IG9wZXJhdG9yPShWYXJpYWJsZUVudmlyb25tZW50JiYpID0gZGVmYXVsdDsKKyAgICBWYXJpYWJs
ZUVudmlyb25tZW50KCkgeyB9CisgICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmly
b25tZW50JiYgb3RoZXIpCisgICAgICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisg
ICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1
cmVkKQorICAgICAgICAsIG1fcmFyZURhdGEoV1RGTW92ZShvdGhlci5tX3JhcmVEYXRhKSkKKyAg
ICB7CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgb3RoZXIpCisgICAgICAgIDogbV9tYXAob3RoZXIubV9tYXApCisgICAgICAgICwgbV9p
c0V2ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAg
ICAsIG1fcmFyZURhdGEob3RoZXIubV9yYXJlRGF0YSA/IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJs
ZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpIDogbnVsbHB0cikKKyAg
ICB7CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBvdGhlcik7CiAKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0
b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdpbigpOyB9CiAgICAgQUxXQVlTX0lOTElORSBN
YXA6Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CkBAIC05OSw3ICsxNDQs
OCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFk
ZFJlc3VsdCBhZGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikg
eyByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgp
KTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBB
TFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21h
cC5zaXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2ln
bmVkIG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRl
bnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgcmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0K
QEAgLTExNiwxMSArMTYyLDEwNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0V2ZXJ5dGhpbmdDYXB0
dXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7IH0KICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9tYXAuc2l6ZSgpOyB9CiAKKyAgICB1c2luZyBQ
cml2YXRlTmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJh
dG9yPjsKKworICAgIEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRl
TmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShp
ZGVudGlmaWVyLmltcGwoKSk7IH0KKworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRl
TmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsK
KyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQo
KSk7CisgICAgICAgIG1ldGEuc2V0SXNEZWNsYXJlZCgpOworICAgICAgICBhdXRvIGVudHJ5ID0g
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5h
bWUoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0Nh
cHR1cmVkKCk7CisgICAgICAgIHJldHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwor
ICAgIH0KKyAgICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQ
cml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgbWV0YS5zZXRJc1VzZWQoKTsK
KyAgICAgICAgaWYgKG1ldGEuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgZmluZChpZGVudGlm
aWVyKS0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
UHJpdmF0ZU5hbWVzUmFuZ2UgcHJpdmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8v
IFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NF
UlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQocHJpdmF0ZU5h
bWVzU2l6ZSgpID4gMCk7CisgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5l
bmQoKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBwcml2YXRlTmFtZXNT
aXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6
ZSgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRh
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+
bV9wcml2YXRlTmFtZXMuY29udGFpbnMoaWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5UHJpdmF0ZU5hbWVzVG8oVmFyaWFibGVFbnZpcm9ubWVu
dCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmICghb3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAgICAg
IG90aGVyLm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6
UmFyZURhdGE+KCk7CisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAg
ICAgIGlmICghKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmIGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQo
KSkpCisgICAgICAgICAgICAgICAgICAgIG90aGVyLm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1l
c1RvKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQg
YnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBm
cm9tIGFuCisgICAgICAgIC8vIGlubmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBv
dXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRo
ZSBzb3VyY2UgY29kZSB0aGFuIGl0IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFt
ZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFt
ZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50
cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRPckFk
ZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAg
ICAgICAgUmFyZURhdGEoUmFyZURhdGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2YXRl
TmFtZXMoV1RGTW92ZShvdGhlci5tX3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAgICAg
fQorICAgICAgICBSYXJlRGF0YShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAg
UmFyZURhdGEmIG9wZXJhdG9yPShjb25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAg
UHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAg
ICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVO
YW1lRW50cnkmIGdldE9yQWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisg
ICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0g
V1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAg
ICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5h
bWVFbnRyeSgwKSkuaXRlcmF0b3ItPnZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNz
IENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCAxZjlmOTRhNGRiNjUzZGU2MGNmNjMxYjBiNDJi
MzA1N2U4ZjBiZmJkLi5hM2M3YjRiZWU1OTJjMjMxNmI5OTkwMTkwMDA0MGU3MDUxNmFhNTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04
NTcsNiArODU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5jb2Rl
KGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNv
ZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBi
dWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIpOworICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNp
bXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFi
bGU+IHsKQEAgLTEwMDQsMjMgKzEwMTAsNDUgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25l
ZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsKIH07CiAKK2NsYXNzIENhY2hlZFZhcmlhYmxl
RW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9u
bWVudDo6UmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCisgICAg
eworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2
YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZh
cmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAg
ICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1l
cyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENh
Y2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJU
cmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1l
RW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+
IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJp
YWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgewogICAgICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1
cmVkID0gZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmVuY29kZShl
bmNvZGVyLCBlbnYubV9tYXApOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBl
bnYubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KSBjb25zdAogICAgIHsKICAgICAgICAg
ZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAg
ICAgICBtX21hcC5kZWNvZGUoZGVjb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6Om1h
a2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAgICAgICBt
X3JhcmVEYXRhLT5kZWNvZGUoZGVjb2RlciwgKmVudi5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQog
ICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAg
Q2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1
ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBW
YXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJh
aXRzPiBtX21hcDsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVE
YXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50PiB7
CkBAIC0xMTQ4LDYgKzExNzYsMjIgQEAgcHJpdmF0ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7CiB9
OwogCitjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVj
dDxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4geworcHVibGljOgorICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJh
cmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShl
bmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisgICAgdm9pZCBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJh
cmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29k
ZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2Fj
aGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlm
aWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJs
ZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUp
CkBAIC0xMTU4LDYgKzEyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmVzdGVkTGV4aWNhbFNj
b3BlID0gc3ltYm9sVGFibGUubV9uZXN0ZWRMZXhpY2FsU2NvcGU7CiAgICAgICAgIG1fc2NvcGVU
eXBlID0gc3ltYm9sVGFibGUubV9zY29wZVR5cGU7CiAgICAgICAgIG1fYXJndW1lbnRzLmVuY29k
ZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX2FyZ3VtZW50cy5nZXQoKSk7CisgICAgICAgIG1fcmFy
ZURhdGEuZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogICAg
IH0KIAogICAgIFN5bWJvbFRhYmxlKiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAg
LTExNzEsNiArMTIxNiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxl
KiBzY29wZWRBcmd1bWVudHNUYWJsZSA9IG1fYXJndW1lbnRzLmRlY29kZShkZWNvZGVyKTsKICAg
ICAgICAgaWYgKHNjb3BlZEFyZ3VtZW50c1RhYmxlKQogICAgICAgICAgICAgc3ltYm9sVGFibGUt
Pm1fYXJndW1lbnRzLnNldChkZWNvZGVyLnZtKCksIHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1bWVu
dHNUYWJsZSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxl
OjpTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2Rl
KGRlY29kZXIsICpzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSk7CisgICAgICAgIH0KKwogICAgICAg
ICByZXR1cm4gc3ltYm9sVGFibGU7CiAgICAgfQogCkBAIC0xMTgxLDYgKzEyMzEsNyBAQCBwcml2
YXRlOgogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25l
ZCBtX3Njb3BlVHlwZSA6IDM7CiAgICAgQ2FjaGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1Rh
YmxlPiBtX2FyZ3VtZW50czsKKyAgICBDYWNoZWRQdHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0
YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCA5ZTE3MmI2YWVhNzRiMDYyZGU5
ZmZlZjhkYTU2ZDQ5MzRmOTRkNTU2Li5lNzJiZDM1ZjE1YjdmMzEyYWE0YTFiZTJjMTIyZGQxY2E3
MDNjMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2Vk
Q29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICB0eXBlZGVmIHR5
cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5v
ZGU7CiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4
ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3Vy
Y2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0
TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJz
ZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0
ciwgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJj
ZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNl
TW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRy
LCB2YXJpYWJsZXNVbmRlclREWiwgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsK
ICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4
IDYyYzBkNTk1NzNhNmE2Mzk5MDkzOWYxY2VmOTRkOTE5ZDdkNzNjNmUuLjdlZTcxM2M5YzRhMjU5
MmZmMzMwZjY4ZjVhNjY0NmVkM2U4MDlhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAjZGVmaW5lIElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tl
eXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFM
SVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVz
LT5uYW1lIyNQcml2YXRlTmFtZSgpKQogI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAs
IG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+bmFtZSMjU3ltYm9sKCkpCisjZGVmaW5lIElO
SVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIjIiAjbmFtZSkpCiAKIENvbW1vbklkZW50aWZpZXJz
OjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00
NSw2ICs0Niw3IEBAIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0p
CiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlX
T1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJ
QUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNf
RUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX1NZTUJPTCkKKyAgICBKU0NfQ09NTU9O
X0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChJTklUSUFMSVpFX1BSSVZBVEVfRklFTERf
TkFNRSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKaW5kZXggOGRiYzZkN2FjMTg3YjcxOWQwNDUyNjU3MDI4MDk2MTYyMjlk
NThkYy4uODU1OGJhYjkwY2U1ZDhiYjNkZDEwOGUwODQ1ZjhhNTI5NGY0NWY0NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0y
MDksNiArMjA5LDkgQEAKICAgICBtYWNybyh3cml0YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAK
KyNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQobWFjcm8p
IFwKKyAgICBtYWNybyhjb25zdHJ1Y3RvcikKKwogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJ
RVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAgIG1hY3JvKGF3YWl0KSBcCiAgICAgbWFjcm8o
YnJlYWspIFwKQEAgLTMyMyw2ICszMjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
Q19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19J
REVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5k
ZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JB
TAogCisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwo
bmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQcml2YXRlRmllbGQ7CisgICAgICAgIEpTQ19D
T01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJJVkFURV9GSUVMRF9HTE9CQUwpCisjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9Q
UklWQVRFX0ZJRUxEX0dMT0JBTAorCiAgICAgICAgIC8vIENhbGxlcnMgb2YgdGhpcyBtZXRob2Qg
c2hvdWxkIG1ha2Ugc3VyZSB0aGF0IGlkZW50aWZpZXJzIGdpdmVuIHRvIHRoaXMgbWV0aG9kIAog
ICAgICAgICAvLyBzdXJ2aXZlIHRoZSBsaWZldGltZSBvZiBDb21tb25JZGVudGlmaWVycyBhbmQg
cmVsYXRlZCBWTS4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRFeHRlcm5h
bE5hbWUoY29uc3QgSWRlbnRpZmllciYgcHVibGljTmFtZSwgY29uc3QgSWRlbnRpZmllciYgcHJp
dmF0ZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggYjdiODAyMGEyMDA0ZGJiMjZhZDdmMDU3OWI3ZDdhMjliMTMwN2Qx
Ny4uNWYyMTk3YmE5NmNlNDljMWM0NTI4NjEyMmQ4YzdlZTQyMThiYzcyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xMzA1
LDYgKzEzMDUsNjkgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90
aGlzKQogICAgIFJFVFVSTl9QUk9GSUxFRChiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJv
cGVydHksIHNsb3QpKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxf
ZGlyZWN0KQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9w
R2V0QnlWYWxEaXJlY3Q+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRlY29k
ZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEdFVF9DKGJ5dGVj
b2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlz
Q2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0
cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlm
IChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CisgICAgICAg
ICAgICBSZWZQdHI8QXRvbVN0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbVN0cmluZyA9IGFzU3RyaW5n
KHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9tU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAg
ICAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ0F0b21TdHJp
bmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXND
ZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21TdHJp
bmcuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fUFJPRklMRUQocmVzdWx0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdWJzY3JpcHQuaXNV
SW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Cisg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAg
ICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAmbWV0YWRhdGEubV9hcnJheVByb2Zp
bGU7CisKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAg
aWYgKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgICAg
IFJFVFVSTl9QUk9GSUxFRChhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChnbG9iYWxPYmpl
Y3QsIGkpKTsKKyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChiYXNlVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAob2Jq
ZWN0LT5jYW5HZXRJbmRleFF1aWNrbHkoaSkpCisgICAgICAgICAgICAgICAgUkVUVVJOX1BST0ZJ
TEVEKG9iamVjdC0+Z2V0SW5kZXhRdWlja2x5KGkpKTsKKworICAgICAgICAgICAgYm9vbCBza2lw
TWFya2luZ091dE9mQm91bmRzID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChvYmplY3QtPmlu
ZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMgJiYgaSA8IG9iamVjdC0+YnV0dGVy
Zmx5KCktPnB1YmxpY0xlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGV4cGFu
ZCB0aGlzIHRvIEFycmF5U3RvcmFnZSwgSW50MzIsIGFuZCBtYXliZSBEb3VibGU6CisgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk0
MAorICAgICAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKKyAgICAgICAgICAgICAgICBza2lwTWFya2luZ091dE9mQm91bmRzID0gZ2xvYmFs
T2JqZWN0LT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUob2JqZWN0LT5zdHJ1Y3R1cmUodm0pKSAm
JiBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlQ2hhaW5Jc1NhbmUoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFza2lwTWFya2luZ091dE9mQm91bmRzICYmICFDb21tb25T
bG93UGF0aHM6OmNhbkFjY2Vzc0FyZ3VtZW50SW5kZXhRdWlja2x5KCpvYmplY3QsIGkpKQorICAg
ICAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+c2V0T3V0T2ZCb3VuZHMoKTsKKyAgICAgICAgfQor
CisgICAgICAgIFJFVFVSTl9QUk9GSUxFRChqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBi
YXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIENIRUNL
X0VYQ0VQVElPTigpOworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtl
eShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworCisgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
T3duUHJvcGVydHkpOworICAgIGJvb2wgZm91bmQgPSAocHJvcGVydHkuaXNQcml2YXRlTmFtZSgp
KQorICAgICAgICA/IGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZhdGVGaWVsZChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCBzbG90KQorICAgICAgICA6IGJhc2VWYWx1ZS5nZXRPd25Qcm9wZXJ0
eVNsb3QoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKGZvdW5kID8gc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5KSA6IGpzVW5kZWZpbmVkKCkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBhODI0OGQ0NTI0
YTNjNWRmMDlkYWY2NDk3NDY2Yjk3MjUwMzMyNTZmLi43YzFkODIzYWE2YTExMWNhMzQ3YWI0MWEy
YTA5YTFkNzE4Mjg4NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMjcyLDYgKzI3Miw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X2J5X3ZhbF9kaXJlY3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVf
ZGF0YV9wcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDVmZmY3MDQ2MWVkY2VjZjZiZDA4YjYxMjY0NmQxYjVk
OGM3MTg4NjcuLmVhYWJjY2UyYzk0NWU1YzcxMWI0MGY0NjA1OTQ4MGU0MDkwNTgzOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CkBAIC0zMjgsNiArMzI4LDE2IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9i
YWxPYmplY3QsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAK
K0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIGludmFsaWQgcHJpdmF0ZSBmaWVsZCIpLCBkZWZh
dWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKworSlNPYmplY3QqIGNyZWF0ZVJl
ZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fu
bm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IGU5YTUyMzFmYzU2NGIwN2RkMzlkMWNhYzE0
NjkwOTVhM2RiZDQxMmMuLmUxYjdlMDIxMThkNDhiNWY1NDQ4NzQ1YmQzNjRhMmU5Mzk5NzNiNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmgKQEAgLTUzLDYgKzUzLDggQEAgSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFy
YW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oSlNHbG8KIEpTT2JqZWN0KiBj
cmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNP
YmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiBKU09iamVjdCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRl
TmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJp
dmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOwogU3RyaW5nIGVycm9yRGVzY3JpcHRpb25G
b3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiBKU19FWFBPUlRfUFJJVkFURSBF
eGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2Nv
cGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCA2NjUxYTAyZjcyZDIzNGM5MmI3NzE4NDkyMDdmNDMxZmQwMDI3YjIzLi40NWZh
N2M0NmJmMWU3MzlhYjQ4NmQyZjZjY2FkZTMwMzZiZmM1ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMTEsNiArMzExLDEy
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3Bl
cnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3duUHJvcGVydHkoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSkpOwogfQogCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFBy
aXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFT
U0VSVF9FTkFCTEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRD
YWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewpAQCAtMTIwMSw2ICsxMjA3LDExIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3Jt
YXQpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBQcml2YXRlU3ltYm9scyAvIFByaXZhdGVOYW1l
cworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7CisKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQogICAg
IC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUNvbXBpbGVT
dHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXgg
NGM2Zjk5NTViZTllMjJmZTAzYzkyYjZjNDBjNTc3YjEyNGVkNzdmYy4uOTJhOWNmMzVlMzUzMzI1
NDFkZTI0NjBlNWQ2NGY5ZTZiNmFiYzIzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCkBAIC0xNzksNiArMTc5LDExIEBAIHB1YmxpYzoKICAgICAvLyBiZWluZyBy
ZXR1cm5lZC4gT25jZSB0aGlzIGlzIGZpeGVkIHdlIHNob3VsZCBtaWdyYXRlIGNvZGUgJiByZW1v
dmUgdGhpcyBtZXRob2QuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCisgICAgc3RhdGljIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxp
bmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgIGlubGluZSB2b2lkIHB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgaW5s
aW5lIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKwogICAgIHVuc2lnbmVkIGdldEFycmF5TGVu
Z3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5k
ZXhpbmdUeXBlKCkpKQpAQCAtMTQ0Myw2ICsxNDQ4LDc4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBK
U09iamVjdDo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjCiB7CiB9CiAKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0ds
b2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKKworQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcml2
YXRlRmllbGRTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICBBU1NFUlQocHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKKworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICBB
U1NFUlQodmFsdWUpOworICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICBKU0NlbGwq
IGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgSlNUeXBlIHR5cGUgPSBjZWxsLT50eXBl
KCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShjZWxsKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0
eXBlLCB0eXBlICE9IEdldHRlclNldHRlclR5cGUgJiYgdHlwZSAhPSBDdXN0b21HZXR0ZXJTZXR0
ZXJUeXBlKTsKKyAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHByaXZhdGUgZmllbGRzIGRvIG5v
dCBzdXBwb3J0IGdldHRlci9zZXR0ZXIgZmllbGRzLiBMYXRlciBvbiwgd2Ugd2lsbCBuZWVkIHRv
IGZpbGwgaW4gYWNjZXNzb3IgbWV0YWRhdGEgaGVyZSwKKyAgICAgICAgLy8gYXMgaW4gSlNPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KCkKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQorICAgIH0KKworICAgIHNsb3Quc2V0
VmFsdWUob2JqZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKCFKU09iamVjdDo6Z2V0
UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
IHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgZmFsc2UpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnVlKTsKK30K
KworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhh
c1Byb3BlcnR5KTsKKyAgICBpZiAoIUpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihn
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB2b2lkKCkp
OworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAg
ICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBwdXRTbG90KTsKK30KKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OmRlZmluZVByaXZhdGVGaWVs
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZt
ID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBpZiAoSlNPYmplY3Q6OmdldFByaXZh
dGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZGVmaW5l
ZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1dERpcmVjdCh2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9CisKIC8vIEl0IG1heSBzZWVtIGNyYXp5
IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZl
cmVuY2UKIC8vIHNpbmNlIHRoaXMgaXMgZnVuY3Rpb24gdmVyeSBob3QgaW4gdmFyaWFibGUgbG9v
a3VwCiB0ZW1wbGF0ZTxib29sIGNoZWNrTnVsbFN0cnVjdHVyZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggYjNjMjcyMDIyODA2YjgxMTQzNTdkODFkZTlm
M2I1ZmMxMDM1NGQ5YS4uOTI3NDA2NGVmNWM5N2U1OGRkMjA1NmJmNWZmNmY3ZjcwZmZmMzkyNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMzOSw2ICsz
MzksMTAgQEAgdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpT
U2NvcGUqIHNjb3BlLCBWYXJpYWJsZUVudmlyb25tZW4KICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvIGVuZCA9
IHN5bWJvbFRhYmxlLT5lbmQobG9ja2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2Nr
ZXIpOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5r
ZXkpOworICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKKyAg
ICAgICAgICAgICAgICByZXN1bHQudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICB9
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAppbmRleCBmOWE4YmQ1NTc0YzE1YjRiNmE4MWVjMGJkY2YyMWExMGM2MDM2YWI1Li5mNDg0ZDhm
ZGExMzNhOTVlODYwNGUwMDAyYWNhYjFlYzk5M2Y0MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUwOCw2ICs1MDgsNyBAQCBjb25zdGV4cHIg
Ym9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwg
dXNlUHVibGljQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIg
d2lsbCB1bmRlcnN0YW5kIHB1YmxpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAg
ICAgdihCb29sLCB1c2VMb2dpY2FsQXNzaWdubWVudE9wZXJhdG9ycywgZmFsc2UsIE5vcm1hbCwg
IkVuYWJsZSBzdXBwb3J0IGZvciBcP1w/PSwgfHw9LCBhbmQgJiY9IGxvZ2ljYWwgYXNzaWdubWVu
dCBvcGVyYXRvcnMuIikgXAogICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdFeGVjdXRhYmxlSXNs
YW5kQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgIkZvciB0aGUgYXJtNjQgRXhlY3V0YWJsZUFs
bG9jYXRvciwgaWYgdHJ1ZSwgc2VsZWN0IHdoaWNoIHJlZ2lvbiB0byB1c2UgcmFuZG9tbHkuIFRo
aXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nIHRoYXQganVtcCBpc2xhbmRzIHdvcmsuIikgXAorICAg
IHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
dGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xh
c3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggYmM0
OWRjOTgyYzczMjgyYmVkZWIyYjFkZWZjNzY3YTg1YWIzNWFmOS4uNzc5MGNmNTczZDI2Zjk1MmY0
OTk5YTUzZjNjMjc1ZDY3NTFhM2NkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTgzLDYgKzE4MywxMSBAQCBTeW1ib2xUYWJsZSogU3lt
Ym9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgICAgIGZvciAoOyBpdGVy
ICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV91
bmlxdWVUeXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQor
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4
IGUyMzRkMzE0YzY5ZWQyZDExMTMyMzkxNGJhMjdkM2Q5MzE1NTI2NzYuLjMxZjgxZmFlMDJmYjIw
MWQzMjE4YmIwZmI0YzUyZDIyMWY0Y2Q2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N5bWJvbEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1MCw2ICs0NTAsOCBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJl
ZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zm
c2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4g
TG9jYWxUb0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7CisgICAgdHlwZWRlZiBX
VEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2
YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCkBAIC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIHN0ZDo6Zm9yd2Fy
ZDxFbnRyeT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZhdGVOYW1l
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2Ug
cHJpdmF0ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5n
ZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxp
ZGl0eSgpLgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVzKCkpOworICAgICAgICByZXR1
cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwg
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIHZvaWQgYWRk
UHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0
YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRh
aW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsK
KyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lkIHNldChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRyeSYmIGVu
dHJ5KQogICAgIHsKQEAgLTcyOSwxOCArNzQ5LDIxIEBAIHByaXZhdGU6CiAgICAgU2NvcGVPZmZz
ZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKU0xv
Y2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDog
MTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlv
biBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5
cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1hcCBtX3VuaXF1
ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1h
cDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAg
IFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQcml2YXRlTmFt
ZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1f
dXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3Bl
IDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25lZCBtX3Njb3Bl
VHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJvbFRhYmxl
UmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVkQXJndW1lbnRz
VGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCBjMDdlMzg2Y2ZmNDE4MWI0ZDhhYzViZTIwYzM3NjM2ZGM4ZGE4
MGE1Li42ZTIxMjc4YzE5OTNmMDczNjQ4NDQ4ZmYwYWI2YzEzZDNiNGE5MjgwIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTA1LTA2ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRzIHVwb24gdGhl
IGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9mIHByaXZhdGUK
KyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25z
LW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xh
c3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanM6CisgICAgICAgICogc3RyZXNz
L2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDUtMDYgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgREZHIEJ5VmFs
IG5vZGVzIHdpdGggQXJyYXlNb2RlcyBzaG91bGQgY2xvYmJlclRvcCB1bnRpbCBGaXh1cCBwaGFz
ZSBydW5zLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
YXMtZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1m
dW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGExMTYzZTE2N2VkMGQ2YzVmNjc2NTZkMDFiMzRkODhj
Yjc0ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtYXMtZnVuY3Rpb24uanMKQEAgLTAsMCArMSwxOCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsK
KyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20gPSAoKSA9PiAy
NTsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICB9Cit9
CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAyNSk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMmE0ZjQzNTRmODk3ZjExMzc0MDg3MTI2MDQ2YzZmMWRmZDNlN2U5Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2Fj
aGVkLWJ5dGVjb2RlLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCBydW5CeXRlY29kZUNhY2hlKCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsK
KyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI2YgPSAzOworCisg
ICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCBj
ID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAzKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliNTNmNmIyMzEwN2RkYWEyYjQ1YmMzZjA1OGVhYmYxMWNmMDE5M2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUt
b3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisg
IGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBm
YWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHBy
In0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZXF1YWxzKGEsIGIp
IHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAm
JiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBjbGFzcyBpcyBk
ZWNsYXJlZCBpbiBldmFsIHNwZWNpZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQgZW5vdWdoCisv
LyBwcm9wZXJ0aWVzIHRvIHRoZSBjbGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxkcyBpbiBvdXQt
b2YtbGluZSBwcm9wZXJ0eSBzdG9yYWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xhc3MgQmFzZSB7
CisgIC8vIE1ldGhvZHMKKyAgY29uc3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5lIHByb3BlcnRp
ZXMKKyAgICAke0FycmF5KDIwMCkubWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9ID0gJHtpfTtc
bmApLmpvaW4oIiIpfQorICB9Cit9KWApOworCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZl
bnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5mcmVlemUodGhpcyks
IDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0LmlzRnJvemVuKHRoaXMpLCAiT2JqZWN0
LmlzRnJvemVuKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlz
LiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkg
eworICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBh
c3NlcnQuZXF1YWxzKGMueDE1MCA9PT0gMTUwKTsKKyAgYy54MTUwID0gMC4xOworICBhc3NlcnQu
ZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQo
KSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIp
OworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDJjYzBm
ZjkyZDZiYWM5Yzg0ZDkwNjk0MzRmM2I3N2Q3ZGY1YjIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzCkBAIC0wLDAgKzEsNDMg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xl
dCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2Fn
ZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHBy
fWApOworICB9LCB7CisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09
IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9
KTsKKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMueCA9IDE7Cisg
IH0KK30KKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRz
IEJhc2UgeworICAjaSA9IChPYmplY3QuZnJlZXplKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAo
YXNzZXJ0KE9iamVjdC5pc0Zyb3plbih0aGlzKSwgIk9iamVjdC5pc0Zyb3plbih0aGlzKSIpLCB0
aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0
aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJp
dmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYy54ID0gMC4xOworICBhc3NlcnQu
ZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQo
KSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIp
OworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYx
ZjcxOGQ5NzQyNzBhYzhhMTllNWY3YmYwNTIwMGRlYjkzNzZjZAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzCkBAIC0wLDAg
KzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIp
CisKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlDb250ZW50KGEs
IGUpIHsKKyAgICBhc3NlcnQoYS5sZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBhcnJheXMgZG9l
c24ndCBtYXRjaCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykKKyAg
ICAgICAgYXNzZXJ0KGFbaV0sIGVbaV0sICJhWyIgKyBpICsgIl0gPSAiICsgYVtpXSArICIgYnV0
IGVbIiArIGkgKyAiXSA9ICIgKyBlW2ldKTsKK30KKworbGV0IGFyciA9IFtdOworCitjbGFzcyBQ
cm94eUJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gbmV3IFByb3h5
KHRoaXMsIHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKG9iaiwgcHJvcCkgeworICAgICAg
ICAgICAgICAgIGFyci5wdXNoKHByb3ApOworICAgICAgICAgICAgICAgIHJldHVybiBvYmpbcHJv
cF07CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30KKworY2xhc3MgVGVzdCBl
eHRlbmRzIFByb3h5QmFzZSB7CisgICAgI2YgPSAzOworICAgIG1ldGhvZCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgdCA9IG5ldyBUZXN0KCk7CitsZXQgciA9
IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6ICIgKyByKTsK
KworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2QnXSk7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjlkODYyMTYwMWQ1ZGUzNGE0MjgzNDZkNTFjY2Y4MjJmYmY1NjBhOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCkBA
IC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7
Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9IGAKK3ZhciBDID0gY2xhc3MgeworICAgIGFzc2VydE91
dE9mTGluZVZhbHVlKCkgeworICAgICAgICBhc3NlcnQodGhpcy4jZjIwMCwgImZvbyIpOworICAg
IH0KK2A7CisKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkrKykgeworICAgIGtsYXNzU291
cmNlICs9ICIgICAgI2YiICsgaSArICI7XG4iOworfQorCitrbGFzc1NvdXJjZSArPSAiICAgICNm
MjAwID0gXCJmb29cIjtcbn0iOworCitldmFsKGtsYXNzU291cmNlKTsKKworZm9yIChsZXQgaSA9
IDA7IGkgPCAyOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hc3NlcnRPdXRP
ZkxpbmVWYWx1ZSgpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTJkYjhiMTZhZTBkNWNiN2YzZjU1ODUyN2U0MDBlYjUyMmMxYjM2MQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXBy
ZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDUyIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0g
T2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgewor
ICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAk
e21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwg
eworICBmYWxzZShleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSB0cnVlKQor
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBi
ZSBmYWxzZSwgYnV0IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBp
ZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBi
KSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0
byBiZSAke2J9YCk7CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBjbGFzcyBpcyBkZWNsYXJlZCBp
biBldmFsIHNwZWNpZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQgZW5vdWdoCisvLyBwcm9wZXJ0
aWVzIHRvIHRoZSBjbGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxkcyBpbiBvdXQtb2YtbGluZSBw
cm9wZXJ0eSBzdG9yYWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xhc3MgQmFzZSB7CisgIC8vIE1l
dGhvZHMKKyAgY29uc3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5lIHByb3BlcnRpZXMKKyAgICAk
e0FycmF5KDIwMCkubWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9ID0gJHtpfTtcbmApLmpvaW4o
IiIpfQorICB9Cit9KWApOworCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNp
b25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh0aGlz
KSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydC5mYWxzZShPYmplY3QuaXNFeHRlbnNpYmxlKHRo
aXMpLCAiT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0
KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitm
dW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50
RXh0ZW5zaW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09IDE1MCk7CisgIGMueDE1MCA9
IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3Nl
cnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0
ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3Qo
aSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2
ZW50LWV4dGVuc2lvbnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1w
cmV2ZW50LWV4dGVuc2lvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM2MDk3Mjc4MTRmYzYwNWUxMDRjNjY0
ZDZlM2U2MGUyZDRjNWMzMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qcwpAQCAtMCwwICsxLDQ3IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNz
ZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAi
IikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsK
KyAgfSwgeworICBmYWxzZShleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSB0
cnVlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIi
fSB0byBiZSBmYWxzZSwgYnV0IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxzKGEsIGIpIHsK
KyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBi
ICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
JHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0
b3IoKSB7CisgICAgdGhpcy54ID0gMTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRlRmllbGRBZnRl
clByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5wcmV2ZW50
RXh0ZW5zaW9ucyh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydC5mYWxzZShPYmplY3Qu
aXNFeHRlbnNpYmxlKHRoaXMpLCAiT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSIpLCB0aGlzLiNp
ICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNp
ID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZp
ZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYy54ID0gMC4xOworICBhc3NlcnQuZXF1YWxz
KGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7
Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9y
ICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0LW9mLWxpbmUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1vZi1saW5lLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc2MWIzMGU2MmUyODM5YWQ0NzUyMzFmMzdjYTRkZmM1MTE2MTBkNTQKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1v
Zi1saW5lLmpzCkBAIC0wLDAgKzEsNTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5j
dGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2Up
CisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRv
IGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGZhbHNlKGV4cHIsIG1lc3Nh
Z2UgPSAiIikgeworICAgIGlmIChleHByID09IHRydWUpCisgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIGZhbHNlLCBidXQgd2FzICR7ZXhw
cn1gKQorICB9LAorICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBh
ICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisg
ICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7
CisKKy8vIFRoZSBiYXNlIGNsYXNzIGlzIGRlY2xhcmVkIGluIGV2YWwgc3BlY2lmaWNhbGx5IHNv
IHRoYXQgaXQgY2FuIGFkZCBlbm91Z2gKKy8vIHByb3BlcnRpZXMgdG8gdGhlIGNsYXNzIHRvIHN0
b3JlIHByaXZhdGUgZmllbGRzIGluIG91dC1vZi1saW5lIHByb3BlcnR5IHN0b3JhZ2UuCitsZXQg
QmFzZSA9IGV2YWwoYChjbGFzcyBCYXNlIHsKKyAgLy8gTWV0aG9kcworICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAvLyBEZWZpbmUgcHJvcGVydGllcworICAgICR7QXJyYXkoMjAwKS5tYXAoKF8sIGkp
ID0+IGAgIHRoaXMueCR7aX0gPSAke2l9O1xuYCkuam9pbigiIil9CisgIH0KK30pYCk7CisKK2Ns
YXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAg
I2kgPSAoT2JqZWN0LnNlYWwodGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0
LmlzU2VhbGVkKHRoaXMpLCAiT2JqZWN0LmlzU2VhbGVkKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsK
KworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRl
clByZXZlbnRFeHRlbnNpb25zOworICBhc3NlcnQuZXF1YWxzKGMueDE1MCA9PT0gMTUwKTsKKyAg
Yy54MTUwID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7
CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVz
dCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkK
KyAgdGVzdChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLXNlYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA4M2U3YWIzNWQ3YzE0YTZjNzY5MTI2MjZjZmQxMjgxN2M1YTBiMDkKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFs
LmpzCkBAIC0wLDAgKzEsNDMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xh
c3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBh
c3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRy
dWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYg
KGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikp
CisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8g
YmUgJHtifWApOworICB9Cit9KTsKKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkgewor
ICAgIHRoaXMueCA9IDE7CisgIH0KK30KKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50
RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3Quc2VhbCh0aGlzKSwgNDIp
OworICAjYXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNTZWFsZWQodGhpcyksICJPYmplY3QuaXNT
ZWFsZWQodGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7
IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7Cisg
IGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGMueCA9
IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3Nl
cnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0
ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3Qo
aSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2Ut
ZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY5Nzg4MDU3YjFiZjQ5NTUwYTBlOGYzZDk4YTk0MWE4MzdjZjExYzMKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2Ut
ZXZhbC5qcwpAQCAtMCwwICsxLDE1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiLCAiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24g
YXNzZXJ0KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihtZXNzYWdlKTsKK30KKworbGV0IGluc3QgPSBuZXcgY2xhc3MgeworICBhID0gZXZhbCgiKGkp
ID0+IGkuI2IiKTsKKworICAjYiA9IHt9OworfTsKKworaW5zdC5hKGluc3QpLnggPSAxOworYXNz
ZXJ0KGluc3QuYShpbnN0KS54ID09IDEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1zdHJlc3MtaW5zdGFuY2UuanMKaW5kZXggZTUxNjI5OWE3OTJjNjM4NGI4NDJjNjk3ZjQxZmNl
ZDdmNWNmZmZjZi4uNTA2OWE3ZGE1YTE1NWRjYzA2MDRlNDYzMmI5MGU4MzA5MzlmZTgzNiAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwor
KysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCkBAIC0x
LDExICsxLDE1IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9dHJ1ZSIs
ICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKIAogY2xhc3MgQSB7CiAgICAgYSA9IDA7
CiAgICAgYiA9IDE7CisgICAgI2MgPSAwOworICAgICNkID0gMTsKICAgICBlID0gZnVuY3Rpb24g
KCkgeyByZXR1cm4gMDsgfTsKKyAgICAjZiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfTsKICAg
ICBbImciXSA9IDA7CiAgICAgaCA9IGV2YWwoInRydWUiKTsKKyAgICAjaSA9IGV2YWwoImZhbHNl
Iik7CiB9CiAKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2dldC1ieS12YWwtZGlyZWN0LWdldHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNjMzNjJm
YWE2M2U0MDU2MjVkMWZlY2VjZTk5YmNkMjY2YjllYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9nZXQtYnktdmFsLWRpcmVjdC1nZXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMjkg
QEAKKy8vIFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
MSIpCisvL0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5v
TExJbnQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCisvLyBHZXRCeVZhbERpcmVjdCBz
aG91bGQgdGhyb3cgd2hlbiB0aGUgcmVjZWl2ZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWVzdGVk
IHByaXZhdGUgcHJvcGVydHkKK2xldCBpLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAg
I3ggPSBpOworICAgIGNvbnN0cnVjdG9yKCkgeyBpZiAoaSA9PT0gMzApIHJldHVybiB7IFtTeW1i
b2wudG9TdHJpbmdUYWddOiAid2l0aG91dCAjeCJ9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJl
dHVybiBvYmouI3g7IH0KKyAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAi
d2l0aCAjeCI7IH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgNTA7ICsraSkgewor
ICAgICAgICBsZXQgYyA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KGMpOworICAg
ICAgICBpZiAocmVzdWx0ICE9PSBpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCBDLngoJHtjfSkgdG8gYmUgJHtpfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0K
K30gY2F0Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUu
Y29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30K
KworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwg
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQy
Y2YxMmI2NGExNjQzMDJlZDI3ZjViOTFlMDc1NDQ3MWUxMTdlNgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWluaW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcwpA
QCAtMCwwICsxLDkzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogKGEsIGUpID0+IHsK
KyAgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiAo
ZXhwZWN0ZWRFeGNlcHRpb24sIGZ1bmN0b3IsIG0pID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFeGNlcHRpb24pKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihtKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKygoKSA9PiB7CisgICAgY2xh
c3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc3RhdGljIGFj
Y2VzcyhvKSB7CisgICAgICAgICAgICByZXR1cm4gbz8uI2ZpZWxkOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksICd0ZXN0Jyk7Cisg
ICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3ModW5kZWZpbmVkKSwgdW5kZWZpbmVkKTsK
KyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhudWxsKSwgdW5kZWZpbmVkKTsKKyAg
ICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBDLmFj
Y2Vzcyh7fSk7CisgICAgfSwgIk9iamVjdCB3aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRo
cm93Iik7Cit9KSgpOworCisvLyBDaGFpbmVkIGNhc2UKKygoKSA9PiB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc3RhdGljIGNoYWluZWRB
Y2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8ucHJpdmF0ZT8uI2ZpZWxkOworICAgICAg
ICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBsZXQgbyA9IHtwcml2YXRlOiBj
fTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAgIGFzc2Vy
dC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNjZXNzKG8pLCAndGVzdCcpOworICAgICAgICBhc3NlcnQu
c2FtZVZhbHVlKEMuY2hhaW5lZEFjY2Vzcyh7fSksIHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2Vy
dC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNjZXNzKHtwcml2YXRlOiBudWxsfSksIHVuZGVmaW5lZCk7
CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAg
by5wcml2YXRlID0ge307CisgICAgICAgIEMuY2hhaW5lZEFjY2VzcyhvKTsKKyAgICB9LCAiT2Jq
ZWN0IHdpdGhvdXQgcHJpdmF0ZSBmaWVsZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisKKygoKSA9
PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsKKworICAgICAgICBzZXRGaWVsZCh2
KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAg
ICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICByZXR1cm4gby4jZmllbGQ/LnByb3Bl
cnR5OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAgIGMuc2V0RmllbGQoe3Byb3BlcnR5
OiAndGVzdCd9KTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhjKSwgJ3Rlc3Qn
KTsKKworICAgICAgICBjLnNldEZpZWxkKHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2VydC5zYW1l
VmFsdWUoQy5hY2Nlc3MoYyksIHVuZGVmaW5lZCk7CisKKyAgICAgICAgYy5zZXRGaWVsZChudWxs
KTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhjKSwgdW5kZWZpbmVkKTsKKyAg
ICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBDLmFj
Y2Vzcyh7fSk7CisgICAgfSwgIk9iamVjdCB3aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRo
cm93Iik7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUt
YWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1u
YW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWQ4ZTIxOTIz
ZjIwMjRkMDIyMDJmM2EyZTE2YmI0OWUxZjk1YjNkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcwpAQCAt
MCwwICsxLDIwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9
MSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0
aHJvd3M6IChleHBlY3RlZEVycm9yLCBmdW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUgKyAiIGJ1
dCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGNsYXNzIEJhc2UgeworICAgICAgICBbe30uI3hd
ID0gMTsgCisgICAgICAgICN4ID0gImZvbyI7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMTM1NDY4
NjkyN2YzNmNlZDlhOTlhZWU3NDQ5MWQ4ZjdmMjMzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzQg
QEAKKy8vIFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
MSIpIC0tIEN1cnJlbnRseSwgZWFnZXIgSklUIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUg
ZmllbGQgYWNjZXNzLgorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEi
KQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xM
SW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gUHJpdmF0ZUZpZWxkICJDcmVh
dGUiIGFjY2VzcyBzaG91bGQgdGhyb3cgaWYgd3JpdGluZyB0byBhIG5vbi1leGlzdGVudCBQcml2
YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8IDI5ID8gdGhpcyA6IGM7CisgICAgfQor
fQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4ID0gaSsrOworICAgIHgoKSB7IHJldHVy
biB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0cnkgeworICAgIGZvciAobGV0IGogPSAx
OyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9IG5ldyBDQzsKKyAgICAgICAgaWYgKHgu
eCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB4LngoKSB0
byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7Cisg
ICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNvbnN0cnVjdG9yICE9PSBU
eXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJl
Y3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHBy
aXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4NjUzZGQyMjIxN2QxZDE2ZTcwNjdkOGFkMjQ1OThjNDU4
Y2M4OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0
LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwzMiBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikgLS0gQ3VycmVudGx5LCBlYWdlciBKSVQg
aXMgbm90IHN1cHBvcnRlZCBmb3IgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MuCisvL0AgcnVuRGVmYXVs
dCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKQorCisvLyBQcml2YXRlRmllbGQgIlB1dCIgYWNjZXNzIHNob3VsZCB0aHJvdyBpZiB3cml0
aW5nIHRvIGEgbm9uLWV4aXN0ZW50IFByaXZhdGVOYW1lLgorbGV0IGMsIGkgPSAwLCB0aHJldyA9
IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3g7CisgICAgY29uc3RydWN0b3IoKSB7IHJldHVybiBp
IDwgMzAgPyB0aGlzIDogeyBbU3ltYm9sLnRvU3RyaW5nVGFnXTogIndpdGhvdXQgI3giIH07IH0K
KyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeCA9IGkrKzsgfQorICAgIGdldCBbU3lt
Ym9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRoICN4IiB9Cit9CisKK3RyeSB7CisgICAg
Zm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGxldCBvYmogPSBuZXcgQzsK
KyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChvYmopOworICAgICAgICBpZiAocmVzdWx0ICE9PSBq
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBDLngoJHtvYmp9KSB0byBi
ZSAke2p9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAg
IHRocmV3ID0gdHJ1ZTsKKyAgICAvLyBydmFsIG9mIEFzc2lnbm1lbnRFeHByZXNzaW9uIGlzIGV2
YWx1YXRlZCBiZWZvcmUgUHJpdmF0ZUZpZWxkRmluZCgjeCwgbHJlZikgaXMgcGVyZm9ybWVkLAor
ICAgIC8vIHRodXMgYGlgIGhhcyBhbHJlYWR5IGJlZW4gaW5jcmVtZW50ZWQuCisgICAgaWYgKGkg
IT09IDMxIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBl
OworICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
IFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
aW5kZXggMzY5MTgyMjZlYzdiYWU2YjhhZTVkZWUxZDQyNjY4ZGZhMGE3ZTdkNy4uNTMzOTY1NmFk
NGQyNDdkYWVlYjZiMzNjODI3NzNjYjNkYjI1YzVmOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtNiw2
ICs2LDcgQEAgZmxhZ3M6CiAgIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0OiB1c2VJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJs
aWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCisgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2
YXRlQ2xhc3NGaWVsZHMKICAgbG9naWNhbC1hc3NpZ25tZW50LW9wZXJhdG9yczogdXNlTG9naWNh
bEFzc2lnbm1lbnRPcGVyYXRvcnMKIHNraXA6CiAgIGZlYXR1cmVzOgpAQCAtMTUsNyArMTYsNiBA
QCBza2lwOgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NDkzMQogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKIAotICAgIC0gY2xhc3MtZmllbGRzLXByaXZh
dGUKICAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxk
cy1wdWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400357</attachid>
            <date>2020-05-27 11:38:12 -0700</date>
            <delta_ts>2020-05-28 07:54:41 -0700</delta_ts>
            <desc>Patch v20</desc>
            <filename>bug-206431-20200527143811.patch</filename>
            <type>text/plain</type>
            <size>195492</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDY1YmU1YmE4YTJkYWE3ZTg3ZTE0YzJjMmNkZmQ3ZDdjMzY4YzZjLi5mYzg0ZjlhMTQ2MjllZTE0
YjdkMzc1YmNkNWFkODZhNWUzYzc5ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjggQEAKKzIwMjAtMDUtMjcgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X3ByaXZhdGVfbmFtZSksIG9uZSBjaGFuZ2VkIG9wY29k
ZSAob3BfcHV0X2J5X3ZhbF9kaXJlY3QpLgorICAgICAgICAgICAgLSBBIG1ldGhvZCBmb3IgY3Jl
YXRpbmcgU3ltYm9sIG9iamVjdHMgd2l0aCBhIG51bGwgUHJpdmF0ZVN5bWJvbEltcGwgaXMgZXhw
b3NlZCBhcyBhCisgICAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgKEBjcmVhdGVQcml2YXRl
U3ltYm9sKS4KKyAgICAgICAgICAgIC0gTnVsbCBQcml2YXRlIFN5bWJvbHMgYXJlIHN0b3JlZCBi
eSBuYW1lIChub3QgYSB2YWxpZCBpZGVudGlmaWVyKSBpbiBhIEpTU2NvcGUsIGFuZAorICAgICAg
ICAgICAgICBhcmUgbG9hZGVkIGZyb20gdGhlIG91dGVyIHNjb3BlIHdoZW5ldmVyIHRoZXkgYXJl
IHVzZWQgYnkgdGhlIG1vZGlmaWVkIG9wY29kZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgdG8g
b3BfcHV0X2J5X3ZhbF9kaXJlY3QgaW5jbHVkZSBhIG5ldyBieXRlY29kZSBvcGVyYW5kIChQdXRC
eVZhbEZsYWdzKSB3aGljaCBhcmUKKyAgICAgICAgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IG92ZXJ3cml0aW5nIG9yIGRlZmluaW5nIGEgbmV3IHByaXZhdGUgZmllbGQuIFNwZWNpZmljYWxs
eSwgd2hlbiBpdAorICAgICAgICBjb21lcyB0byBwcml2YXRlIGZpZWxkIGFjY2Vzc2VzLCBpdCdz
IG5lY2Vzc2FyeSB0byB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcgYSBmaWVsZAor
ICAgICAgICB3aGljaCBkb2VzIG5vdCBleGlzdCwgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGRlZmlu
ZSBhIHByaXZhdGUgZmllbGQgd2hpY2ggaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBkZWZpbmVk
LgorCisgICAgICAgIER1cmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIGNsYXNzIGV4cHJlc3Npb24s
IGJlZm9yZSB0aGUgY2xhc3MgZWxlbWVudCBsaXN0IGlzIGV2YWx1YXRlZCAoaW4gY2FzZQorICAg
ICAgICBhbnkgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgZXhwcmVzc2lvbnMgcmVmZXIgdG8gYSBu
ZXcgcHJpdmF0ZSBmaWVsZCksIGEgbmV3IFByaXZhdGVTeW1ib2wgaXMKKyAgICAgICAgY3JlYXRl
ZCBmb3IgZWFjaCBpbmRpdmlkdWFsIHByaXZhdGUgZmllbGQgbmFtZSwgYW5kIHN0b3JlZCBpbiB0
aGUgY2xhc3MgbGV4aWNhbCBzY29wZS4KKworICAgICAgICBQcml2YXRlIGZpZWxkIG5hbWVzIGFy
ZSBsb2FkZWQgZnJvbSBzY29wZSBiZWZvcmUgdGhlaXIgdXNlLiBUaGlzIHByZXZlbnRzIG11bHRp
cGxlIGV2YWx1YXRpb25zCisgICAgICAgIG9mIHRoZSBzYW1lIGNsYXNzIHNvdXJjZSBmcm9tIGFj
Y2Vzc2luZyBlYWNoIG90aGVyJ3MgcHJpdmF0ZSBmaWVsZHMsIGJlY2F1c2UgdGhlIHZhbHVlcyBv
ZiB0aGUKKyAgICAgICAgc3ltYm9scyBsb2FkZWQgZnJvbSB0aGUgY2xhc3Mgc2NvcGUgd291bGQg
YmUgZGlzdGluY3QuIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHByb3Bvc2FsIHRleHQsCisgICAg
ICAgIGFuZCBpcyB0aGUga2V5IHJlYXNvbiB3aHkgd2UgdXNlIEJ5VmFsIGxvb2t1cHMgcmF0aGVy
IHRoYW4gQnlJZCBsb29rdXBzLgorCisgICAgICAgIFRvIGlsbHVzdHJhdGUsIHR5cGljYWwgcHJp
dmF0ZSBmaWVsZCBhY2Nlc3Mgd2lsbCBsb29rIGxpa2U6CisKKyAgICAgICAgPEZpZWxkIFJlYWRz
PgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAi
I3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJv
bD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFBy
b3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBnZXRfcHJpdmF0ZV9uYW1l
ICAgPHZhbHVlPT4sIDxyZWNlaXZlciAtLS0gcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4KKwor
ICAgICAgICA8RmllbGQgV3JpdGVzPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3Bl
PT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRf
ZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhy
b3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAg
ICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3lt
Ym9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWU+CisKKyAgICAgICAgPEZpZWxkIERl
ZmluaXRpb24+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRT
Y29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAg
ICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8
R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92
YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+
LCA8UHV0QnlWYWxQcml2YXRlTmFtZXxQdXRCeVZhbFRocm93SWZFeGlzdHM+CisKKyAgICAgICAg
VGhlIGZlYXR1cmUgaXMgY3VycmVudGx5IGhpZGRlbiBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBK
U0M6Ok9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxG
bGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
UHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNEaXJlY3Qg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjplY21hTW9kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFjY2VzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkUHV0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpQdXRCeVZhbEZsYWdzKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJp
YWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlBy
ZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRz
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAg
ICAgKEpTQzo6ZGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9p
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9w
cmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVP
cHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlE
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChK
U0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJU
eXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
bGV4V2l0aG91dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0
Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNl
ci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VEb3ROb2RlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QmFzZURvdE5vZGU6OnR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQ
cml2YXRlTmFtZSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRl
cm4pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXpl
clNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVBy
aXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVy
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhw
ZWN0ZWRUb2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzUHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNU
byk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1l
cyBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjp1c2VQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6
OmZpbmRQcml2YXRlTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwcml2YXRlTmFt
ZVNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1l
c1RvT3V0ZXJTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bWF0Y2hBbmRVcGRhdGUpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpw
YXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHBhcnNl
ci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURv
dEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3Ap
OgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6c3dhcCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5Ojppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5OjpzZXRJc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6UHJpdmF0ZU5hbWVFbnRyeSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6
OmlzVXNlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzRGVjbGFy
ZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc1VzZWQpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc0RlY2xhcmVkKToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZh
dGVOYW1lRW50cnk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50OjpWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6Om1hcFNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpk
ZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojp1
c2VQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZh
dGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZh
dGVOYW1lc1NpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpo
YXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlQ
cml2YXRlTmFtZXNUbyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6
OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpnZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFz
UHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVE
YXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFy
ZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6
OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6
OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29k
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJv
cik6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZp
bmVQcml2YXRlRmllbGQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAg
IChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAg
ICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDUtMjcgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlcGxhY2UgYGZl
YXR1cmVHdWFyZGAgYW5kIGBhdmFpbGFiaWxpdHlgIHdpdGggYSBjb21iaW5lZCBgY29uZGl0aW9u
YCB0aGF0IGFjY2VwdHMgYW55IG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOTFhNmUzYTFiMDQwZTBhZWZlY2Q5MzUzMjdmZGFkNmU5MjEzMzlkNC4uYThmNmRjOWYy
YzcyMDBmOGNhYzRhMmQxZDI0YTVmZWQ2ZDVlOGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTQwLDYgKzU0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2Rl
L1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAorICAgIGJ5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAg
ICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzZTgyMGVhZjM4MGNkYzdjYzRlNDBhOGNj
ZjMxZmQzZGExNWJmNGQuLjFlMmU0MTE4NjdiZjU5ZWUxZDZlOTUzZmE2NTQ4ZWU2YTUyN2Q2YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDYgKzEyNTAsNyBAQAogCQk4
NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3
NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTQxMTQsNiArNDExNSw4IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlh
cnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRo
ID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRC
eVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1
M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODQwMCw2ICs4NDAzLDggQEAKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyog
UHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRC
eUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5
SWRWYXJpYW50LmggKi8sCisJCQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuY3BwICovLAorCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZs
YWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywK
IAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8s
CiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywK
QEAgLTEwMTQ4LDYgKzEwMTUzLDcgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyog
UHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYz
QzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njc2QzZF
ODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3Qu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJlOTVmYjVm
OGQzOGIxZTI5YzUxM2I2ZmMwYzgyNWJlZDVkMGIyNDIuLjZjYWU0ZDRiZTA4MWZjMmY0NTBkOTUx
YWRlZWE3NzEyYzAxYmJkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OCw2
ICsyNjgsNyBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0
QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKaW5kZXggODFiMDNhN2U1MmVkNjg5MTlkOTE2MjJjMmU3NDkyMDBhNmVhMmM4
OC4uNDA4ZWRjZTczOTUwZDE2YjMwNjU0ZWI1OWUzYzY3MDQ5MTU3ZTZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTY4LDcgKzE2OCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3Nl
bWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5z
dGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAotICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0
aWFsaXplcikgCisgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFj
cm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAogbmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklW
QVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNGIwMmIyYzdi
MDkzYTA3YjllZWY1MWM5NmIyYTU4NzBjNjVlM2ViMC4uODQ1ZGU3MzZlNzA1Zjc4YjlhOTNkMGQ1
NjE4OTBkOTNlZWQzOTNmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCkBAIC00OSw2ICs0OSw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5
cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3Ms
CisgICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUs
CiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTUwLDYgKzU1MSwxOSBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6
Z2V0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAg
ICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0Nl
bGxdLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNl
OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NzUsNyArNTg5LDcgQEAgb3AgOnB1dF9ieV92YWxfZGly
ZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IGVjbWFNb2RlOiBFQ01BTW9kZSwKKyAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CmluZGV4IGQ1NmFkY2NmMTBiZjE5YzVjOGUwMjE3OGNkZTEzNmRmNGJjODc1ZWIuLjIwNWU3OTRl
NTEzNzdjNTRiYjQ2N2M4ZjJlMmFjYmMxYzJmNTkwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0b3JTdHJ1Y3R1cmVQ
bmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEVudW1lcmF0b3JHZW5lcmljUG5h
bWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVy
dHkpCisgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hhc0luc3Rh
bmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5zdGFuY2Vv
ZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTQyNiw2ICs0MjcsNyBAQCB2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydQogICAgIERFRlMoT3BJbnN0YW5jZW9mLCBkc3QpCiAgICAgREVGUyhPcEluc3RhbmNl
b2ZDdXN0b20sIGRzdCkKICAgICBERUZTKE9wR2V0QnlWYWwsIGRzdCkKKyAgICBERUZTKE9wR2V0
UHJpdmF0ZU5hbWUsIGRzdCkKICAgICBERUZTKE9wVHlwZW9mLCBkc3QpCiAgICAgREVGUyhPcElk
ZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1YTkzODQw
NzMxNjYwN2QyZjE2ZWU2ZDZmMDdjMTY0NWJjYzU3OGY1Li4zZDBlNTc2YmJmNDZlOWQzYTRjYWU2
ZGQwZDMxZTc3Mjc3YjM5MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtMTI1MSw2ICsxMjUxLDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0g
MDsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldFByaXZh
dGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBKU0NlbGwqIHByb3Bl
cnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKworICAgICAgICAgICAgaWYg
KCghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpICYmICghc3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcml2YXRlIHBy
b3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAw
OworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICAgICAgbWV0YWRh
dGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPE9wUHV0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAg
U3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOwog
ICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0
cnVjdHVyZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Zp
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggMGQ5NTcw
OTI2YWIxNDczNzhlYzMxNzI4MzhkYjIzNTg4MmRiN2JjZC4uMzlmZWUwYTY2OWEyODI2NTg1YTJh
NDkyMmEzODJiZjZiOGEwYWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5j
bHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRl
ICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5o
IgpAQCAtMjU2LDYgKzI1Nyw0NyBAQCBzdHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsK
ICAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNt
YU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpOwogICAgIH0KIH07CisKK3Rl
bXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNpemU+
IHsKKyAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5z
aWduZWRUeXBlOworCisgICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFuZCBhIDIg
Yml0IGVudW0sIGVuY29kZWQgYXM6CisgICAgLy8gICAgICAgICAgaXNTdHJpY3QKKyAgICAvLyAg
ICAgICAgICAgICB2CisgICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKKyAgICAvLyAg
ICAgICAgICAgXgorICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBOb25lLCAx
ID0gUHV0LCAyID0gQ3JlYXRlIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0
Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0gMTI7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQg
PSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKKyAgICB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQo
UHV0QnlWYWxGbGFncyBmbGFncykKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKKyAgICAgICAgYXV0byBpc1N0cmlj
dCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7Cisg
ICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7CisgICAgICAgIHJldHVybiAocHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAoaXNT
dHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgUHV0QnlWYWxGbGFn
cyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9
IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOworICAgICAgICBhdXRvIGlz
U3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAg
IGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdwaSAm
IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0KTsKKyAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgICAgICByZXR1cm4gYWNjZXNzID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPworICAgICAgICAgICAgaXNEaXJlY3QgPyBQdXRC
eVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRl
KGVjbWFNb2RlKSA6CisgICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKSA6
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSk7CisgICAg
fQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZp
dHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6Omlz
X2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggZTJjMWE0OWI0MzRjMGNjNTE1ODQ5NDQ1
YWNkOWZlZGJmNTk3YTAzNy4uNzA0MjU0YmJiN2E1ZGEzMTY5MWIzMTA2NjhiZjM2Y2EwNDU0ZWM1
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihB
cnJheSwgbnVsbHB0cikgXAogICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYo
Y2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihjcmVhdGVQcml2YXRlU3ltYm9sLCBudWxs
cHRyKQogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkg
bmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0MGE5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
VmFsRmxhZ3MuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorCisjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCit7CisgICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Cisg
ICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVj
dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7CisgICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZp
ZWxkQWRkKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5VmFsRmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWZmZDc5N2Y2NTg3ODc5YzBjMzIxNTlj
OTY1MDI4MjgyYTM5ZmNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
OiB1aW50OF90IHsKKyAgICBOb25lLAorICAgIFB1dCwKKyAgICBDcmVhdGUsCit9OworCitjbGFz
cyBQdXRCeVZhbEZsYWdzIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFs
RmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICAvLyBBIGRpcmVjdCBw
dXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2lu
ZyBpZiB0aGUKKyAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgorICAgIGNvbnN0
ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7Cisg
ICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURlZmluZVBy
aXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRC
eVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOworICAg
IH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQdXRQcml2YXRl
RmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxG
bGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAg
ICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQorICAgIEVDTUFN
b2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQorICAgIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6Tm9uZTsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6UHV0OyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7
IH0KKworcHJpdmF0ZToKKworICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJl
Y3QsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisg
ICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmUpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3Ms
IEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKKyAgICAgICAg
LCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQorICAgICAgICAsIG1fZWNtYU1vZGUo
ZWNtYU1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9pc0RpcmVjdDsKKyAgICBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBFQ01BTW9k
ZSBtX2VjbWFNb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCA2MTEyNzlmNjA5YTA4NTg5YWRjZTkx
YzJhNWM4YWY2NDgwODBjNGM2Li5mOTBkNTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZi
MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKQEAgLTI3LDYg
KzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90
RGlyZWN0IH07CitlbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0
ZUZpZWxkQ3JlYXRlLCBEaXJlY3RQcml2YXRlRmllbGRQdXQgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBiY2Y3ZDNhZDg1ZWIxZmNmZDQxZmI3
Zjg5MTAyMmViOWI3ZmQ3ZDU3Li40NjFkOWZhZGQ0OGIzNWJjOTRlZGQ2MTBiNzM4N2NlYTkwMmMx
NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKSkpOwogICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMgPSBleGVjdXRhYmxlLT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3Vw
ZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFy
c2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAK
ICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCA4ODQ2MTFiOGM5Mzc2ODIzYWI5YWY4YmE1ZmEyOThmYTQzZWEz
M2NlLi43YjdhZDMxNmExZTg4Mjg2Zjk0ZTFiMzIzMWJlMmJjY2M4M2FiNTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMTg3OSw2ICsxODc5LDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlu
c3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAK
ICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IDogUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5
KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBl
dmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVk
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjY2MworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBA
IC0yNjgwLDkgKzI2ODUsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK3sKKyAgICBPcEdldFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJv
cGVydHkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKKyAgICBPcFB1dEJ5VmFs
RGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6
Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3
MDQsNiArMjcxNSwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dElu
dGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRl
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVy
dHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1v
ZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVy
U2FtcGxlckJlZ2luOjplbWl0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGFmYTNkOTIzNzE3NGEz
ZjdjOTQ0MTRjOGU0ZWI3Yzg3YWUzNWM0NzEuLmNjNjNhOTI2YmNkMjMzNGJlOWIzZTJkODY4YzVk
ZTgyNjEwNWJhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc5OCwxMSArNzk4LDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlz
VmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsK
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgs
IFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZh
dGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAK
ICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0
U3VwZXJTYW1wbGVyRW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYWUxMWM0YjU5MDk0ZDgzM2FhNjZjZmFlODE5
NTMzNDU5NTA5Y2M1NS4uNDc0OTJjZThmNDFkNzE4NTI3MzAwYWM3YTM1MjZhMzY1ZmUyMGY0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtNTQ0LDExICs1NDQsMzAgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRI
b21lT2JqZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoZnVuY3Rpb24sIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCksIGhvbWVPYmplY3QpOwog
fQogCit2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAg
Ly8gV2FsayB0aGUgbGlzdCBhbmQgZGVjbGFyZSBhbnkgUHJpdmF0ZSBwcm9wZXJ0eSBuYW1lcyAo
ZS5nLiBgI2Zvb2ApIGluIHRoZSBwcm92aWRlZCBzY29wZS4KKyAgICBmb3IgKFByb3BlcnR5TGlz
dE5vZGUqIHAgPSB0aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGNvbnN0IFByb3Bl
cnR5Tm9kZSYgbm9kZSA9ICpwLT5tX25vZGU7CisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFBy
b3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNy
ZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0
ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisKKyAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzeW1ib2wgPSBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJp
dmF0ZVN5bWJvbC5nZXQoKSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgYXJndW1lbnRzLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBE
ZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZSwgdmFyLCBzeW1ib2wuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJ
bml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICB9CisgICAg
fQorfQorCiBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVn
aXN0ZXJJRCogcHJvdG90eXBlLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxk
TG9jYXRpb25zKQogewotICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyBy
ZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7
CiAgICAgUmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKKworICAgIC8vIEZhc3QgY2FzZTogdGhp
cyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgZm9yICg7
IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBw
LT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9w
ZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAtNzEwLDYgKzcyOSw5
IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CisgICAgLy8gUHJpdmF0ZSBmaWVs
ZHMgYXJlIGhhbmRsZWQgaW4gdGhlIHN5bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIg
ZnVuY3Rpb24sIG5vdCBoZXJlLgorICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlO
b2RlOjpQcml2YXRlKSk7CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9IGdlbmVy
YXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lOwpAQCAtODQwLDE2ICs4NjIsNjYgQEAgUmVnaXN0ZXJJ
RCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0
OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhp
c1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgp
LCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJ
RCogcmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERlc3QuZ2V0KCks
IGJhc2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3Qu
Z2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAor
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVm
UHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkg
eworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBu
YW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3Vu
ZCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFz
ZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJO
b2RlKCkpIHsKKyAgICAgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUg
PSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGRzdCwgYmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgbV9pZGVudCk7Cit9CisK
K1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCit7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdEdldFBy
b3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBkc3QsIGJhc2UsIHRoaXNWYWx1ZSk7Cit9CisKK1JlZ2lz
dGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdp
c3RlcklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAg
ICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVz
dCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFy
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRl
TmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZSwgcHJpdmF0ZU5h
bWUuZ2V0KCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgp
KSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gZ2Vu
ZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHZhbHVlKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIG1faWRlbnQsIHZhbHVlKTsKK30KKwor
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0UHV0UHJvcGVy
dHkoZ2VuZXJhdG9yLCBiYXNlLCB2YWx1ZSwgdGhpc1ZhbHVlKTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTE3MzQs
MTEgKzE4MDYsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRPcHRpb25hbENoZWNrKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAg
IH0KICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgp
LCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBpZiAoYmFz
ZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyQmFzZSA9IGVtaXRT
dXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZ1bmN0aW9uLmdldCgpLCBzdXBlckJhc2UuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRl
bnQpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBiYXNlSXNTdXBlciA/IGVtaXRT
dXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCk7CisgICAgZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmdW5jdGlvbi5nZXQoKSwg
YmFzZS5nZXQoKSk7CiAKICAgICBpZiAoaXNPcHRpb25hbENoYWluQmFzZSgpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE9wdGlvbmFsQ2hlY2soZnVuY3Rpb24uZ2V0KCkpOwpAQCAtMjA1OSw2ICsy
MTI5LDIyIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RT
dGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CisKKyAgICBpZiAoZG90QWNjZXNzb3It
PmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJhc2VJc1N1cGVyKTsKKyAgICAg
ICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShw
cml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQp
OworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGly
ZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRl
TmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQ
b3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZh
bHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFs
dWUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmUoZHN0LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VJ
c1N1cGVyKSB7CkBAIC0yMjgyLDYgKzIzNjgsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6
ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBk
b3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAg
UmVnaXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1lKCkp
IHsKKyAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZh
cik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0
ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKwor
ICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQo
KSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBlbWl0SW5jT3JEZWMo
Z2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0
KCksIHZhbHVlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRz
dCwgcHJvcERzdC5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNW
YWx1ZTsKICAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpIHsKICAgICAgICAgdGhpc1Zh
bHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKQEAgLTMxMjQsMTEgKzMyMjUsNyBAQCBSZWdp
c3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5l
cmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkgPyByZXN1bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgaWYgKG1fYmFz
ZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVl
ID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlk
KGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQo
KSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKKyAgICBlbWl0UHV0UHJvcGVydHkoZ2Vu
ZXJhdG9yLCBiYXNlLmdldCgpLCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZm9yd2FyZFJlc3VsdC5nZXQo
KSk7CiB9CkBAIC0zMTQwLDIzICszMjM3LDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFu
ZFNpZGUobV9iYXNlLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5l
cmF0b3IpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lv
bkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1Zh
bHVlOwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgdGhpc1ZhbHVl
ID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlz
VmFsdWUuZ2V0KCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpLCB0aGlzVmFsdWUpOworCiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1p
dFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBP
cGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVz
Y3JpcHRvcigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlm
IChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0
QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7
Ci0gICAgZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQo
KSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0g
ZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlz
VmFsdWUpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5n
ZXQoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNob3J0Q2lyY3Vp
dFJlYWRNb2RpZnlEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC00NjIwLDYgKzQ3MDksMTcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9w
ZXJ0eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9z
aXRpb24pOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6
OlR5cGU6OlByaXZhdGVOYW1lOiB7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZSgqbV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2Nh
bCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJp
YWJsZXMiKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9u
KCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50LT5sZW5ndGgoKSk7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51
bGxwdHIsIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZv
dW5kKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVQcml2YXRlRmllbGQoZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVk
TmFtZTogewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMg
Y2xhc3MgZmllbGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgzMzAKQEAgLTQ2MzAsNyArNDczMCw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiQ29tcHV0ZWQgbmFt
ZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlv
bigpICsgMSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFy
LCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwpAQCAtNDcyMiw2
ICs0ODIyLDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBnZW5lcmF0b3IuZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVy
LmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9zaXRpb24p
OwogCiAgICAgaWYgKG1fY2xhc3NFbGVtZW50cykgeworICAgICAgICBtX2NsYXNzRWxlbWVudHMt
PmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iuc2NvcGVS
ZWdpc3RlcigpKTsKKwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IGluc3RhbmNlRmll
bGRMb2NhdGlvbnM7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lQ2xhc3NFbGVtZW50cyht
X2NsYXNzRWxlbWVudHMsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAoIWluc3RhbmNlRmllbGRMb2NhdGlvbnMu
aXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IGNkZWMxODZmMTU5NWQwMTEyOGJhMDAwMzQ2MWJiZGUzZjJiMDllMmUu
LjU1MTZjMmQzYTYzNjlmN2ZjNDNlMzJhYjYzMWFkY2M2MjNhMTM2ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MSw2ICs3MSw3
IEBACiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZs
YWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdu
bWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0xMjY1LDYgKzEyNjYs
MTggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07
CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK0VDTUFNb2RlIGVjbWFNb2RlKEJ5
dGVjb2RlIGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOworfQor
Cit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxE
aXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2Rl
Lm1fZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFs
bG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAg
ICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC04MjI2LDcgKzgyMzksNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRl
eCBvc3JFeGl0SW5kZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlk
KQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0
ZWNvZGUubV9lY21hTW9kZSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50
aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwg
b3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOwogICAgIH0KIAogICAgIGlmICghY29t
cGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTgyMzcsNyArODI1MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRlCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0g
ICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0
IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUu
bV9lY21hTW9kZSkpOworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3Qg
PyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
T3BJbmZvKGVjbWFNb2RlKGJ5dGVjb2RlKSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAv
LyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkg
Y2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJp
Yy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKaW5kZXggZTg1MDI1MGQwNGIyZmJjMWZjN2I0OTBlNzc1MDkxY2Y2ODhkOGVjNi4uNmVi
Nzc3MTA3ZGZmY2Y3MmYxMzQwMDYzY2YxYzE1NDA3NzgyMGE1NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk3LDYgKzI5Nyw3IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJCiAKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bf
Y3JlYXRlX2dlbmVyYXRvcl9mcmFtZV9lbnZpcm9ubWVudDoKKyAgICBjYXNlIG9wX2dldF9wcml2
YXRlX25hbWU6IC8vIEZJWE1FOiBvcF9nZXRfcHJpdmF0ZV9uYW1lIHdpbGwgbmVlZCBERkcvRlRM
IHN1cHBvcnQgdG8gc2hpcCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3By
b2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzZDIyNWRjYTJkOGI4MDdjNzhmMjMyN2FjMjNkODE3
MWU3ZjBmMjI5Li4yNmRhZjk3OWUxN2NhMGFmMjZmOTI2MWRkYmQ4OTJiNmY1YjhlOGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
MTQzNjYsNyArMTQzNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBl
Y21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5k
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IGZiN2ZjZWVjYjQ1Y2I3OWQ5NzFiNTAzOWY0MDYzNjhkMzMyNDEzZmYuLmQ0
MDRjZmRlNDkxOTE0ZjYwN2ZmMWU1YjcyZjQ0ODk0NjhmYzE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQyMDEsNyArNDIwMSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBd
LmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/
IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3
YzYyODc5YzE2YjEwYzgzMS4uZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTE0MSw2ICsxNDEs
NyBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2
MGZjNGQ0MjY1NmMxNDkuLjk2YzE5YTE3YmRjMmE3ZDEwZjE1ZjliY2EzOTAyMTYyMWM5OWRiODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3Qp
IFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KSBcCiAg
ICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAorICAg
IG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGlt
aXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3Ry
aWN0T3B0aW1pemUpIFwKICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1h
Y3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNo
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDA1ZDNhMTY1NjQwZTk4NDYwM2Jk
OWQwZGI3ZjQzNjNhMGM5MmNlMy4uNmQxNmQ5OTBhMGRhNmE4ZTY1ZGY0MmY1YzE5MTYzNTY1M2Rj
MDFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
cHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMp
CisgICAgICAgIERFRklORV9TTE9XX09QKGdldF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklO
RV9TTE9XX09QKHB1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1
dF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChyZXNvbHZlX3Njb3Bl
X2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IGQ2MzFmMDFjYTg0MGJmMzQ0ZTYzNjI4YWM1YjM1NzVlYzRkZjgzOTIuLjAxYmM0NmZhMzM1
ZWI2MWE3NzhmYWQwN2M1MWNkM2NlODQwY2FkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApA
QCAtNDAxLDcgKzQwMSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+CiAgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChP
cCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOwogCi0gICAgICAgIC8v
IElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBQdXRCeVZhbC4KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKKworICAgICAgICAv
LyBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVj
b2RlLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKworICAgICAgICAvLyBJZGVu
dGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2
b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQg
c2NyYXRjaCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDU0ODU4MzkwZWZiN2Iz
NmI0ZjhlOWVmOGZjZWNmMThjMDllNDIwYjMuLjIzNjgzMDQ1ZjFmZDFmNmFhNDVlNjFkNjM4OWFl
ZjFmYzI4MjAxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCB2b2lkIEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNj
cmF0Y2gsIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgOiBK
SVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQotICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKLSAgICAsIG1fcHV0S2luZChwdXRLaW5kKQorICAgIEVDTUFNb2Rl
IGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFz
ZSwgdmFsdWUpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX3B1
dEtpbmQocHV0S2luZCkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFy
KHNjcmF0Y2gpOwogfQpAQCAtMTUyLDYgKzE1MiwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRp
b25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKKyAg
ICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgICAgICBB
U1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXpl
OworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplOworICAgIH0KKwogICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAg
ICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDk3NmY3MWJiYWFjOTFkOTNl
NjA3MDY3Nzk2YzZjNTI0ZTA0OWQ1ZmQuLjczMjlkNmI3MzgxNGQ2YzRiYTU1MmE1ODkzZTcyYjAy
MWU2YTUxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMCwxMSArMTMxLDEyIEBAIGNsYXNzIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0
KCkpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmUpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0
S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1v
ZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CiAgICAg
CiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0x
NDMsNiArMTQ1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2Rl
OwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9w
cml2YXRlRmllbGRBY2Nlc3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAppbmRleCA5YjZjMDUyNDhiYTI5Mjk2Zjk5ZWQzNzZmYjk0ODI4ZmJjOTMz
Y2JmLi5kNTNlNjk3N2QzOWQ3NTllNjc0MTJmZDlhZDFiOWU2NzgyYjk3ZDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjg2LDYgKzY4NiwzNiBAQCBBTFdBWVNf
SU5MSU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlP
cCBieXRlY29kZSkKICAgICByZXR1cm4gYXJpdGhQcm9maWxlOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZShPcCBvcCkKK3sK
KyAgICByZXR1cm4gb3AubV9lY21hTW9kZTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQoreworICAg
IHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19J
TkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFs
RGlyZWN0IG9wKQoreworICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE9wPgorUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApCit7CisgICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nl
c3NLaW5kKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDNh
NDFlNzYyZWM4ZDgzY2M0MmFjZTFkMTNiMmQ0Nzk2MmI0Njc1NzUuLjNkZTg0MjUzYmMyZmUxMjFk
Y2UzNTExMDYzMGM1ZTMwMjRjMjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtNjk3LDYgKzY5NywxMTcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmEKICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3Qp
OwogfQogCit9IC8vIGV4dGVybiAiQyIKKwordXNpbmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9w
ZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJik+OworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBwdXRQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJh
Y2smIGNhbGxiYWNrID0gUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlk
ZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKKworICAgIFB1dFByb3BlcnR5U2xvdCBwdXRTbG90KGJhc2VPYmplY3QsIHRy
dWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJp
dmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAg
ICAgICBjYWxsYmFjayh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50
KTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBkZWZpbmVQcml2YXRlRmllbGQoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNWYWx1
ZSB2YWx1ZSwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJp
dmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7
CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKworICAgIFB1
dFByb3BlcnR5U2xvdCBwdXRTbG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJ
ZENvbnRleHQoKSk7CisgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjayh2bSwg
Y29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30KKworZXh0ZXJuICJD
IiB7CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZp
ZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAg
ICBkZWZpbmVQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFs
dWUsIGlkZW50aWZpZXIsIHZhbHVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdD
YWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBl
KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpKTsKKworICAgIGRlZmluZVByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbPV0oVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYg
cHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpPcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6
ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJh
c2VPYmplY3QpKTsKKworICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5
cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKKwor
ICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9s
ZFN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBw
dXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGlk
ZW50aWZpZXIsIHZhbHVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNo
ZWFibGVJZGVudGlmaWVyKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisKKyAgICBwdXRQcml2
YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlm
aWVyLCB2YWx1ZSwgWyZdKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSks
IGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQorICAg
ICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmpl
Y3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQ
cml2YXRlRmllbGRQdXQpOworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21h
TW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDllYTNjYmQ5MzRlYjQ3MzY5NzFkNmY5
ZTFiMjdlNzgxODhkNDY0MTAuLjY2NzA1ZTQ1OThhZjk2N2UwOTIwNTI2ODU4MTc1N2E5ODdiYWFm
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgs
NiArMTg4LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVs
ZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50
cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
UHV0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFN
b2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmlu
ZGV4IGVhNzMxYzMwMzk4MTFjMDI2Yzg1NTk5Y2E2MDk2YjY4MjZmMzg2YzIuLmNkZTNmZDUwMTRh
MTVlNjY0ZWMxMmI0OGFlN2VjOTAzNDkxYzM4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgSklUUHV0
QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwg
UHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3Ry
dWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBG
SVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZl
bHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92
YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOworICAgICAgICBl
Y21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNE
aXJlY3QpCkBAIC02NTgsOCArNjU4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNv
ZGUubV9mbGFncy5lY21hTW9kZSgpLAotICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3QpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGly
ZWN0LCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAppbmRleCBmYzJlNDRkNzkyYWFmMDQyOGYyMzBhZWZkZjk2NjQ4M2Y0ZWQ5Yjhm
Li5lYmM2M2QxNmU2OTNmYjA1NmVmMDZjMTZjMGNhZGY2YTc0MmY1NjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAg
LTQ0Myw2ICs0NDMsNDggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICByZXR1cm4gc2xv
d0Nhc2VzOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+CitKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2Vz
LCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQoreworICAgIC8vIGJhc2U6IHRhZyhyZWdUMSksIHBheWxv
YWQocmVnVDApCisgICAgLy8gcHJvcGVydHk6IHRhZyhyZWdUMyksIHBheWxvYWQocmVnVDIpCisK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKKyAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2so
cmVnVDIsIHJlZ1QyLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CisKKyAgICAvLyBXcml0ZSBi
YXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1aW5nIHRoZSB3cml0ZSBi
YXJyaWVyLAorICAgIC8vIHJlbG9hZCB0aGUgcmVnaXN0ZXJzLgorICAgIC8vCisgICAgLy8gSUMg
Y2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBp
cyBjZWxsLgorICAgIC8vIFdlIGFyZSBlbWl0dGluZyB3cml0ZS1iYXJyaWVyIGJlZm9yZSB3cml0
aW5nIGhlcmUgYnV0IHRoaXMgaXMgT0sgc2luY2UgMzJiaXQgSlNDIGRvZXMgbm90IGhhdmUgY29u
Y3VycmVudCBHQy4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIg
aW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRl
QmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKKyAgICBlbWl0TG9hZFBheWxvYWQoYmFz
ZSwgcmVnVDApOworICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOworCisgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQoYnl0ZWNvZGUpKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgZG9u
ZUNhc2VzLmFwcGVuZChqdW1wKCkpOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7CisKKyAgICAvLyBKSVRQdXRC
eUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxv
YWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0YWcuCisgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVn
VDEpOworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlv
bigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5h
bWUucmF3Qml0cygpKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKKworICAgIHJldHVybiBnZW47
Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQo
KSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKQEAgLTQ1NSw3ICs0OTcsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOworICAgICAg
ICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAo
aXNEaXJlY3QpCkBAIC02NjQsNyArNzA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7Cisg
ICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBiMTdlYzcy
NGI2MWViMTEwYjQyMjc4MzBkMmEyZDBlMmIyNjg4MmVjLi40NGJiYWZhMGZiOTU4NzliODgzMWFi
ZDZhMzUwOTMwNGFhZDgwNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2kKICAgICBpZiAoc2xv
dC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAgaWYg
KHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Q7CisgICAgICAgIGlmIChw
dXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwogICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdDsKICAgICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAt
NTMyLDYgKzUzNiwxMCBAQCBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlk
RnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdQogICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CisgICAgICAg
IGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkKKyAgICAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKKyAgICAgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAg
IGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTYyNSw2ICs2MzMsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jawogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICAgICAgICAgIGlmIChwdXRL
aW5kID09IE5vdERpcmVjdCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHV0S2luZCAh
PSBEaXJlY3RQcml2YXRlRmllbGRQdXQgJiYgcHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRD
cmVhdGUpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNo
YWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBudWxscHRyKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtNjQyLDYgKzY1MSwxMyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOworICAgICAg
ICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0
eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50Lmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBvbGRTdHJ1Y3R1
cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJs
ZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAx
ZmMyMzIyODkxMWM4N2ViYWVhYWI0MGM3NzRjNzE2YmNiZjVjMmQ1Li5jNTIzZThhNjAwNmRkYzUz
ZDI1OTlhNGQyNGM2ZTk0YjU0ZGNhZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNjAsNiArNjAsNyBAQAog
I2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
ICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDFkMDYxNWM3MDJmNjIxYTMxMzI2YWRkMTJiNjU1M2Vm
NDBmOWQ2M2MuLmQxZmQ2ZTYxNTNjYzhhODU2OGNjZWVmMjc5ZWZiY2Y1NzA5ZTBkNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA3
MCw2ICsxMDcwLDY0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
KQogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChnZXRCeVZhbCh2bSwgZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBieXRlY29kZSkpOwogfQogCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldFByaXZhdGVOYW1lPigp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgQVNTRVJUKHN1YnNjcmlwdC5pc1N5bWJvbCgpKTsK
KworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlw
dC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXRPd25Qcm9wZXJ0eSk7CisgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworCisgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgc2xvdC5pc0NhY2hl
YWJsZSgpICYmICFzbG90LmlzVW5zZXQoKSkgeworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVj
dHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKyAgICAgICAg
ICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0p
OworCisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVBy
b3RvKGEsIGIpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChhLT5yYXJlRGF0YSgpLT5z
aGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkuZ2V0KCkgPT0gYi0+cmFyZURhdGEoKS0+c2hhcmVk
UG9seVByb3RvV2F0Y2hwb2ludCgpLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYS0+cmFy
ZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJp
bmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoc2xvdC5pc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBj
YWNoZS4KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAwOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworCisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOworCisgICAgICAgICAgICAgICAgICAgIC8vICBVcGRhdGUgdGhlIGNhY2hlZCBwcml2YXRl
IHN5bWJvbAorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwg
Y29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTExMSwy
MCArMTE2OSw0MiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9k
aXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCk7Cisg
ICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcyA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRl
RmllbGRBY2Nlc3MoKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2Ny
aXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZp
ZWxkQWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3Vs
ZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VO
RCgpOwogICAgIH0KIAorICAgIGlmIChzdWJzY3JpcHQuaXNEb3VibGUoKSkgeworICAgICAgICBB
U1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKKyAgICAgICAgZG91YmxlIHN1YnNjcmlwdEFz
RG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CisgICAgICAgIHVpbnQzMl90IHN1YnNjcmlw
dEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1YnNjcmlwdEFzRG91YmxlKTsKKyAg
ICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5k
ZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgaXNTdHJp
Y3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxk
Tm90VGhyb3cpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFuIGV4Y2Vw
dGlvbi4KICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAg
ICAgIExMSU5UX0VORCgpOwogCisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9
PSBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJ
bmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUg
PyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJv
dyk7CiAgICAgZWxzZSB7CisgICAgICAgIGlmIChpc1ByaXZhdGVGaWVsZEFjY2VzcykgeworICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsK
KyAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCisg
ICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
dmFsdWUsIHNsb3QpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7ICAgIAorICAgICAgICB9CisK
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsK
ICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9i
amVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDhhZGVlMTZmYjVj
OTkwMGE3YmIyOGY0NzAwNzQ2ZDc0YzJmYmY0N2MuLjlhNzVmNjVjZWZhZjc5ZTUyMDk4ZTQ5NmRj
MWQwNDA2YjIyMjZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCkBAIC03Miw2ICs3Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVs
X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3Zh
bCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25h
bWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRf
YnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGly
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNTdlMzk4MmI4MzllYWY5ZWE5OGNmNDgyOTBkNjE0
MjMyMDQ0YTVhNi4uODRhNWFhZGQzMjM1ZWMyY2Y4ZjBkZGYxYzM1OWFkNDUyYWI5MjUzMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTE1MTksNyArMTUxOSw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0CiAKIGVuZCkKIAotCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0
QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAg
IG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCiAgICAgICAg
IGdldChtX2RzdCwgc2NyYXRjaCkKQEAgLTE1OTcsNiArMTU5NiwyOSBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZAogCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVf
bmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEodDUsIHQwKQorCisgICAgIyBTbG93IHBhdGggaWYg
dGhlIHByaXZhdGUgZmllbGQgaXMgc3RhbGUKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDApCisgICAg
bG9hZHAgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHksIHQxCisgICAgYnBu
ZXEgdDEsIHQwLCAub3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGdldChtX2Jhc2UsIHQwKQor
ICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUlEW3Q1XSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywg
dDMsIC5vcEdldFByaXZhdGVOYW1lU2xvdykKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0MgorICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0M10sIHQxLCAub3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRQcm9wZXJ0eUF0VmFy
aWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0
ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BH
ZXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKIAogbWFjcm8gcHV0QnlWYWxP
cChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0
aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggMTU2OWY0ODVhMTlk
ZmJlNjcwMDBjY2FmYmRkMDJlYTczNDIwZjlmOS4uZDZjNmVjOTcxNzhhNjY1NTc3ZWNlMmRmNzli
NGRlODI4YTVmZmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE1NjUsNyArMTU2NSw2IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0CiAKIGVuZCkKIAotCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9i
eV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwg
cmV0dXJuKQogICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAg
ICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQpAQCAtMTY0OSw2ICsxNjQ4LDI5IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkCiAKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0
ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0MiwgdDApCisKKyAgICAjIFNsb3cgcGF0aCBp
ZiB0aGUgcHJpdmF0ZSBmaWVsZCBpcyBzdGFsZQorICAgIGdldChtX3Byb3BlcnR5LCB0MCkKKyAg
ICBsb2FkcCBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eSwgdDEKKyAgICBi
cG5lcSB0MSwgdDAsIC5vcEdldFByaXZhdGVOYW1lU2xvdworCisgICAgZ2V0KG1fYmFzZSwgdDAp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRQcml2
YXRlTmFtZVNsb3cpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKKyAg
ICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQw
CisgICAgYmluZXEgdDAsIHQxLCAub3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9w
R2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCisgICAgbG9hZFByb3Bl
cnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldFBy
aXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQyLCB0MCkKKyAgICByZXR1cm4odDApCisKKy5vcEdldFBy
aXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfcHJp
dmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNv
ZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFk
YXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKaW5kZXggMTBhMTQ1M2Y4YmUyN2QyMmUwZTM1YTkwNmU1OTBkY2Y0N2FlMGY3Mi4u
MGMwNmIzNmE4OTIwNDk0YmUwYTQ2NjZhZWNlOTVmMzllZjhkMjkyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXIqIHByb3BlcnR5LCBEb3RUeXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5k
KQogICAgIHsKICAgICAgICAgaWYgKGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAgICAgICAgICAgICB1
c2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBu
b2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2Us
ICpwcm9wZXJ0eSk7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHksIHR5cGUp
OwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7
CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbm9kZS0+aXNBc3NpZ25tZW50TG9jYXRpb24oKTsKICAgICB9CiAK
KyAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCisgICAg
eworICAgICAgICByZXR1cm4gbm9kZS0+aXNQcml2YXRlTG9jYXRpb24oKTsKKyAgICB9CisKICAg
ICBib29sIGlzT2JqZWN0TGl0ZXJhbChjb25zdCBFeHByZXNzaW9uJiBub2RlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5vZGUtPmlzT2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQzOCwxNSArMTQ0Mywx
NSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0g
c3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90
Tm9kZSogbm9kZSA9IG51bGxwdHI7CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAo
ZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5j
YWxsUHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuY2FsbFByaXZhdGVOYW1lKCkpKQotICAgICAgICBub2RlID0gbmV3
IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CiAgICAgZWxzZSBpZiAoIXByZXZpb3VzQmFz
ZVdhc1N1cGVyICYmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1f
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKSkgewog
ICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIGhh
dmVuJ3QgdGF1Z2h0IHRoZSBieXRlY29kZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAgICAgICAgIC8v
IFJlZmxlY3QuYXBwbHkgeWV0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDY2OC4KICAgICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgp
IHx8IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkg
IT0gIlJlZmxlY3QiKQotICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGls
ZERlcHRoKTsKKyAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JB
cHBseUNoaWxkRGVwdGgpOwogICAgIH0KICAgICBpZiAoIW5vZGUpCi0gICAgICAgIG5vZGUgPSBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9k
ZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwg
YXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICBub2RlLT5zZXRTdWJleHBy
ZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJl
dHVybiBub2RlOwogfQpAQCAtMTU4Nyw3ICsxNTkyLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHIKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9k
ZSo+KGxvYyk7CiAKICAgICBpZiAob3AgPT0gT3BlcmF0b3I6OkVxdWFsKQotICAgICAgICByZXR1
cm4gbmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZv
dCgpLCBzdGFydCwgZW5kKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQXNz
aWduRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3Qt
PnR5cGUoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBl
bmQpOwogCiAgICAgaWYgKG9wID09IE9wZXJhdG9yOjpDb2FsZXNjZUVxIHx8IG9wID09IE9wZXJh
dG9yOjpPckVxIHx8IG9wID09IE9wZXJhdG9yOjpBbmRFcSkgewogICAgICAgICBhdXRvKiBub2Rl
ID0gbmV3IChtX3BhcnNlckFyZW5hKSBTaG9ydENpcmN1aXRSZWFkTW9kaWZ5RG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fz
c2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CkBAIC0xNTk1LDcgKzE2MDAsNyBAQCBFeHBy
ZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcgogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBS
ZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIs
IGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOworICAgIFJlYWRNb2RpZnlE
b3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5cGUoKSwgb3AsIGV4
cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0LCBlbmQpOwogICAgIG5vZGUtPnNl
dFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7
CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
CmluZGV4IDkxNzE3ODk2ZTQ0NDg1YmViNzk0MDcwODBiZTI2ZjliMzM5OGE5ZWQuLjM2NDhhNDQ4
NDNiNzJjZTk4NTE3MTc1MzBmZjUwNmVjNmE4YjgxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCkBAIC05NDUsMTAgKzk0NSwxMSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFy
Pjo6cAogICAgICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gUkVTRVJWRURfSUZfU1RSSUNUICYm
ICFzdHJpY3RNb2RlID8gSURFTlQgOiBrZXl3b3JkOwogICAgICAgICB9CiAgICAgfQotICAgIAot
ICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVp
bHRpbkZ1bmN0aW9uOworCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICcj
JzsKKyAgICBib29sIGlzQnVpbHRpbk5hbWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2lu
Z0J1aWx0aW5GdW5jdGlvbjsKICAgICBib29sIGlzV2VsbEtub3duU3ltYm9sID0gZmFsc2U7Ci0g
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpIHsKKyAgICBpZiAoaXNCdWlsdGluTmFtZSkgewogICAgICAg
ICBBU1NFUlQobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKTsKICAgICAgICAgc2hpZnQoKTsKICAg
ICAgICAgaWYgKG1fY3VycmVudCA9PSAnQCcpIHsKQEAgLTk1Niw4ICs5NTcsMTIgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKICAgICBjb25zdCBMQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJj
ZVB0cigpOworCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAg
ICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkgfHwgbV9jdXJyZW50ID09ICdcXCcpOwog
ICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKQogICAgICAgICBzaGlmdCgpOwpAQCAt
OTY5LDcgKzk3NCw4IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFM
V0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgCiAgICAgaWYgKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIgfHwgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKSB7CiAgICAg
ICAgIGludCBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudFNvdXJjZVB0cigpIC0gaWRlbnRpZmll
clN0YXJ0OwotICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uICYmIGlzUHJpdmF0
ZU5hbWUpIHsKKyAgICAgICAgaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQs
IGlkZW50aWZpZXJMZW5ndGgpOworICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9u
ICYmIGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgICAgIGlmIChpc1dlbGxLbm93blN5bWJvbCkK
ICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX2FyZW5hLT5tYWtlSWRlbnRpZmllcihtX3ZtLCBt
X3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmxvb2tVcFdlbGxLbm93blN5bWJvbChp
ZGVudGlmaWVyU3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpKTsKICAgICAgICAgICAgIGVsc2UKQEAg
LTk5MSwyMCArOTk3LDIxIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgfSBlbHNlCiAg
ICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKChy
ZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJG
bGFnczo6SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc1ByaXZhdGVOYW1lKSB7CisgICAgYXV0
byBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBp
ZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5j
b250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzQnVpbHRpbk5h
bWUpIHsKICAgICAgICAgQVNTRVJUKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBp
ZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnN0IEhhc2hU
YWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAg
ICAgICBBU1NFUlQoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwogICAg
ICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgICAgIEpTVG9rZW5UeXBlIHRv
a2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwotICAg
ICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1v
ZGUgPyB0b2tlbiA6IElERU5UOworICAgICAgICAgICAgcmV0dXJuICh0b2tlbiAhPSBSRVNFUlZF
RF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUgPyB0b2tlbiA6IGlkZW50VHlwZTsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAg
fQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHRlbXBs
YXRlIDw+CkBAIC0xMDIxLDcgKzEwMjgsMTIgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAn
Iyc7CiAgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIo
KTsKKworICAgIGlmIChpc1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgVUNo
YXIgb3JBbGxDaGFycyA9IDA7CiAgICAgQVNTRVJUKGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRTdGFy
dChtX2N1cnJlbnQpIHx8IFUxNl9JU19TVVJST0dBVEUobV9jdXJyZW50KSB8fCBtX2N1cnJlbnQg
PT0gJ1xcJyk7CiAgICAgd2hpbGUgKGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRQYXJ0KG1fY3VycmVu
dCkpIHsKQEAgLTEwNDUsNiArMTA1Nyw5IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAg
fSBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogICAgIAorICAgIGlm
IChpc1ByaXZhdGVOYW1lKQorICAgICAgICByZXR1cm4gUFJJVkFURU5BTUU7CisKICAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250
YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkpIHsKICAgICAgICAgQVNTRVJU
KHNob3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBpZiAocmVtYWluaW5nIDwgbWF4VG9r
ZW5MZW5ndGgpIHsKQEAgLTEwNjksNiArMTA4NCwxNCBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFy
YWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0
YQogICAgIEFTU0VSVChtX2J1ZmZlcjE2LmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCF0b2tlbkRh
dGEtPmVzY2FwZWQpOwogCisgICAgYXV0byBpZGVudENoYXJzU3RhcnQgPSBpZGVudGlmaWVyU3Rh
cnQ7CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gKmlkZW50aWZpZXJTdGFydCA9PSAnIyc7Cisg
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgICsraWRlbnRDaGFyc1N0YXJ0OworCisgICAg
SlNUb2tlblR5cGUgaWRlbnRUeXBlID0gaXNQcml2YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURF
TlQ7CisgICAgQVNTRVJUKCFpc1ByaXZhdGVOYW1lIHx8IGlkZW50aWZpZXJTdGFydCAhPSBjdXJy
ZW50U291cmNlUHRyKCkpOworCiAgICAgYXV0byBmaWxsQnVmZmVyID0gWyZdIChib29sIGlzU3Rh
cnQgPSBmYWxzZSkgewogICAgICAgICAvLyBcdVhYWFggdW5pY29kZSBjaGFyYWN0ZXJzIG9yIFN1
cnJvZ2F0ZSBwYWlycy4KICAgICAgICAgaWYgKGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50U291
cmNlUHRyKCkpCkBAIC0xMDg4LDcgKzExMTEsNyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0
ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQog
ICAgICAgICAgICAgaWYgKHNob3VsZENyZWF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAg
cmVjb3JkVW5pY29kZUNvZGVQb2ludChjaGFyYWN0ZXIudmFsdWUoKSk7CiAgICAgICAgICAgICBp
ZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7Ci0gICAgICAgICAgICByZXR1cm4g
SURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICB9CiAKICAgICAg
ICAgQVNTRVJUKFUxNl9JU19TVVJST0dBVEUobV9jdXJyZW50KSk7CkBAIC0xMTA0LDEwICsxMTI3
LDEwIEBAIEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJT
bG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAg
IHNoaWZ0KCk7CiAgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsK
LSAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgIH07
CiAKLSAgICBKU1Rva2VuVHlwZSB0eXBlID0gZmlsbEJ1ZmZlcihpZGVudGlmaWVyU3RhcnQgPT0g
Y3VycmVudFNvdXJjZVB0cigpKTsKKyAgICBKU1Rva2VuVHlwZSB0eXBlID0gZmlsbEJ1ZmZlcihp
ZGVudENoYXJzU3RhcnQgPT0gY3VycmVudFNvdXJjZVB0cigpKTsKICAgICBpZiAoVU5MSUtFTFko
dHlwZSAmIEVycm9yVG9rZW5GbGFnKSkKICAgICAgICAgcmV0dXJuIHR5cGU7CiAKQEAgLTExNDAs
MTMgKzExNjMsMTMgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRl
bnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgQVNTRVJUKHNo
b3VsZENyZWF0ZUlkZW50aWZpZXIpOwogICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50
cnkgPSBKU0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwogICAgICAgICBpZiAoIWVudHJ5KQot
ICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsK
ICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50
cnktPmxleGVyVmFsdWUoKSk7CiAgICAgICAgIGlmICgodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RS
SUNUKSB8fCBzdHJpY3RNb2RlKQogICAgICAgICAgICAgcmV0dXJuIFVORVhQRUNURURfRVNDQVBF
X0VSUk9SVE9LOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsKKyAgICByZXR1cm4gaWRlbnRU
eXBlOwogfQogCiBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGNoYXJhY3RlclJlcXVpcmVzUGFy
c2VTdHJpbmdTbG93Q2FzZShMQ2hhciBjaGFyYWN0ZXIpCkBAIC0yNDczLDE0ICsyNDk2LDIxIEBA
IHN0YXJ0OgogICAgICAgICBtX2hhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4gPSB0cnVlOwog
ICAgICAgICBtX2xpbmVTdGFydCA9IG1fY29kZTsKICAgICAgICAgZ290byBzdGFydDsKLSAgICBj
YXNlIENoYXJhY3Rlckhhc2g6CisgICAgY2FzZSBDaGFyYWN0ZXJIYXNoOiB7CiAgICAgICAgIC8v
IEhhc2hiYW5nIGlzIG9ubHkgcGVybWl0dGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgc291cmNlIHRl
eHQuCi0gICAgICAgIGlmIChwZWVrKDEpID09ICchJyAmJiAhY3VycmVudE9mZnNldCgpKSB7Cisg
ICAgICAgIGF1dG8gbmV4dCA9IHBlZWsoMSk7CisgICAgICAgIGlmIChuZXh0ID09ICchJyAmJiAh
Y3VycmVudE9mZnNldCgpKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKICAgICAgICAgfQor
ICAgICAgICAvLyBPdGhlcndpc2UsIGl0IGNvdWxkIGJlIGEgdmFsaWQgUHJpdmF0ZU5hbWUuCisg
ICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSAmJiAoaXNTaW5nbGVD
aGFyYWN0ZXJJZGVudFN0YXJ0KG5leHQpIHx8IG5leHQgPT0gJ1xcJykpIHsKKyAgICAgICAgICAg
IGxleGVyRmxhZ3MucmVtb3ZlKExleGVyRmxhZ3M6OkRvbnRCdWlsZEtleXdvcmRzKTsKKyAgICAg
ICAgICAgIGdvdG8gcGFyc2VJZGVudDsKKyAgICAgICAgfQogICAgICAgICBnb3RvIGludmFsaWRD
aGFyYWN0ZXI7CisgICAgfQogICAgIGNhc2UgQ2hhcmFjdGVyUHJpdmF0ZUlkZW50aWZpZXJTdGFy
dDoKICAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikKICAgICAgICAgICAgIGdv
dG8gcGFyc2VJZGVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKaW5kZXggMmNlZWMzOGI2NmVlNjE2MDk5Y2MyMzliMzE3NjUyM2Q3MWJlMDEw
MC4uMGRjZTY3MTI2ZDg1ZDY1YmI2ZDFjZDc0NTAxOWI2MjFkN2I3ZjQ2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTMyNywxMCAr
MzI3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG90
QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAg
IGlubGluZSBCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBE
b3RUeXBlIHR5cGUpCiAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKKyAgICAgICAgLCBtX3R5
cGUodHlwZSkKKyAgICB7CisgICAgfQorCisgICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90
QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlKQorICAgICAg
ICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICB7CiAgICAg
fQogICAgIApAQCAtNDE4LDExICs0MjQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90
Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1f
YmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFy
Z3MpCiAgICAgewogICAgIH0KQEAgLTQzNywxNCArNDQxLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFu
Y2VUb0lubmVybW9zdENhbGxPckFwcGx5KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
CisgICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSog
YXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFu
Y2VUb0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFu
Y2VUb0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0g
ICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3Ms
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNh
bGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkK
KyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlw
ZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgICAgICAsIG1fZGlzdGFu
Y2VUb0lubmVybW9zdENhbGxPckFwcGx5KGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSkK
ICAgICB7CiAgICAgfQpAQCAtNzcyLDIxICs3NzYsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNz
aWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFz
ZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFJlYWRNb2Rp
ZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5
cGUgdHlwZSwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAg
ICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAg
ICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
KQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAg
ICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgICAg
ICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGJjZDllZjk4YmViNGJlOGVlMWVhNjRiZWUz
NDRjMTI4NWZiMDlkMjAuLjY0YTY2Zjc2NWM4ZjRkMjg0OTZkYTljZTZjNDRhYmIwOGFhODgxYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0zMzUsNyArMzM1LDcg
QEAgYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0eShjb25z
dCBJZGVudGlmaWVyJiBwcm9wTmFtZSkKIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3Jl
YXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MoUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKIHsKICAgICB3
aGlsZSAobGlzdCkgewotICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NG
aWVsZCgpKQorICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgp
IHx8IGxpc3QtPm1fbm9kZS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgbGlzdCA9IGxpc3QtPm1fbmV4dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKaW5kZXggY2E0ZTBlMDI4ZWQ1MDE4ZjYyN2JlNWY2M2JkZGZiYjEwNWJhNzcx
MS4uYjg5MGZlMzEwMTlmYmQ0ZDkyYjgxNzEyMDI0NjA5NTZhMmYyN2IyYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTg1LDYgKzE4NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0gICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHJp
dmF0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNMb2NhdGlvbigpOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWduUmVzb2x2ZU5vZGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtNzE5LDcgKzcyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3Rh
dGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBh
cnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWlu
dDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4
LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIgfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWlu
dDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4
LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OwogICAgICAgICBl
bnVtIFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAg
ICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwg
UHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzM4LDYgKzczOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsg
cmV0dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAg
ICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNl
Q2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wg
aXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5
RHVwbGljYXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlICYgUHJpdmF0ZTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxk
KCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0K
ICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRk
ZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc0OCw3ICs3NTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0g
ICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDc7
CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICB1bnNp
Z25lZCBtX3B1dFR5cGUgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50
VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CkBAIC03NzYsNiArNzc4LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqLCBWZWN0b3I8SlNUZXh0
UG9zaXRpb24+Kik7CiAKKyAgICAgICAgdm9pZCBlbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVz
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogc2NvcGUpOworCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHIpIGZpbmFsCiAgICAgICAgIHsKQEAgLTgy
MCw5ICs4MjQsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRI
YXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
eworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVOYW1lIH07CisgICAgY2xh
c3MgQmFzZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEJhc2VEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgRG90VHlwZSk7CisKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJl
dHVybiBtX2Jhc2U7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KKyAgICAgICAgRG90VHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQorCisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lk
ZW50OworICAgICAgICBEb3RUeXBlIG1fdHlwZTsKKyAgICB9OworCisgICAgY2xhc3MgRG90QWNj
ZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgRG90VHlwZSk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJl
dHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTgzMSwxMCArODU2LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAgICAgYm9vbCBpc0xvY2F0aW9u
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZUxv
Y2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZh
dGVOYW1lOyB9CiAgICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwogCiAgICAgY2xhc3MgU3ByZWFk
RXhwcmVzc2lvbk5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC05NDcsOSArOTcwLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAg
Y2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3RO
b2RlIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFy
Z3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAg
ICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSos
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwpAQCAtOTU3LDggKzk4MCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBBcmd1
bWVudHNOb2RlKiBtX2FyZ3M7CiAgICAgfTsKIApAQCAtOTk1LDcgKzEwMTYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVi
bGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5
KTsKKyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1
bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3Qg
ZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gbnVsbHB0cikgZmluYWw7CkBAIC0xMDA0LDcgKzEwMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwgOiBwdWJsaWMg
RnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsK
KyAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1l
bnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRp
c3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IG51bGxwdHIpIGZpbmFsOwpAQCAtMTQ2NywyOCArMTQ4OCwyNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwogICAgIH07CiAKLSAgICBj
bGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwg
OiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
bnVsbHB0cikgZmluYWw7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
cmlnaHQ7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAg
ICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBSZWFkTW9kaWZ5
RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4
cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBS
ZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgZmlu
YWw7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CiAgICAg
ICAgIE9wZXJhdG9yIG1fb3BlcmF0b3I7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzIDogMTsKQEAgLTIyODUsNyArMjMwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRGVmaW5lRmllbGROb2RlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgTmFtZSwgQ29tcHV0ZWROYW1lIH07Cisg
ICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5hbWUsIFByaXZhdGVOYW1lLCBDb21wdXRlZE5hbWUg
fTsKICAgICAgICAgRGVmaW5lRmllbGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXIqLCBFeHByZXNzaW9uTm9kZSosIFR5cGUpOwogCiAgICAgcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBkNDJhYWMyMjg5NTM4MTBi
ZThiYzNmOWM2MTczY2M2ZTIxYmQ4OGQwLi42NGUyYWFmNWU1M2JmZTFhMzU4ZGQ2ZDEzYTAzMzdh
MTliMzljNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC04
MjYsNiArODI2LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2wKICAgICAgICAgVHJlZUV4cHJl
c3Npb24gbm9kZSA9IDA7CiAgICAgICAgIGRlY2xhcmF0aW9ucysrOwogICAgICAgICBib29sIGhh
c0luaXRpYWxpemVyID0gZmFsc2U7CisKKyAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChQUklWQVRF
TkFNRSksICJDYW5ub3QgdXNlIGEgcHJpdmF0ZSBuYW1lIHRvIGRlY2xhcmUgYSB2YXJpYWJsZSIp
OwogICAgICAgICBpZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICBmYWls
SWZUcnVlKG1hdGNoKExFVCkgJiYgKGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6
OkxldERlY2xhcmF0aW9uIHx8IGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNv
bnN0RGVjbGFyYXRpb24pLCAKICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAnbGV0JyBhcyBh
biBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4aWNhbERlY2xhcmF0aW9uIik7CkBAIC0xMjg4LDYg
KzEyOTAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5n
UGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZQogICAgICAgICAgICAgaWYgKGtpbmQg
PT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucykKICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29y
ZChkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7CisgICAgICAgICAg
ICBpZiAoa2luZCAhPSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMp
CisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChQUklWQVRFTkFNRSksICJDYW5ub3Qg
dXNlIGEgcHJpdmF0ZSBuYW1lIGFzIGEgIiwgZGVzdHJ1Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2lu
ZE5hbWUoa2luZCkpOwogICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhIHBh
cmFtZXRlciBwYXR0ZXJuIG9yIGEgJyknIGluIHBhcmFtZXRlciBsaXN0Iik7CiAgICAgICAgIH0K
ICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChMRVQpICYmIChraW5kID09IERlc3RydWN0dXJpbmdL
aW5kOjpEZXN0cnVjdHVyZVRvTGV0IHx8IGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3Ry
dWN0dXJlVG9Db25zdCksICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBm
b3IgYSBMZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTI5NTMsNiArMjk1NywxOSBAQCBwYXJzZU1l
dGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVydHlOYW1lLCAiQ2Fu
bm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAgIGhhbmRsZVBy
b2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29tcHV0ZWQgcHJvcGVy
dHkgbmFtZSIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6
IHsKKyAgICAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7
CisgICAgICAgICAgICBKU1Rva2VuIHRva2VuID0gbV90b2tlbjsKKyAgICAgICAgICAgIGlkZW50
ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBD
bGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBw
cml2YXRlIik7CisgICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAi
Q2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAg
ICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBBUkVOLCB0b2tlbiksICJDYW5ub3QgcGFyc2UgY2xh
c3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVOYW1lKCppZGVudCkgJiBEZWNsYXJhdGlv
blJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJp
dmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3Bl
cnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaWYgKG1f
dG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAgICBnb3RvIG5h
bWVkS2V5d29yZDsKQEAgLTI5NjgsOCArMjk4NSwxMCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAg
ICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMoKSAmJiAhbWF0
Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIWlzR2V0dGVyICYmICFpc1NldHRlcik7Ci0gICAgICAgICAgICBpZiAoaWRlbnQpCisgICAg
ICAgICAgICBpZiAoaWRlbnQpIHsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
KmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3IsICJDYW5ub3QgZGVjbGFyZSBjbGFz
cyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InIik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yUHJpdmF0ZUZpZWxk
LCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBjbGFzcyBmaWVsZCBuYW1lZCAnI2NvbnN0cnVjdG9y
JyIpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQcm9wZXJ0eU5h
bWUpIHsKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJB
cmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZpZWxkcysrKTsK
QEAgLTMwMzMsNiArMzA1MiwxMCBAQCBwYXJzZU1ldGhvZDoKICAgICBpbmZvLmVuZE9mZnNldCA9
IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgLSAxOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VC
UkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIgYSBjbGFzcyBib2R5Iik7CiAKKyAg
ICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpIHsKKyAgICAgICAgLy8gRmFp
bCBpZiB0aGVyZSBhcmUgbm8gcGFyZW50IHByaXZhdGUgbmFtZSBzY29wZXMgYW5kIGFueSB1c2Vk
LWJ1dC11bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMuCisgICAgICAgIHNlbWFudGljRmFpbElmRmFs
c2UoY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKSwgIkNhbm5vdCByZWZl
cmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzIik7CisgICAgfQogICAgIGF1dG8gY2xhc3NF
eHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGluZm8sIGNsYXNz
U2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9yLCBwYXJlbnRD
bGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwgVHJlZUJ1aWxk
ZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhwcmVzc2lvbjsK
QEAgLTMwNTYsNiArMzA3OSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgIFRy
ZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gMDsKICAgICAgICAgRGVmaW5lRmll
bGROb2RlOjpUeXBlIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6Ok5hbWU7CiAgICAgICAg
IHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKKyAgICAgICAgY2FzZSBQUklWQVRFTkFNRToKKyAg
ICAgICAgICAgIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVOYW1lOworICAg
ICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgU1RSSU5HOgogICAgICAgICBjYXNl
IElERU5UOgogICAgICAgICBuYW1lZEtleXdvcmQ6CkBAIC0zMDk1LDYgKzMxMjEsOSBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICBpZiAoY29uc3VtZShFUVVBTCkpCiAgICAgICAg
ICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAK
KyAgICAgICAgaWYgKHR5cGUgPT0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZSkK
KyAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOwor
CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgZGVmaW5lRmllbGQgPSBjb250ZXh0LmNyZWF0ZURlZmlu
ZUZpZWxkKGZpZWxkTG9jYXRpb24sIGlkZW50LCBpbml0aWFsaXplciwgdHlwZSk7CiAgICAgICAg
IGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBkZWZpbmVGaWVsZCk7CiAg
ICAgfQpAQCAtNDc5OCw2ICs0ODI3LDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRDYWxs
T3JBcHBseURlcHRoKFBhcnNlclR5cGUqLCBWTSYsIE9wdGlvbmFsPHR5cGVuYW1lIFBhCiB7CiB9
CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Citib29sIFBhcnNlcjxMZXhlclR5cGU+
Ojp1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAgICBpZiAobV9s
ZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmIChhdXRvIG1heWJlQ3VycmVudCA9IGZpbmRQcml2YXRlTmFtZVNjb3BlKCkpIHsKKyAgICAg
ICAgU2NvcGVSZWYgY3VycmVudCA9IG1heWJlQ3VycmVudC52YWx1ZSgpOworICAgICAgICBpZiAo
IWN1cnJlbnQtPmhhc1ByaXZhdGVOYW1lKCppZGVudCkpCisgICAgICAgICAgICBjdXJyZW50LT51
c2VQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CkBAIC00OTk5
LDggKzUwNDQsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBt
X3BhcnNlclN0YXRlLm5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgICAgICAg
ICBKU1RleHRQb3NpdGlvbiBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsK
ICAgICAgICAgICAgICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRlcjo6RG9udEJ1
aWxkS2V5d29yZHMgfCBMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50Owor
ICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9IERvdFR5cGU6Ok5hbWU7CisgICAgICAgICAgICAg
ICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
aWRlbnQpOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fu
bm90IGFjY2VzcyBwcml2YXRlIG5hbWVzIGZyb20gc3VwZXIiKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKGN1cnJlbnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFs
Q29udGV4dFR5cGU6Okluc3RhbmNlRmllbGRFdmFsQ29udGV4dCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5oYXNQcml2YXRlTmFt
ZSgqaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgZmllbGQgJyIs
IGlkZW50LT5pbXBsKCksICInIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElm
RmFsc2UodXNlUHJpdmF0ZU5hbWUoaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSBwcml2YXRlIG5h
bWVzIG91dHNpZGUgb2YgY2xhc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0
ZS5sYXN0UHJpdmF0ZU5hbWUgPSBpZGVudDsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudFNj
b3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBEb3RUeXBlOjpQcml2YXRlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbV90b2tlbi5t
X3R5cGUgPSBJREVOVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWF0Y2hP
ckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUgYWZ0ZXIgIiwgb3B0aW9uYWxD
aGFpbkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9jYXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlk
ZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kUG9zaXRpb24oKSk7
CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9j
YXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQs
IHRva2VuRW5kUG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGJhc2VJ
c1N1cGVyICYmIGN1cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rpb24oKSkpCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPnNldElubmVyQXJyb3dGdW5jdGlvblVz
ZXNTdXBlclByb3BlcnR5KCk7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtNTE5NSw2ICs1
MjUzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIERFTEVURVRPS0VOOgogICAgICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGNv
bnRleHQuaXNSZXNvbHZlKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSB1bnF1YWxpZmllZCBwcm9wZXJ0
eSAnIiwgbV9wYXJzZXJTdGF0ZS5sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBpbiBzdHJpY3Qg
bW9kZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNvbnRleHQuaXNQcml2YXRl
TG9jYXRpb24oZXhwciksICJDYW5ub3QgZGVsZXRlIHByaXZhdGUgZmllbGQgIiwgbV9wYXJzZXJT
dGF0ZS5sYXN0UHJpdmF0ZU5hbWUtPmltcGwoKSk7CiAgICAgICAgICAgICBleHByID0gY29udGV4
dC5tYWtlRGVsZXRlTm9kZShsb2NhdGlvbiwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tM
YXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CkBAIC01MjcxLDcgKzUzMzAsMTEgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9r
ZW5UZXh0KFcKICAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9LOgogICAgICAg
ICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigpLCAiJyIpOwog
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKKworICAgIGNhc2UgUFJJVkFURU5BTUU6Cisg
ICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBwcml2YXRlIG5hbWUgIiwgZ2V0VG9rZW4oKSk7
CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgQVdBSVQ6CiAgICAgY2FzZSBJREVOVDoKICAg
ICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRva2VuKCksICIn
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA1NGIzOTczMDllYTJm
Y2NmMzczMWZiZTk5OGRhYjU5OWM5YmJlMDE2Li4xZjVkOTMyYzNmNTc1ZWIyMDU1NzQwNGU1NjQx
ODdmYmY3NWI5NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI5
MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0dlbmVyYXRvckJvdW5kYXJ5KCkgY29u
c3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvckJvdW5kYXJ5OyB9CiAgICAgYm9vbCBpc0FzeW5jRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXN5bmNGdW5jdGlvbjsgfQogICAgIGJvb2wgaXNB
c3luY0Z1bmN0aW9uQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzQXN5bmNGdW5jdGlvbkJv
dW5kYXJ5OyB9CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lU2NvcGUoKSBjb25zdCB7IHJldHVybiBt
X2lzQ2xhc3NTY29wZTsgfQogICAgIGJvb2wgaXNDbGFzc1Njb3BlKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NsYXNzU2NvcGU7IH0KIAogICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNBcmd1bWVudHM7IH0KQEAgLTMwOSw2ICszMTAsMTMgQEAgcHVibGljOgogICAgICAg
ICBtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMgPSB0cnVlOwogICAgIH0KIAorICAgIHZvaWQg
c2V0SXNQcml2YXRlTmFtZVNjb3BlKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50
bHksIGlzUHJpdmF0ZU5hbWVTY29wZSBpcyBhbiBhbGlhcyBmb3IgaXNDbGFzc1Njb3BlIC0tLSBU
aGlzIGlzIHBvdGVudGlhbGx5IG1pc2xlYWRpbmcsCisgICAgICAgIC8vIHBhcnRpY3VsYXJseSB3
aGVuIHBhcnNpbmcgZGlyZWN0IGV2YWwgY29kZSB3aGljaCBvY2N1cnMgd2l0aGluIGEgY2xhc3Mu
CisgICAgICAgIHNldElzQ2xhc3NTY29wZSgpOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNDbGFz
c1Njb3BlKCkKICAgICB7CiAgICAgICAgIG1faXNDbGFzc1Njb3BlID0gdHJ1ZTsKQEAgLTQ3NSw3
ICs0ODMsNDQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlh
Ymxlcy5jb250YWlucyhpZGVudC5nZXQoKSk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2xleGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgIH0KKworICAg
IHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhTY29wZSYgb3RoZXIpCisgICAgewor
ICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMuY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhv
dGhlci5tX2xleGljYWxWYXJpYWJsZXMpOworICAgIH0KKworICAgIGJvb2wgaGFzVXNlZEJ1dFVu
ZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fbGV4aWNh
bFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFy
ZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgdXNlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVz
LnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xh
cmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAg
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTmFt
ZShpZGVudCk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAg
ICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlv
bjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewog
ICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQYXJhbWV0ZXIoaWRlbnQuaW1wbCgpKTsKQEAgLTkx
MCw3ICs5NTUsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBh
cnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0Nv
bnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3Np
dGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxs
cHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3Im
LCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCwgT3B0
aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uID0gV1RG
OjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIsIGNvbnN0IFZl
Y3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVm
b3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24o
KTsgfQpAQCAtMTE4Myw2ICsxMjI4LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBTY29w
ZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBPcHRpb25hbDxTY29wZVJlZj4g
ZmluZFByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFj
ay5zaXplKCkpOworICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7
CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3Bl
KCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKG1fc2NvcGVTdGFja1tpXS5pc1By
aXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0
YWNrLCBpKTsKKworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIFNj
b3BlUmVmIHByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc2NvcGVT
dGFjay5zaXplKCkpOworICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAt
IDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNj
b3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgQVNTRVJUKG1fc2NvcGVTdGFja1tp
XS5pc1ByaXZhdGVOYW1lU2NvcGUoKSk7CisgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29w
ZVN0YWNrLCBpKTsKKyAgICB9CisKKyAgICBib29sIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVz
VG9PdXRlclNjb3BlKCkKKyAgICB7CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBwcml2YXRl
TmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBjdXJyZW50LmluZGV4KCkgLSAxOwor
ICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgp
KQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlmICghaSkKKyAgICAgICAgICAgIHJldHVy
biAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKTsKKworICAgICAg
ICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKG1fc2NvcGVTdGFja1tpXSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIFNjb3BlUmVmIGNsb3Nlc3RQYXJl
bnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCkKICAgICB7CiAgICAgICAgIHVuc2ln
bmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKQEAgLTE0NjIsNiArMTU0NSwxNiBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09IGV4cGVjdGVk
OwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaEFuZFVwZGF0ZShKU1Rva2Vu
VHlwZSBleHBlY3RlZCwgY29uc3QgSlNUb2tlbiYgdG9rZW4pCisgICAgeworICAgICAgICBpZiAo
bWF0Y2goZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBtX3Rva2VuID0gdG9rZW47CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQ29udGV4dHVhbEtleXdvcmQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CkBAIC0xNzE1LDYgKzE4MDgsOCBA
QCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KFRyZWVCdWlsZGVyJiwgVHJlZUV4cHJl
c3Npb24pOwogCisgICAgQUxXQVlTX0lOTElORSBib29sIHVzZVByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3BlcmF0b3IoSlNU
b2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsKICAgICAKQEAg
LTE4MDksNiArMTkwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUGFyc2VQaGFzZSBm
dW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkgfTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxscHRyIH07CiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxscHRyIH07CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9v
bCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUGFyc2luZ0NsYXNzRmllbGRJ
bml0aWFsaXplciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTE5NTksNyArMjA1NSw3IEBAIHByaXZh
dGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFy
c2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwg
T3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBj
b25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQorc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJF
cnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+
IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0IFZhcmlhYmxl
RW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0
cmluZyBlcnJNc2c7CkBAIC0xOTc0LDYgKzIwNzAsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0
IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFsTnVtYmVyOjpi
ZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291cmNlLT5zdGFy
dENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCisgICAgaWYgKGlzRXZhbE5vZGU8UGFyc2VkTm9k
ZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAmJiB2YXJpYWJsZXNVbmRlclREWi0+cHJpdmF0ZU5h
bWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZhdGVOYW1lU2Nv
cGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5kZXJURFotPmNvcHlQcml2YXRlTmFtZXNUbyhjdXJy
ZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICB9CisKICAgICBhdXRvIHBhcnNl
UmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJzZU1vZGUsIHBhcnNpbmdDb250ZXh0
LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBpbnN0YW5jZUZpZWxk
TG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigp
OwpAQCAtMjA1OCw2ICsyMTU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNl
KAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29u
dGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSA9IEV2
YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSogZGVidWdnZXJQYXJz
ZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxl
c1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBp
bnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVsbHB0ciwKICAgICBib29sIGlzSW5zaWRlT3JkaW5h
cnlGdW5jdGlvbiA9IGZhbHNlKQogewpAQCAtMjA3MCw3ICsyMTcyLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBy
ZXN1bHQ7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewog
ICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1v
ZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJz
ZURhdGEsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNl
ci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBh
cnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9n
cmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1
bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNF
dmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29u
dGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5zdGFuY2VG
aWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQog
ICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJC
dWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAtMjA4Myw3ICsyMTg1LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24gPT0gQ29u
c3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzJ3Mgc3BlY2lhbCBjb25zdHJ1
Y3RvcnMgc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKICAgICAgICAgUGFyc2Vy
PExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9y
S2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQ
YXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lk
ZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2Vk
Tm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8g
UGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxs
b3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBh
cnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2Vk
Tm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0s
IFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMp
OwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aAppbmRleCBkZTBlYmVhZjg1ZmQ3MTIzNzE3Zjg3NzExMjdmNzE5MjNmZmU2NzQ4Li43YjNjMWVj
M2I3ZjZhNmIxMWJmYzQ1ZjRiYzkxZDA0ODEyZjRjZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBlbnVtIEpTVG9r
ZW5UeXBlIHsKICAgICBET1VCTEUsCiAgICAgQklHSU5ULAogICAgIElERU5ULAorICAgIFBSSVZB
VEVOQU1FLAogICAgIFNUUklORywKICAgICBURU1QTEFURSwKICAgICBSRUdFWFAsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IGFhYjBiNzRkYWE4
OTA2NDQ2ODBiY2JkMmYwODhlYWJkY2E5M2RkMDYuLjQzZjVhOTJlYzc2YmI2NWI4NzZkODU4N2Qx
OTQ0MTJhMmEwNzM5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVzb2x2ZUV2YWxF
eHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmluZ0V4cHIsIEJp
Z0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIsIFJlZ0V4cEV4
cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlvbkV4cHIsIENsYXNzRXhwciwg
U3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2FsbEV4cHIsCi0g
ICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIs
IE9wdGlvbmFsQ2hhaW4sCisgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFy
eUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sIFByaXZhdGVEb3RFeHByLAogICAgICAg
ICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZFeHByLAogICAgICAgICBE
ZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByLCBCaW5kaW5nRGVzdHJ1Y3R1cmluZywgUmVzdFBh
cmFtZXRlciwKICAgICAgICAgQXJyYXlEZXN0cnVjdHVyaW5nLCBPYmplY3REZXN0cnVjdHVyaW5n
LCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29s
KSB7IHJldHVybiBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KICAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJh
Y2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90
QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVu
dGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiB0eXBlID09IERv
dFR5cGU6OlByaXZhdGVOYW1lID8gUHJpdmF0ZURvdEV4cHIgOiBEb3RFeHByOyB9CiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQpIHsgcmV0dXJu
IFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdz
LnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50
KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC00MDMsNyArNDAzLDEyIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlwZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0gQnJh
Y2tldEV4cHI7CisgICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHByIHx8IHR5cGUgPT0g
RG90RXhwciB8fCB0eXBlID09IFByaXZhdGVEb3RFeHByIHx8IHR5cGUgPT0gQnJhY2tldEV4cHI7
CisgICAgfQorCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUHJpdmF0ZURvdEV4cHI7CiAgICAgfQog
CiAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5j
cHAKaW5kZXggOGU2OTE1MWM3YjZjYjMxMTFiMGZlNzdjZTg5NzMwNzQwNjJmNWY1YS4uMWY1NzA4
OGEzNGM2NjNjYTcwMmY3N2Q0Nzc0MDY5NmUyNjc2ODhlZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0yOSw2ICsy
OSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorVmFyaWFibGVFbnZpcm9ubWVudCYgVmFyaWFi
bGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVy
KQoreworICAgIG1fbWFwID0gb3RoZXIubV9tYXA7CisgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJl
ZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5yZXNldCgp
OworICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjpt
YWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigqb3RoZXIubV9yYXJlRGF0
YSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1h
cmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX21hcC5maW5kKGlk
ZW50aWZpZXIpOwpAQCAtODAsNiArOTAsNyBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6OnN3
YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCiB7CiAgICAgbV9tYXAuc3dhcChvdGhlci5t
X21hcCk7CiAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5n
Q2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5zd2FwKG90aGVyLm1fcmFyZURhdGEpOwogfQogCiB2
b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKQEAgLTEwMCw3ICsxMTEsNyBAQCBD
b21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIDogbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChlbnYu
aXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSkKIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPFVuaXF1ZWRT
dHJpbmdJbXBsKiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PiwgMzI+IHNvcnRlZEVudHJpZXM7
Ci0gICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5zaXplKCkpOwor
ICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYubWFwU2l6ZSgpKTsK
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnYpCiAgICAgICAgIHNvcnRlZEVudHJpZXMuYXBwZW5k
KHsgcGFpci5rZXkuZ2V0KCksIHBhaXIudmFsdWUgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNTMyZDE0NmVmZDFm
Y2FlNTMyNjllNzVkZjZmNWZkYmVhMTk5MmM1Mi4uMTc3Zjg4MTViYzNhMzdlNGVhZDZiZDYwMWFj
Y2Y0ZmFjMDEzZjIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIklkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Z1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUGFyYW1l
dGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlk
YXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRh
dGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNTMsNiArNTYs
NyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rpb24oKSB7IG1f
Yml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUGFyYW1l
dGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1v
ZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZh
dGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtNzQsNyArNzgs
OCBAQCBwcml2YXRlOgogICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8PCA2LAogICAg
ICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9IDEgPDwgOCwK
LSAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDkKKyAgICAgICAg
SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCisgICAgICAgIElzUHJpdmF0
ZU5hbWUgPSAxIDw8IDEwLAogICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OwogfTsK
QEAgLTgzLDE1ICs4OCw1NSBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRy
YWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PgogICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCitzdHJ1Y3QgUHJp
dmF0ZU5hbWVFbnRyeSB7CitwdWJsaWM6CisgICAgUHJpdmF0ZU5hbWVFbnRyeSh1aW50MTZfdCB0
cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQorCisgICAgQUxXQVlTX0lOTElORSBib29s
IGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQorICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJl
ZDsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElz
VXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMg
fD0gSXNEZWNsYXJlZDsgfQorCisgICAgdWludDE2X3QgYml0cygpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lRW50cnkmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYml0cyA9PSBvdGhlci5tX2JpdHM7
CisgICAgfQorCisgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAgIElzVXNlZCA9
IDEgPDwgMCwKKyAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKKyAgICB9OworCitwcml2YXRl
OgorICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKK307CisKK3N0cnVjdCBQcml2YXRlTmFtZUVu
dHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4geworICAgIHN0YXRp
YyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKK307CisKIGNsYXNzIFZhcmlh
YmxlRW52aXJvbm1lbnQgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlm
aWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxQ
YWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlm
aWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0
ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lczsKIHB1YmxpYzoKLSAgICBWYXJpYWJs
ZUVudmlyb25tZW50KCkgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFi
bGVFbnZpcm9ubWVudCYmIG90aGVyKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVu
dChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0
OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShWYXJpYWJsZUVudmlyb25tZW50
JiYpID0gZGVmYXVsdDsKKyAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgeyB9CisgICAgVmFyaWFi
bGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpCisgICAgICAgIDogbV9t
YXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJl
ZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFyZURhdGEoV1RG
TW92ZShvdGhlci5tX3JhcmVEYXRhKSkKKyAgICB7CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCisgICAgICAgIDogbV9tYXAo
b3RoZXIubV9tYXApCisgICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChvdGhlci5tX2lz
RXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFyZURhdGEob3RoZXIubV9yYXJlRGF0
YSA/IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVy
Lm1fcmFyZURhdGEpIDogbnVsbHB0cikKKyAgICB7CisgICAgfQorICAgIFZhcmlhYmxlRW52aXJv
bm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcik7CiAKICAg
ICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX21hcC5iZWdp
bigpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1f
bWFwLmVuZCgpOyB9CkBAIC05OSw3ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElO
RSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9
CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIs
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpB
ZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkZChp
ZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2YXRlTmFtZXNTaXplKCk7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBjb25zdCB7IHJldHVybiBt
X21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9tYXAu
Y29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcmVtb3ZlKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFw
LnJlbW92ZShpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBm
aW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJu
IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KQEAgLTExNiwxMSArMTYyLDEwNCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFdmVy
eXRoaW5nQ2FwdHVyZWQ7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9t
YXAuc2l6ZSgpOyB9CiAKKyAgICB1c2luZyBQcml2YXRlTmFtZXNSYW5nZSA9IFdURjo6SXRlcmF0
b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKKworICAgIEFMV0FZU19JTkxJTkUgTWFw
OjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0KKworICAgIE1h
cDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRk
UHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNEZWNsYXJl
ZCgpOworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Cisg
ICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25z
dCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIHJldHVybiBtX21h
cC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworICAgIH0KKyAgICB2b2lkIHVzZVByaXZhdGVOYW1l
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAg
ICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsK
KyAgICAgICAgbWV0YS5zZXRJc1VzZWQoKTsKKyAgICAgICAgaWYgKG1ldGEuaXNEZWNsYXJlZCgp
KQorICAgICAgICAgICAgZmluZChpZGVudGlmaWVyKS0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVzUmFuZ2UgcHJpdmF0ZU5hbWVz
KCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0
IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgp
LgorICAgICAgICBBU1NFUlQocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCk7CisgICAgICAgIHJldHVy
biBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBwcml2YXRlTmFtZXNTaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoaWRlbnRp
Zmllci5pbXBsKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjb3B5UHJpdmF0
ZU5hbWVzVG8oVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghb3Ro
ZXIubV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG90aGVyLm1fcmFyZURhdGEgPSBXVEY6Om1ha2VV
bmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAgIGlmIChwcml2
YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2
YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LnZhbHVlLmlzVXNlZCgp
ICYmIGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkpCisgICAgICAgICAgICAgICAgICAgIG90aGVy
Lm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKFZhcmlhYmxlRW52aXJvbm1lbnQmIG91dGVy
KSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQgYnkgdGhlIFBhcnNlciB0byB0cmFuc2ZlciByZWNv
cmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFuCisgICAgICAgIC8vIGlubmVyIFByaXZh
dGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBvbmUsIGluIGNhc2UgYSBQTkUgaXMgdXNl
ZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgY29kZSB0aGFuIGl0IGlzIGRlZmlu
ZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBm
b3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChl
bnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKQorICAgICAg
ICAgICAgICAgICAgICBvdXRlci5nZXRPckFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSku
c2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1
Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisK
KyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAgICAgICAgUmFyZURhdGEoUmFyZURhdGEmJiBvdGhl
cikKKyAgICAgICAgICAgIDogbV9wcml2YXRlTmFtZXMoV1RGTW92ZShvdGhlci5tX3ByaXZhdGVO
YW1lcykpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBSYXJlRGF0YShjb25zdCBSYXJl
RGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUmFyZURhdGEmIG9wZXJhdG9yPShjb25zdCBSYXJl
RGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUHJpdmF0ZU5hbWVzIG1fcHJpdmF0ZU5hbWVzOwor
ICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVk
IHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVOYW1lRW50cnkmIGdldE9yQWRkUHJpdmF0ZU5hbWUo
VW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJv
bm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5hbWVFbnRyeSgwKSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAppbmRleCA2
MDFkMDE5ZGY5M2Y4ZjJmOGNjNmMxZjU5MWE5NDE1NDhkYzA3ZmNiLi41ZWNlNmRhMTZiMDYwNzMy
OTVhNGE2YjY2ODFiOWVmZTU4NGQ2Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04NTYsNiArODU2LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgZW5jb2RlKGVuY29kZXIsIHsgKnNvdXJjZSB9KTsKICAgICB9
CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNvZGVBc1B0cihEZWNvZGVyJiBkZWNvZGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXMtPmlzRW1wdHkoKSk7CisgICAg
ICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKS0+ZGVjb2RlKGRlY29kZXIpOwor
ICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNpbXBsZUp1bXBUYWJsZSA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IHsKQEAgLTEwMDMsMjMgKzEwMDksNDUgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyIDogMTsK
IH07CiAKK2NsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6IHB1YmxpYyBD
YWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKK3B1YmxpYzoKKyAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNv
ZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhJiBy
YXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShkZWNv
ZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAgIENh
Y2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVk
U3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJp
dmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3ByaXZhdGVOYW1l
czsKK307CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYpCiAgICAgewog
ICAgICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVy
ZWQ7CiAgICAgICAgIG1fbWFwLmVuY29kZShlbmNvZGVyLCBlbnYubV9tYXApOworICAgICAgICBt
X3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBlbnYubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQog
CiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVudCYg
ZW52KSBjb25zdAogICAgIHsKICAgICAgICAgZW52Lm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBt
X2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5kZWNvZGUoZGVjb2RlciwgZW52
Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6
UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2RlciwgKmVu
di5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKICAgICBib29sIG1f
aXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2Fj
aGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRy
YWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnksIElkZW50
aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBtX21hcDsKKyAgICBDYWNoZWRQdHI8Q2Fj
aGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3Mg
Q2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PENv
bXBhY3RWYXJpYWJsZUVudmlyb25tZW50PiB7CkBAIC0xMTQ3LDYgKzExNzUsMjIgQEAgcHJpdmF0
ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7CiB9OwogCitjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZVJh
cmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJl
RGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAg
ICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1l
cyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU3ltYm9sVGFi
bGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAg
bV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQdHI8Q2FjaGVk
VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRlTmFtZXM7Cit9
OworCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9s
VGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCkBAIC0xMTU3LDYgKzEyMDEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fbmVzdGVkTGV4aWNhbFNjb3BlID0gc3ltYm9sVGFibGUubV9uZXN0ZWRMZXhp
Y2FsU2NvcGU7CiAgICAgICAgIG1fc2NvcGVUeXBlID0gc3ltYm9sVGFibGUubV9zY29wZVR5cGU7
CiAgICAgICAgIG1fYXJndW1lbnRzLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX2FyZ3Vt
ZW50cy5nZXQoKSk7CisgICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRh
YmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIFN5bWJvbFRhYmxlKiBkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTExNzAsNiArMTIxNSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBzY29wZWRBcmd1bWVudHNUYWJsZSA9IG1fYXJn
dW1lbnRzLmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKHNjb3BlZEFyZ3VtZW50c1RhYmxl
KQogICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fYXJndW1lbnRzLnNldChkZWNvZGVyLnZtKCks
IHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1bWVudHNUYWJsZSk7CisgICAgICAgIGlmICghbV9yYXJl
RGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX3JhcmVEYXRhID0g
V1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICpzeW1ib2xUYWJsZS0+bV9yYXJl
RGF0YSk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGU7CiAgICAgfQog
CkBAIC0xMTgwLDYgKzEyMzAsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4
aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7CiAgICAgQ2FjaGVk
UHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsKKyAgICBDYWNoZWRQ
dHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENh
Y2hlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAppbmRleCBiNGI3MTYzMzczNGUzY2FkOTk1N2U3Y2RmZGNkYzczMzJkZTg5ZWMzLi5hZmRjYzkw
MjkxMzczZjUwZDA1NzBlMzhjOGQ5MzVhMGFiZmM5YzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHMKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5saW5rZWRDb2Rl
QmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4ZWN1dGFibGUtPmlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxS
b290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxV
bmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5
cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1
bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNoZVR5cGVzPFVu
bGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
IGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJpYWJsZXNVbmRlclREWiwgbnVsbHB0ciwg
aXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDlhMzAwZTczNjc4ODkyYjA1NDY4OTA1ZWVlNmE2
NDAxYzk5OTU4NjMuLjM1NDQxNWY5NTI4YWRiYjljMmVkNWUxNWMzNTI1NzAwNTU3NjAzNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5lIElOSVRJQUxJ
WkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1lKSAsIG5hbWUj
I1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgpKQogI2RlZmlu
ZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0aW5OYW1lcy0+
bmFtZSMjU3ltYm9sKCkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKG5h
bWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICIjIiAj
bmFtZSkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAg
ICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00Myw2ICs0NCw3IEBAIENvbW1vbklkZW50aWZpZXJz
OjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19F
QUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05fSURFTlRJRklF
UlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkKICAgICBKU0Nf
Q09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFM
SVpFX1NZTUJPTCkKKyAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVM
RChJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggOGRiYzZkN2Fj
MTg3YjcxOWQwNDUyNjU3MDI4MDk2MTYyMjlkNThkYy4uODU1OGJhYjkwY2U1ZDhiYjNkZDEwOGUw
ODQ1ZjhhNTI5NGY0NWY0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMDksNiArMjA5LDkgQEAKICAgICBtYWNybyh3cml0
YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAKKyNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElGSUVS
U19FQUNIX1BSSVZBVEVfRklFTEQobWFjcm8pIFwKKyAgICBtYWNybyhjb25zdHJ1Y3RvcikKKwog
I2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNybykgXAogICAg
IG1hY3JvKGF3YWl0KSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTMyMyw2ICszMjYsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxM
X0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAogCisjZGVmaW5lIEpTQ19JREVOVElGSUVSX0RF
Q0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBuYW1lIyNQ
cml2YXRlRmllbGQ7CisgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRF
X0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwpCisjdW5k
ZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTAorCiAgICAgICAg
IC8vIENhbGxlcnMgb2YgdGhpcyBtZXRob2Qgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IGlkZW50aWZp
ZXJzIGdpdmVuIHRvIHRoaXMgbWV0aG9kIAogICAgICAgICAvLyBzdXJ2aXZlIHRoZSBsaWZldGlt
ZSBvZiBDb21tb25JZGVudGlmaWVycyBhbmQgcmVsYXRlZCBWTS4KICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBhcHBlbmRFeHRlcm5hbE5hbWUoY29uc3QgSWRlbnRpZmllciYgcHVibGlj
TmFtZSwgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMGY3N2E4MTgzYmVh
MzZkYWJkYzYyMzEzMTYyNmEzMDYxODkzMGM3ZS4uOTgyYWNhN2E5NjhkZGY4NDk4ZDQzNWYwODVm
ZTM0ZGYyOWRlMTE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC0xMzEwLDYgKzEzMTAsMjggQEAgU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgIFJFVFVSTl9QUk9GSUxFRChiYXNl
VmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpKTsKIH0KIAorU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpCit7CisgICAgQkVHSU4oKTsKKworICAg
IGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gR0VUX0MoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1ZSgpOworICAg
IEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9i
amVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAg
IGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwor
ICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1l
KCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAgIGFzT2JqZWN0KGJhc2VWYWx1
ZSktPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKworICAgIFJFVFVSTl9QUk9GSUxFRChzbG90LmdldFZhbHVlKGds
b2JhbE9iamVjdCwgcHJvcGVydHkpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV9pZF93aXRoX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggM2MwNzE0YzI5ZTQzODU4MzJl
ZmJkMDY3MTY3NTIxZGEzMmRjYjg0NS4uNjY0Njg5YjI5ZjA4MWZiNWQxMjY2MmRhNTg3NjdiYjRm
ZjQwNTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKQEAgLTI3NCw2ICsyNzQsNyBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9i
eV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
dmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2
YXRlX25hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0
aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRo
X3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVfZGF0YV9wcm9w
ZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCmluZGV4IDhjOWNhMDM0NzYwNDk2YjBhNmFlYWYwZjgyNmZiMzY0NjYzZGMwZDcu
LjQxNGU3YmRmNzdhYjRmYzc2NGI1NjVkZjZmMWJkNGEwZDY0YjMwY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMjQs
NiArMzI0LDE2IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9iYWxPYmplY3Qs
ICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKK0pTT2JqZWN0
KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3Ry
aW5nKCJDYW5ub3QgYWNjZXNzIGludmFsaWQgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNl
QXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFBy
aXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IHJlZGVm
aW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBl
Tm90aGluZyk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9y
KGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oCmluZGV4IGU5YTUyMzFmYzU2NGIwN2RkMzlkMWNhYzE0NjkwOTVhM2Ri
ZDQxMmMuLmUxYjdlMDIxMThkNDhiNWY1NDQ4NzQ1YmQzNjRhMmU5Mzk5NzNiNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKQEAgLTUz
LDYgKzUzLDggQEAgSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVyRXJy
b3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oSlNHbG8KIEpTT2JqZWN0KiBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNy
ZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09iamVj
dCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9y
KEpTR2xvYmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVF
cnJvcihKU0dsb2JhbE9iamVjdCopOwogU3RyaW5nIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZShK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRl
eCAxZWRhN2ViM2IxMzdlODJmNTg3MzQxMmE1ZDAyMjgyNmU2MWZkNDA1Li5lYzUwYjM4ZTU4OWNk
OGNhMTM5MTg1NjdjOWM5Yjg5ZTgzMmY0MTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yOTQsNiArMjk0LDEyIEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3duUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSkpOwogfQogCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFByaXZhdGVTeW1i
b2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFTU0VSVF9FTkFC
TEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRDYWxsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewpAQCAtMTIx
OCw2ICsxMjI0LDExIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMg
Q29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBpbml0
LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQpKTsKICAg
ICAgICAgfSk7CiAKKyAgICAvLyBQcml2YXRlU3ltYm9scyAvIFByaXZhdGVOYW1lcworICAgIG1f
bGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6
OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpT
Q2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCks
IGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7CisKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQogICAgIC8vIFdlYkFz
c2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUNvbXBpbGVTdHJlYW1pbmdJ
bnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggMmZkNmQ5NzQ5
ZDFjNmJjMDI1ZTNmNGFmNGQ0MWY3ODRjNDg5M2Q1Ni4uY2YzM2QyNmE5MzQxOTI2ZGMzYjI3MjYz
NGEzNzNlYjE0ZjI4NmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCkBAIC0xODAsNiArMTgwLDExIEBAIHB1YmxpYzoKICAgICAvLyBiZWluZyByZXR1cm5lZC4g
T25jZSB0aGlzIGlzIGZpeGVkIHdlIHNob3VsZCBtaWdyYXRlIGNvZGUgJiByZW1vdmUgdGhpcyBt
ZXRob2QuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
CisgICAgc3RhdGljIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCosIEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgYm9vbCBn
ZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYpOworICAgIGlubGluZSB2b2lkIHB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgaW5saW5lIHZvaWQg
ZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmKTsKKwogICAgIHVuc2lnbmVkIGdldEFycmF5TGVuZ3RoKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBl
KCkpKQpAQCAtMTQ0NCw2ICsxNDQ5LDc4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6
ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjCiB7CiB9
CiAKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVj
dCopOworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxP
YmplY3QqKTsKKworQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRT
bG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBBU1NFUlQo
cHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFs
T2JqZWN0KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3RydWN0dXJlKHZt
KTsKKworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7CisgICAgaWYg
KG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBK
U1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICBBU1NFUlQodmFs
dWUpOworICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICBKU0NlbGwqIGNlbGwgPSB2
YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgSlNUeXBlIHR5cGUgPSBjZWxsLT50eXBlKCk7CisgICAg
ICAgIFVOVVNFRF9QQVJBTShjZWxsKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0eXBlLCB0eXBl
ICE9IEdldHRlclNldHRlclR5cGUgJiYgdHlwZSAhPSBDdXN0b21HZXR0ZXJTZXR0ZXJUeXBlKTsK
KyAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHByaXZhdGUgZmllbGRzIGRvIG5vdCBzdXBwb3J0
IGdldHRlci9zZXR0ZXIgZmllbGRzLiBMYXRlciBvbiwgd2Ugd2lsbCBuZWVkIHRvIGZpbGwgaW4g
YWNjZXNzb3IgbWV0YWRhdGEgaGVyZSwKKyAgICAgICAgLy8gYXMgaW4gSlNPYmplY3Q6OmdldE93
bk5vbkluZGV4UHJvcGVydHlTbG90KCkKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQorICAgIH0KKworICAgIHNsb3Quc2V0VmFsdWUob2Jq
ZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
aW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
Cit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKCFKU09iamVjdDo6Z2V0UHJpdmF0ZUZp
ZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZh
dGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgZmFsc2UpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRp
b24oKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnVlKTsKK30KKworaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0
eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgUHJvcGVydHlTbG90
IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5
KTsKKyAgICBpZiAoIUpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmpl
Y3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB2b2lkKCkpOworICAgIH0K
KyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5y
ZWxlYXNlKCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRTbG90
KTsKK30KKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OmRlZmluZVByaXZhdGVGaWVsZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
IHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0o
Z2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhv
ZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBpZiAoSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNs
b3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVO
YW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9CisKIC8vIEl0IG1heSBzZWVtIGNyYXp5IHRvIGlubGlu
ZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZlcmVuY2UKIC8v
IHNpbmNlIHRoaXMgaXMgZnVuY3Rpb24gdmVyeSBob3QgaW4gdmFyaWFibGUgbG9va3VwCiB0ZW1w
bGF0ZTxib29sIGNoZWNrTnVsbFN0cnVjdHVyZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTY29wZS5jcHAKaW5kZXggMWZlN2Q2NzI5ZDI5NzVmYWFmOWEyMzFiM2VkMTU2ZTI4YjA3
NTZlZC4uMGViNTI3OGY0MzJlNGE0NWNiOTBhZmNkNGEzMzA4MTA2OGRmZTQ0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMzNyw2ICszMzcsMTAgQEAg
dm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpTU2NvcGUqIHNj
b3BlLCBWYXJpYWJsZUVudmlyb25tZW4KICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvIGVuZCA9IHN5bWJvbFRh
YmxlLT5lbmQobG9ja2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2NrZXIpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5rZXkpOworICAg
ICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICBm
b3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKKyAgICAgICAgICAg
ICAgICByZXN1bHQudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICB9CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBi
NmZmMzkxN2M3N2YzZDdjN2VjMWE4ZWQ5MWQwY2RiNTAyNDZlN2YzLi41NTc3MWRkZGY3MGJiYzY0
MmYyNDU1NDM3ZGRmZDRmMWQ1ZDQ5MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUwOSw2ICs1MDksNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlUHVibGlj
Q2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRl
cnN0YW5kIHB1YmxpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAgICAgdihCb29s
LCB1c2VSYW5kb21pemluZ0V4ZWN1dGFibGVJc2xhbmRBbGxvY2F0aW9uLCBmYWxzZSwgTm9ybWFs
LCAiRm9yIHRoZSBhcm02NCBFeGVjdXRhYmxlQWxsb2NhdG9yLCBpZiB0cnVlLCBzZWxlY3Qgd2hp
Y2ggcmVnaW9uIHRvIHVzZSByYW5kb21seS4gVGhpcyBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgdGhh
dCBqdW1wIGlzbGFuZHMgd29yay4iKSBcCiAgICAgdihCb29sLCBleHBvc2VQcm9maWxlcnNPbkds
b2JhbE9iamVjdCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZXhwb3NlIGZ1bmN0
aW9ucyB0byBlbmFibGUvZGlzYWJsZSBib3RoIHRoZSBzYW1wbGluZyBwcm9maWxlciBhbmQgdGhl
IHN1cGVyIHNhbXBsZXIiKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NGaWVsZHMsIGZh
bHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwcml2YXRl
IGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKIAogZW51bSBPcHRpb25FcXVpdmFsZW5j
ZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmNwcAppbmRleCBjYmFiNDZjZTU0NTRlMjNmMzQ4MmViZGJjMGI2OWNhMjY5NTY3
ZmY1Li4xNjRjYTZkNDMxMGU2YmIzOGU2NDdlMmY2YmUyZjlmN2Q5ZjMyNjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0xODEsNiArMTgx
LDExIEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQoVk0mIHZtKQog
ICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICAgICAg
cmVzdWx0LT5tX3JhcmVEYXRhLT5tX3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGl0ZXItPmtleSwgaXRl
ci0+dmFsdWUpOwogICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChhdXRv
IG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKKyAgICAgICAgICAgICAgICByZXN1
bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgfQogICAg
IH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggZTIzNGQzMTRjNjllZDJkMTExMzIzOTE0YmEyN2QzZDkz
MTU1MjY3Ni4uMzFmODFmYWUwMmZiMjAxZDMyMThiYjBmYjRjNTJkMjIxZjRjZDY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0zOCw3ICszOCw3
IEBACiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRl
IDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJbXBs
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNDUwLDYgKzQ1MCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD4g
VW5pcXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0LCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5cGVkZWYgVmVj
dG9yPFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7CisgICAgdHlwZWRlZiBIYXNo
U2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRl
TmFtZVNldDsKKyAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFtZSBQcml2YXRl
TmFtZVNldDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0aWMgSXNvU3Vi
c3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTU5NCw3ICs1OTYsMjUgQEAgcHVibGljOgog
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAgIGFkZChs
b2NrZXIsIGtleSwgc3RkOjpmb3J3YXJkPEVudHJ5PihlbnRyeSkpOwogICAgIH0KLSAgICAKKwor
ICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSAmJiBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFBy
aXZhdGVOYW1lSXRlcmF0b3JSYW5nZSBwcml2YXRlTmFtZXMoKQorICAgIHsKKyAgICAgICAgLy8g
VXNlIG9mIHRoZSBJdGVyYXRvclJhbmdlIG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2ZW50IEFTU0VS
VCBmYWlsdXJlcyBpbiBjaGVja1ZhbGlkaXR5KCkuCisgICAgICAgIEFTU0VSVChoYXNQcml2YXRl
TmFtZXMoKSk7CisgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7
CisgICAgfQorCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCoga2V5
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgpKTsKKyAgICAg
ICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVu
aXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworCisgICAgICAgIEFTU0VSVCghbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoa2V5KSk7CisgICAgICAgIG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmFkZChrZXkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
dHJ5PgogICAgIHZvaWQgc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBrZXksIEVudHJ5JiYgZW50cnkpCiAgICAgewpAQCAtNzI5LDE4ICs3NDksMjEgQEAg
cHJpdmF0ZToKICAgICBTY29wZU9mZnNldCBtX21heFNjb3BlT2Zmc2V0OwogcHVibGljOgogICAg
IG11dGFibGUgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7Ci1wcml2YXRlOgotICAgIHVuc2lnbmVk
IG1fdXNlc05vblN0cmljdEV2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNj
b3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KLSAgICB1bnNpZ25lZCBtX3Nj
b3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQotICAgIAorCiAgICAgc3RydWN0IFN5bWJvbFRhYmxl
UmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ICAgIFVuaXF1ZUlETWFwIG1fdW5pcXVlSURNYXA7CiAgICAgICAgIE9mZnNldFRvVmFyaWFibGVN
YXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0TWFwIG1fdW5p
cXVlVHlwZVNldE1hcDsKICAgICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4gbV9jb2RlQmxv
Y2s7CisgICAgICAgIFByaXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOwogICAgIH07CisKK3By
aXZhdGU6CisgICAgdW5zaWduZWQgbV91c2VzTm9uU3RyaWN0RXZhbCA6IDE7CisgICAgdW5zaWdu
ZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4aWNhbFNjb3Bl
LgorICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsgLy8gU2NvcGVUeXBlCisKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIAogICAgIFdyaXRl
QmFycmllcjxTY29wZWRBcmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU0ZDAxOTU5Y2NkMTY0
MGQ3MTc3MGMxNWVmOTVlNTc1ZDgxNjg0NGEuLmQ1MTkyNjNkMWY1MjI0Nzk4NDgxYTVlNzBkYjg0
YmQzNTNhMGZkNGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDUtMjcgIENhaXRsaW4gUG90dGVyICA8
Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0
ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNjQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEV4cGFuZHMgdXBvbiB0aGUgZWFybGllciBwdWJsaWMgZmllbGRzIHBhdGNoLCBhZGRp
bmcgYSBudW1iZXIgb2YgcHJpdmF0ZQorICAgICAgICBmaWVsZCB0ZXN0cy4KKworICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2Yt
bGluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZy
ZWV6ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9u
LXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
b3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1vZi1saW5l
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVzZS1ldmFs
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5j
ZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZ2V0LXByaXZhdGUtZmllbGQuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXBy
b3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRk
cHJpdmF0ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1
dHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIw
MjAtMDUtMjcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgaW5fc3RydWN0dXJlX3Byb3BlcnR5IG5lZWRzIHRvIGhhbmRsZSBjb25zdGFudHMgb24gdGhl
IFJIUyBvZiB0aGUgImluIgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtYXMtZnVuY3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1hcy1mdW5jdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGExMTYzZTE2N2VkMGQ2YzVmNjc2NTZk
MDFiMzRkODhjYjc0ZjJmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKQEAgLTAsMCArMSwxOCBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0
KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI20g
PSAoKSA9PiAyNTsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsK
KyAgICB9Cit9CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAyNSk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1i
eXRlY29kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1i
eXRlY29kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmE0ZjQzNTRmODk3ZjExMzc0MDg3MTI2MDQ2YzZmMWRm
ZDNlN2U5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtY2FjaGVkLWJ5dGVjb2RlLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCBydW5CeXRlY29k
ZUNhY2hlKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworZnVuY3Rpb24gYXNzZXJ0
KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworY2xhc3MgQyB7CisgICAgI2Yg
PSAzOworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9
CisKK2xldCBjID0gbmV3IEMoKTsKK2Fzc2VydChjLm1ldGhvZCgpLCAzKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5l
LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1s
aW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjliNTNmNmIyMzEwN2RkYWEyYjQ1YmMzZjA1OGVhYmYxMWNmMDE5
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1mcmVlemUtb3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSw0OCBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5h
c3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAo
ZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdl
IHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZXF1
YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAo
YSAhPT0gYSAmJiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBj
bGFzcyBpcyBkZWNsYXJlZCBpbiBldmFsIHNwZWNpZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQg
ZW5vdWdoCisvLyBwcm9wZXJ0aWVzIHRvIHRoZSBjbGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxk
cyBpbiBvdXQtb2YtbGluZSBwcm9wZXJ0eSBzdG9yYWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xh
c3MgQmFzZSB7CisgIC8vIE1ldGhvZHMKKyAgY29uc3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5l
IHByb3BlcnRpZXMKKyAgICAke0FycmF5KDIwMCkubWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9
ID0gJHtpfTtcbmApLmpvaW4oIiIpfQorICB9Cit9KWApOworCitjbGFzcyBQcml2YXRlRmllbGRB
ZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5mcmVl
emUodGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0LmlzRnJvemVuKHRoaXMp
LCAiT2JqZWN0LmlzRnJvemVuKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJl
dHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9u
IHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNp
b25zOworICBhc3NlcnQuZXF1YWxzKGMueDE1MCA9PT0gMTUwKTsKKyAgYy54MTUwID0gMC4xOwor
ICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFzc2VydC5lcXVh
bHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7
Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVzdChpKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcyBi
L0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDJjYzBmZjkyZDZiYWM5Yzg0ZDkwNjk0MzRmM2I3N2Q3ZGY1YjIyCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzCkBAIC0w
LDAgKzEsNDMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhw
ciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3
YXMgJHtleHByfWApOworICB9LCB7CisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIg
fHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICBy
ZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWAp
OworICB9Cit9KTsKKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMu
eCA9IDE7CisgIH0KK30KKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9u
cyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QuZnJlZXplKHRoaXMpLCA0Mik7CisgICNh
c3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc0Zyb3plbih0aGlzKSwgIk9iamVjdC5pc0Zyb3plbih0
aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBz
ZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMg
PSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYy54ID0gMC4xOwor
ICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFzc2VydC5lcXVh
bHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7
Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVzdChpKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzYxZjcxOGQ5NzQyNzBhYzhhMTllNWY3YmYwNTIwMGRlYjkzNzZjZAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5Lmpz
CkBAIC0wLDAgKzEsMzkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NG
aWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0QXJyYXlD
b250ZW50KGEsIGUpIHsKKyAgICBhc3NlcnQoYS5sZW5ndGgsIGUubGVuZ3RoLCAiU2l6ZSBvZiBh
cnJheXMgZG9lc24ndCBtYXRjaCIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7
IGkrKykKKyAgICAgICAgYXNzZXJ0KGFbaV0sIGVbaV0sICJhWyIgKyBpICsgIl0gPSAiICsgYVtp
XSArICIgYnV0IGVbIiArIGkgKyAiXSA9ICIgKyBlW2ldKTsKK30KKworbGV0IGFyciA9IFtdOwor
CitjbGFzcyBQcm94eUJhc2UgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4g
bmV3IFByb3h5KHRoaXMsIHsKKyAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKG9iaiwgcHJvcCkg
eworICAgICAgICAgICAgICAgIGFyci5wdXNoKHByb3ApOworICAgICAgICAgICAgICAgIHJldHVy
biBvYmpbcHJvcF07CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KK30KKworY2xh
c3MgVGVzdCBleHRlbmRzIFByb3h5QmFzZSB7CisgICAgI2YgPSAzOworICAgIG1ldGhvZCgpIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgdCA9IG5ldyBUZXN0KCk7
CitsZXQgciA9IHQubWV0aG9kKCk7Cithc3NlcnQociwgMywgIkV4cGVjdGVkOiAzIGJ1dCBnb3Q6
ICIgKyByKTsKKworYXNzZXJ0QXJyYXlDb250ZW50KGFyciwgWydtZXRob2QnXSk7CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpz
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjlkODYyMTYwMWQ1ZGUzNGE0MjgzNDZkNTFjY2Y4MjJmYmY1NjBhOQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1s
aW5lLmpzCkBAIC0wLDAgKzEsMjggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09
IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290
OiAiICsgYSk7Cit9CisKK2xldCBrbGFzc1NvdXJjZSA9IGAKK3ZhciBDID0gY2xhc3MgeworICAg
IGFzc2VydE91dE9mTGluZVZhbHVlKCkgeworICAgICAgICBhc3NlcnQodGhpcy4jZjIwMCwgImZv
byIpOworICAgIH0KK2A7CisKKworZm9yIChsZXQgaSA9IDA7IGkgPCAyMDA7IGkrKykgeworICAg
IGtsYXNzU291cmNlICs9ICIgICAgI2YiICsgaSArICI7XG4iOworfQorCitrbGFzc1NvdXJjZSAr
PSAiICAgICNmMjAwID0gXCJmb29cIjtcbn0iOworCitldmFsKGtsYXNzU291cmNlKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5h
c3NlcnRPdXRPZkxpbmVWYWx1ZSgpOworfQorCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0
LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJkYjhiMTZhZTBkNWNiN2YzZjU1ODUyN2U0MDBlYjUy
MmMxYjM2MQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDUyIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQg
YXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2Ug
PSAiIikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBF
eHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1g
KTsKKyAgfSwgeworICBmYWxzZShleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9
PSB0cnVlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4
cHIifSB0byBiZSBmYWxzZSwgYnV0IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxzKGEsIGIp
IHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAm
JiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBjbGFzcyBpcyBk
ZWNsYXJlZCBpbiBldmFsIHNwZWNpZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQgZW5vdWdoCisv
LyBwcm9wZXJ0aWVzIHRvIHRoZSBjbGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxkcyBpbiBvdXQt
b2YtbGluZSBwcm9wZXJ0eSBzdG9yYWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xhc3MgQmFzZSB7
CisgIC8vIE1ldGhvZHMKKyAgY29uc3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5lIHByb3BlcnRp
ZXMKKyAgICAke0FycmF5KDIwMCkubWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9ID0gJHtpfTtc
bmApLmpvaW4oIiIpfQorICB9Cit9KWApOworCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZl
bnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydC5mYWxzZShPYmplY3QuaXNFeHRl
bnNpYmxlKHRoaXMpLCAiT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSIpLCB0aGlzLiNpICsgMSk7
CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsg
fQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0
ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09IDE1MCk7Cisg
IGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkp
OworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rl
c3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kp
CisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM2MDk3Mjc4MTRmYzYw
NWUxMDRjNjY0ZDZlM2U2MGUyZDRjNWMzMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qcwpAQCAtMCwwICsx
LDQ3IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQor
CitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1l
c3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7
ZXhwcn1gKTsKKyAgfSwgeworICBmYWxzZShleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAo
ZXhwciA9PSB0cnVlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2Ug
fHwgImV4cHIifSB0byBiZSBmYWxzZSwgYnV0IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxz
KGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAh
PT0gYSAmJiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCitjbGFzcyBCYXNlIHsKKyAg
Y29uc3RydWN0b3IoKSB7CisgICAgdGhpcy54ID0gMTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRl
RmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVj
dC5wcmV2ZW50RXh0ZW5zaW9ucyh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydC5mYWxz
ZShPYmplY3QuaXNFeHRlbnNpYmxlKHRoaXMpLCAiT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSIp
LCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkg
eyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcg
UHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYy54ID0gMC4xOworICBhc3Nl
cnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5n
ZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0
KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0LW9mLWxpbmUu
anMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1vZi1saW5l
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc2MWIzMGU2MmUyODM5YWQ0NzUyMzFmMzdjYTRkZmM1MTE2MTBkNTQK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1z
ZWFsLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsNTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWdu
KAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIg
PT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAi
ZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGZhbHNlKGV4
cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IHRydWUpCisgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIGZhbHNlLCBidXQg
d2FzICR7ZXhwcn1gKQorICB9LAorICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8
IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0
dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsK
KyAgfQorfSk7CisKKy8vIFRoZSBiYXNlIGNsYXNzIGlzIGRlY2xhcmVkIGluIGV2YWwgc3BlY2lm
aWNhbGx5IHNvIHRoYXQgaXQgY2FuIGFkZCBlbm91Z2gKKy8vIHByb3BlcnRpZXMgdG8gdGhlIGNs
YXNzIHRvIHN0b3JlIHByaXZhdGUgZmllbGRzIGluIG91dC1vZi1saW5lIHByb3BlcnR5IHN0b3Jh
Z2UuCitsZXQgQmFzZSA9IGV2YWwoYChjbGFzcyBCYXNlIHsKKyAgLy8gTWV0aG9kcworICBjb25z
dHJ1Y3RvcigpIHsKKyAgICAvLyBEZWZpbmUgcHJvcGVydGllcworICAgICR7QXJyYXkoMjAwKS5t
YXAoKF8sIGkpID0+IGAgIHRoaXMueCR7aX0gPSAke2l9O1xuYCkuam9pbigiIil9CisgIH0KK30p
YCk7CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBC
YXNlIHsKKyAgI2kgPSAoT2JqZWN0LnNlYWwodGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3Nl
cnQoT2JqZWN0LmlzU2VhbGVkKHRoaXMpLCAiT2JqZWN0LmlzU2VhbGVkKHRoaXMpIiksIHRoaXMu
I2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMu
I2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRl
RmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBhc3NlcnQuZXF1YWxzKGMueDE1MCA9PT0g
MTUwKTsKKyAgYy54MTUwID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAg
Yy5zZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0
KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAy
MDA7ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXNlYWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1zZWFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4M2U3YWIzNWQ3YzE0YTZjNzY5MTI2MjZjZmQxMjgxN2M1
YTBiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1zZWFsLmpzCkBAIC0wLDAgKzEsNDMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBm
dW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFs
c2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9
IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGVxdWFscyhhLCBiKSB7
CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYg
YiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVk
ICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVj
dG9yKCkgeworICAgIHRoaXMueCA9IDE7CisgIH0KK30KKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0
ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3Quc2VhbCh0
aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNTZWFsZWQodGhpcyksICJP
YmplY3QuaXNTZWFsZWQodGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJu
IHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVz
dChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7
CisgIGMueCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkp
OworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rl
c3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kp
CisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS11c2UtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVz
ZS1ldmFsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY5Nzg4MDU3YjFiZjQ5NTUwYTBlOGYzZDk4YTk0MWE4Mzdj
ZjExYzMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS11c2UtZXZhbC5qcwpAQCAtMCwwICsxLDE1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiLCAiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIikKKwor
ZnVuY3Rpb24gYXNzZXJ0KGEsIG1lc3NhZ2UpIHsKKyAgICBpZiAoIWEpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihtZXNzYWdlKTsKK30KKworbGV0IGluc3QgPSBuZXcgY2xhc3MgeworICBhID0g
ZXZhbCgiKGkpID0+IGkuI2IiKTsKKworICAjYiA9IHt9OworfTsKKworaW5zdC5hKGluc3QpLngg
PSAxOworYXNzZXJ0KGluc3QuYShpbnN0KS54ID09IDEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2Ns
YXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKaW5kZXggZTUxNjI5OWE3OTJjNjM4NGI4NDJj
Njk3ZjQxZmNlZDdmNWNmZmZjZi4uNTA2OWE3ZGE1YTE1NWRjYzA2MDRlNDYzMmI5MGU4MzA5Mzlm
ZTgzNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0
YW5jZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNl
LmpzCkBAIC0xLDExICsxLDE1IEBACi0vL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xh
c3NGaWVsZHM9dHJ1ZSIpCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVs
ZHM9dHJ1ZSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKIAogY2xhc3MgQSB7CiAg
ICAgYSA9IDA7CiAgICAgYiA9IDE7CisgICAgI2MgPSAwOworICAgICNkID0gMTsKICAgICBlID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gMDsgfTsKKyAgICAjZiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g
MTsgfTsKICAgICBbImciXSA9IDA7CiAgICAgaCA9IGV2YWwoInRydWUiKTsKKyAgICAjaSA9IGV2
YWwoImZhbHNlIik7CiB9CiAKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLWZpZWxkLmpzIGIvSlNUZXN0cy9zdHJl
c3MvZ2V0LXByaXZhdGUtZmllbGQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2MzM2MmZhYTYzZTQwNTYyNWQx
ZmVjZWNlOTliY2QyNjZiOWVhOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dl
dC1wcml2YXRlLWZpZWxkLmpzCkBAIC0wLDAgKzEsMjkgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPTEiKQorCisvLyBHZXRCeVZhbERpcmVjdCBzaG91bGQgdGhyb3cgd2hlbiB0aGUgcmVj
ZWl2ZXIgZG9lcyBub3QgaGF2ZSB0aGUgcmVxdWVzdGVkIHByaXZhdGUgcHJvcGVydHkKK2xldCBp
LCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3ggPSBpOworICAgIGNvbnN0cnVjdG9y
KCkgeyBpZiAoaSA9PT0gMzApIHJldHVybiB7IFtTeW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91
dCAjeCJ9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBvYmouI3g7IH0KKyAgICBnZXQg
W1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCI7IH0KK30KKwordHJ5IHsK
KyAgICBmb3IgKGkgPSAwOyBpIDwgNTA7ICsraSkgeworICAgICAgICBsZXQgYyA9IG5ldyBDOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gQy54KGMpOworICAgICAgICBpZiAocmVzdWx0ICE9PSBpKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBDLngoJHtjfSkgdG8gYmUgJHtp
fSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJl
dyA9IHRydWU7CisgICAgaWYgKGkgIT09IDMwIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJv
cikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQt
cHJpdmF0ZS1maWVsZHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQt
cHJpdmF0ZS1maWVsZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQyY2YxMmI2NGExNjQzMDJlZDI3ZjViOTFl
MDc1NDQ3MWUxMTdlNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFs
LWNoYWluaW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcwpAQCAtMCwwICsxLDkzIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0
ID0geworICAgIHNhbWVWYWx1ZTogKGEsIGUpID0+IHsKKyAgICAgICAgaWYgKGEgIT09IGUpIAor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6
ICIgKyBhKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiAoZXhwZWN0ZWRFeGNlcHRpb24sIGZ1bmN0
b3IsIG0pID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRF
eGNlcHRpb24pKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKKyAgICAgICAg
fQorICAgIH0KK307CisKKygoKSA9PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9
ICd0ZXN0JzsKKyAgICAKKyAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICBy
ZXR1cm4gbz8uI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQzsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydC5z
YW1lVmFsdWUoQy5hY2Nlc3MoYyksICd0ZXN0Jyk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUo
Qy5hY2Nlc3ModW5kZWZpbmVkKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1
ZShDLmFjY2VzcyhudWxsKSwgdW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBDLmFjY2Vzcyh7fSk7CisgICAgfSwgIk9iamVj
dCB3aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRocm93Iik7Cit9KSgpOworCisvLyBDaGFp
bmVkIGNhc2UKKygoKSA9PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0
JzsKKyAgICAKKyAgICAgICAgc3RhdGljIGNoYWluZWRBY2Nlc3MobykgeworICAgICAgICAgICAg
cmV0dXJuIG8ucHJpdmF0ZT8uI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMg
PSBuZXcgQzsKKyAgICBsZXQgbyA9IHtwcml2YXRlOiBjfTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNj
ZXNzKG8pLCAndGVzdCcpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2Vz
cyh7fSksIHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNj
ZXNzKHtwcml2YXRlOiBudWxsfSksIHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgby5wcml2YXRlID0ge307CisgICAgICAg
IEMuY2hhaW5lZEFjY2VzcyhvKTsKKyAgICB9LCAiT2JqZWN0IHdpdGhvdXQgcHJpdmF0ZSBmaWVs
ZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisKKygoKSA9PiB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgICNmaWVsZDsKKworICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNm
aWVsZCA9IHY7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7Cisg
ICAgICAgICAgICByZXR1cm4gby4jZmllbGQ/LnByb3BlcnR5OworICAgICAgICB9CisgICAgfQor
CisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsr
KSB7CisgICAgICAgIGMuc2V0RmllbGQoe3Byb3BlcnR5OiAndGVzdCd9KTsKKyAgICAgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhjKSwgJ3Rlc3QnKTsKKworICAgICAgICBjLnNldEZpZWxk
KHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksIHVuZGVm
aW5lZCk7CisKKyAgICAgICAgYy5zZXRGaWVsZChudWxsKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVW
YWx1ZShDLmFjY2VzcyhjKSwgdW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBDLmFjY2Vzcyh7fSk7CisgICAgfSwgIk9iamVj
dCB3aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRocm93Iik7Cit9KSgpOworCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3Bl
cnR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1w
cm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWQ4ZTIxOTIzZjIwMjRkMDIyMDJmM2EyZTE2YmI0OWUx
Zjk1YjNkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFj
Y2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDIwIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9MSIsICItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikKKworbGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IChleHBlY3RlZEVycm9yLCBm
dW5jdG9yKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVk
RXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleHBlY3RlZEVycm9yLm5hbWUgKyAiIGJ1dCB0aHJvd3M6ICIgKyBlLm5hbWUpOwor
ICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4gewor
ICAgIGNsYXNzIEJhc2UgeworICAgICAgICBbe30uI3hdID0gMTsgCisgICAgICAgICN4ID0gImZv
byI7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwt
ZGlyZWN0LWFkZHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1h
ZGRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzMTM1NDY4NjkyN2YzNmNlZDlhOTlhZWU3NDQ5MWQ4
ZjdmMjMzNzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRp
cmVjdC1hZGRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpIC0tIEN1cnJlbnRseSwgZWFnZXIg
SklUIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgZmllbGQgYWNjZXNzLgorLy9AIHJ1bkRl
ZmF1bHQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikKKworLy8gUHJpdmF0ZUZpZWxkICJDcmVhdGUiIGFjY2VzcyBzaG91bGQgdGhyb3cg
aWYgd3JpdGluZyB0byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwg
dGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBy
ZXR1cm4gaSA8IDI5ID8gdGhpcyA6IGM7CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMg
eworICAgICN4ID0gaSsrOworICAgIHgoKSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBu
ZXcgQ0M7Cit0cnkgeworICAgIGZvciAobGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBsZXQgeCA9IG5ldyBDQzsKKyAgICAgICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4
LngoKX1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlm
IChpICE9PSAzMCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhy
b3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4
NjUzZGQyMjIxN2QxZDE2ZTcwNjdkOGFkMjQ1OThjNDU4Y2M4OAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCAr
MSwzMiBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikgLS0gQ3VycmVudGx5LCBlYWdlciBKSVQgaXMgbm90IHN1cHBvcnRlZCBmb3IgcHJp
dmF0ZSBmaWVsZCBhY2Nlc3MuCisvL0AgcnVuRGVmYXVsdCgiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9MSIpCisvL0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1
bk5vTExJbnQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCisvLyBQcml2YXRlRmllbGQg
IlB1dCIgYWNjZXNzIHNob3VsZCB0aHJvdyBpZiB3cml0aW5nIHRvIGEgbm9uLWV4aXN0ZW50IFBy
aXZhdGVOYW1lLgorbGV0IGMsIGkgPSAwLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAg
I3g7CisgICAgY29uc3RydWN0b3IoKSB7IHJldHVybiBpIDwgMzAgPyB0aGlzIDogeyBbU3ltYm9s
LnRvU3RyaW5nVGFnXTogIndpdGhvdXQgI3giIH07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0
dXJuIG9iai4jeCA9IGkrKzsgfQorICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0
dXJuICJ3aXRoICN4IiB9Cit9CisKK3RyeSB7CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsg
KytqKSB7CisgICAgICAgIGxldCBvYmogPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMu
eChvYmopOworICAgICAgICBpZiAocmVzdWx0ICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCBDLngoJHtvYmp9KSB0byBiZSAke2p9LCBidXQgZm91bmQgJHtyZXN1
bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAvLyBy
dmFsIG9mIEFzc2lnbm1lbnRFeHByZXNzaW9uIGlzIGV2YWx1YXRlZCBiZWZvcmUgUHJpdmF0ZUZp
ZWxkRmluZCgjeCwgbHJlZikgaXMgcGVyZm9ybWVkLAorICAgIC8vIHRodXMgYGlgIGhhcyBhbHJl
YWR5IGJlZW4gaW5jcmVtZW50ZWQuCisgICAgaWYgKGkgIT09IDMxIHx8IGUuY29uc3RydWN0b3Ig
IT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJl
dykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggN2JlZDA2NDRhYjI1OGQ1ZDEw
NDg1MTA4ZjJjNThmYzY4ODI0OTEzMy4uODNiZjY3ZTkyY2EyNzY0MjRmYzA5YWVkMzUwMzA3ZTAx
NmU0NDFmNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtNiw2ICs2LDcgQEAgZmxhZ3M6CiAgIEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0OiB1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0CiAgIFdlYWtSZWY6
IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNzRmllbGRz
CisgIGNsYXNzLWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMKIHNraXA6CiAg
IGZlYXR1cmVzOgogICAgIC0gU2hhcmVkQXJyYXlCdWZmZXIKQEAgLTE0LDcgKzE1LDYgQEAgc2tp
cDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzEK
ICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAKLSAgICAtIGNsYXNzLWZpZWxkcy1wcml2YXRlCiAg
ICAgLSBjbGFzcy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHVi
bGljCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZhdGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400458</attachid>
            <date>2020-05-28 07:54:44 -0700</date>
            <delta_ts>2020-05-28 08:09:35 -0700</delta_ts>
            <desc>Patch v21</desc>
            <filename>bug-206431-20200528105443.patch</filename>
            <type>text/plain</type>
            <size>195500</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDY1YmU1YmE4YTJkYWE3ZTg3ZTE0YzJjMmNkZmQ3ZDdjMzY4YzZjLi5iOGQ2YmIzNTVhYmFjZWNh
MGEyMjBiNTZlZjI5MzIxNGEwNDk5MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjggQEAKKzIwMjAtMDUtMjggIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X3ByaXZhdGVfbmFtZSksIG9uZSBjaGFuZ2VkIG9wY29k
ZSAob3BfcHV0X2J5X3ZhbF9kaXJlY3QpLgorICAgICAgICAgICAgLSBBIG1ldGhvZCBmb3IgY3Jl
YXRpbmcgU3ltYm9sIG9iamVjdHMgd2l0aCBhIG51bGwgUHJpdmF0ZVN5bWJvbEltcGwgaXMgZXhw
b3NlZCBhcyBhCisgICAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgKEBjcmVhdGVQcml2YXRl
U3ltYm9sKS4KKyAgICAgICAgICAgIC0gTnVsbCBQcml2YXRlIFN5bWJvbHMgYXJlIHN0b3JlZCBi
eSBuYW1lIChub3QgYSB2YWxpZCBpZGVudGlmaWVyKSBpbiBhIEpTU2NvcGUsIGFuZAorICAgICAg
ICAgICAgICBhcmUgbG9hZGVkIGZyb20gdGhlIG91dGVyIHNjb3BlIHdoZW5ldmVyIHRoZXkgYXJl
IHVzZWQgYnkgdGhlIG1vZGlmaWVkIG9wY29kZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgdG8g
b3BfcHV0X2J5X3ZhbF9kaXJlY3QgaW5jbHVkZSBhIG5ldyBieXRlY29kZSBvcGVyYW5kIChQdXRC
eVZhbEZsYWdzKSB3aGljaCBhcmUKKyAgICAgICAgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IG92ZXJ3cml0aW5nIG9yIGRlZmluaW5nIGEgbmV3IHByaXZhdGUgZmllbGQuIFNwZWNpZmljYWxs
eSwgd2hlbiBpdAorICAgICAgICBjb21lcyB0byBwcml2YXRlIGZpZWxkIGFjY2Vzc2VzLCBpdCdz
IG5lY2Vzc2FyeSB0byB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcgYSBmaWVsZAor
ICAgICAgICB3aGljaCBkb2VzIG5vdCBleGlzdCwgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGRlZmlu
ZSBhIHByaXZhdGUgZmllbGQgd2hpY2ggaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBkZWZpbmVk
LgorCisgICAgICAgIER1cmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIGNsYXNzIGV4cHJlc3Npb24s
IGJlZm9yZSB0aGUgY2xhc3MgZWxlbWVudCBsaXN0IGlzIGV2YWx1YXRlZCAoaW4gY2FzZQorICAg
ICAgICBhbnkgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgZXhwcmVzc2lvbnMgcmVmZXIgdG8gYSBu
ZXcgcHJpdmF0ZSBmaWVsZCksIGEgbmV3IFByaXZhdGVTeW1ib2wgaXMKKyAgICAgICAgY3JlYXRl
ZCBmb3IgZWFjaCBpbmRpdmlkdWFsIHByaXZhdGUgZmllbGQgbmFtZSwgYW5kIHN0b3JlZCBpbiB0
aGUgY2xhc3MgbGV4aWNhbCBzY29wZS4KKworICAgICAgICBQcml2YXRlIGZpZWxkIG5hbWVzIGFy
ZSBsb2FkZWQgZnJvbSBzY29wZSBiZWZvcmUgdGhlaXIgdXNlLiBUaGlzIHByZXZlbnRzIG11bHRp
cGxlIGV2YWx1YXRpb25zCisgICAgICAgIG9mIHRoZSBzYW1lIGNsYXNzIHNvdXJjZSBmcm9tIGFj
Y2Vzc2luZyBlYWNoIG90aGVyJ3MgcHJpdmF0ZSBmaWVsZHMsIGJlY2F1c2UgdGhlIHZhbHVlcyBv
ZiB0aGUKKyAgICAgICAgc3ltYm9scyBsb2FkZWQgZnJvbSB0aGUgY2xhc3Mgc2NvcGUgd291bGQg
YmUgZGlzdGluY3QuIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHByb3Bvc2FsIHRleHQsCisgICAg
ICAgIGFuZCBpcyB0aGUga2V5IHJlYXNvbiB3aHkgd2UgdXNlIEJ5VmFsIGxvb2t1cHMgcmF0aGVy
IHRoYW4gQnlJZCBsb29rdXBzLgorCisgICAgICAgIFRvIGlsbHVzdHJhdGUsIHR5cGljYWwgcHJp
dmF0ZSBmaWVsZCBhY2Nlc3Mgd2lsbCBsb29rIGxpa2U6CisKKyAgICAgICAgPEZpZWxkIFJlYWRz
PgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAi
I3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJv
bD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFBy
b3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBnZXRfcHJpdmF0ZV9uYW1l
ICAgPHZhbHVlPT4sIDxyZWNlaXZlciAtLS0gcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4KKwor
ICAgICAgICA8RmllbGQgV3JpdGVzPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3Bl
PT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRf
ZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhy
b3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAg
ICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3lt
Ym9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWU+CisKKyAgICAgICAgPEZpZWxkIERl
ZmluaXRpb24+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRT
Y29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAg
ICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8
R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92
YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+
LCA8UHV0QnlWYWxQcml2YXRlTmFtZXxQdXRCeVZhbFRocm93SWZFeGlzdHM+CisKKyAgICAgICAg
VGhlIGZlYXR1cmUgaXMgY3VycmVudGx5IGhpZGRlbiBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBK
U0M6Ok9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxG
bGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
UHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNEaXJlY3Qg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjplY21hTW9kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFjY2VzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkUHV0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpQdXRCeVZhbEZsYWdzKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJp
YWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlBy
ZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRz
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAg
ICAgKEpTQzo6ZGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9p
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9w
cmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVP
cHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlE
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChK
U0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJU
eXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
bGV4V2l0aG91dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0
Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNl
ci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRp
b24gY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJhc2VEb3ROb2RlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QmFzZURvdE5vZGU6OnR5cGUgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQ
cml2YXRlTmFtZSBjb25zdCk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRl
cm4pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXpl
clNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVBy
aXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVy
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhw
ZWN0ZWRUb2tlblRleHQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OmlzUHJpdmF0ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpzZXRJc1ByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzUHJpdmF0
ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNU
byk6CisgICAgICAgIChKU0M6OlNjb3BlOjpoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1l
cyBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjp1c2VQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6
OmZpbmRQcml2YXRlTmFtZVNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwcml2YXRlTmFt
ZVNjb3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1l
c1RvT3V0ZXJTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bWF0Y2hBbmRVcGRhdGUpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpw
YXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHBhcnNl
ci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURv
dEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3Ap
OgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6c3dhcCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5Ojppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5OjpzZXRJc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6UHJpdmF0ZU5hbWVFbnRyeSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6
OmlzVXNlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzRGVjbGFy
ZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc1VzZWQpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc0RlY2xhcmVkKToKKyAgICAgICAg
KEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZh
dGVOYW1lRW50cnk6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50OjpWYXJpYWJsZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVF
bnZpcm9ubWVudDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1l
bnQ6Om1hcFNpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpk
ZWNsYXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojp1
c2VQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZh
dGVOYW1lcyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZh
dGVOYW1lc1NpemUgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpo
YXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlQ
cml2YXRlTmFtZXNUbyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6
OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjpnZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1l
L0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFz
UHRyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVE
YXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFy
ZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnQ6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6
OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6
OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29k
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRTeW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2Rl
QmxvY2tJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAg
ICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJv
cik6CisgICAgICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNP
YmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZp
bmVQcml2YXRlRmllbGQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAg
IChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAg
ICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDUtMjcgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlcGxhY2UgYGZl
YXR1cmVHdWFyZGAgYW5kIGBhdmFpbGFiaWxpdHlgIHdpdGggYSBjb21iaW5lZCBgY29uZGl0aW9u
YCB0aGF0IGFjY2VwdHMgYW55IG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggOTFhNmUzYTFiMDQwZTBhZWZlY2Q5MzUzMjdmZGFkNmU5MjEzMzlkNC4uYThmNmRjOWYy
YzcyMDBmOGNhYzRhMmQxZDI0YTVmZWQ2ZDVlOGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTQwLDYgKzU0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAgIGJ5dGVjb2Rl
L1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3MuaAorICAgIGJ5
dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKICAg
ICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2FtcGxlci5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzZTgyMGVhZjM4MGNkYzdjYzRlNDBhOGNj
ZjMxZmQzZGExNWJmNGQuLjFlMmU0MTE4NjdiZjU5ZWUxZDZlOTUzZmE2NTQ4ZWU2YTUyN2Q2YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDYgKzEyNTAsNyBAQAogCQk4
NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgzMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZh
bEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1RjI4NjMwMENC
MkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTIxQzIx
RjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njk3
NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThBMDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTQxMTQsNiArNDExNSw4IEBACiAJCTg2NzA0QjgxMTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlh
cnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclBhdHRlcm4uY3BwOyBwYXRo
ID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQdXRC
eVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhENDIgLyogREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGNEMxNDM1
M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBhdGggPSBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2
ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODQwMCw2ICs4NDAzLDggQEAKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyog
UHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRC
eUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5
SWRWYXJpYW50LmggKi8sCisJCQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuY3BwICovLAorCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZs
YWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywK
IAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8s
CiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywK
QEAgLTEwMTQ4LDYgKzEwMTUzLDcgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAzMUZGRDMgLyog
UHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3REQ5MDA4NUYz
QzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0QUExOEI5MkM0
RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4Njc2QzZF
ODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9wZXJ0eVNsb3Qu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDJlOTVmYjVm
OGQzOGIxZTI5YzUxM2I2ZmMwYzgyNWJlZDVkMGIyNDIuLjZjYWU0ZDRiZTA4MWZjMmY0NTBkOTUx
YWRlZWE3NzEyYzAxYmJkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTI2OCw2
ICsyNjgsNyBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0
QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUv
U3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKaW5kZXggODFiMDNhN2U1MmVkNjg5MTlkOTE2MjJjMmU3NDkyMDBhNmVhMmM4
OC4uNDA4ZWRjZTczOTUwZDE2YjMwNjU0ZWI1OWUzYzY3MDQ5MTU3ZTZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTY4LDcgKzE2OCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKG1ldGEpIFwKICAgICBtYWNybyh3ZWJBc3Nl
bWJseUNvbXBpbGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5z
dGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAotICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0
aWFsaXplcikgCisgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBcCisgICAgbWFj
cm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAogbmFtZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklW
QVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggNGIwMmIyYzdi
MDkzYTA3YjllZWY1MWM5NmIyYTU4NzBjNjVlM2ViMC4uODQ1ZGU3MzZlNzA1Zjc4YjlhOTNkMGQ1
NjE4OTBkOTNlZWQzOTNmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCkBAIC00OSw2ICs0OSw3IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5
cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3Ms
CisgICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUs
CiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTUwLDYgKzU1MSwxOSBAQCBvcCA6Z2V0X2J5X3ZhbCwK
ICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6
Z2V0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogeworICAgICAgICBwcm9maWxl
OiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAg
ICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgcHJvcGVydHk6IFdyaXRlQmFycmllcltKU0Nl
bGxdLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczogewogICAgICAgICBiYXNl
OiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NzUsNyArNTg5LDcgQEAgb3AgOnB1dF9ieV92YWxfZGly
ZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBW
aXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAg
IGVjbWFNb2RlOiBFQ01BTW9kZSwKKyAgICAgICAgZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3Bw
CmluZGV4IGQ1NmFkY2NmMTBiZjE5YzVjOGUwMjE3OGNkZTEzNmRmNGJjODc1ZWIuLjIwNWU3OTRl
NTEzNzdjNTRiYjQ2N2M4ZjJlMmFjYmMxYzJmNTkwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2Nv
cGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1lcmF0b3JTdHJ1Y3R1cmVQ
bmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEVudW1lcmF0b3JHZW5lcmljUG5h
bWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVy
dHkpCisgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VT
KE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92ZXJyaWRlc0hhc0luc3Rh
bmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBVU0VTKE9wSW5zdGFuY2Vv
ZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTQyNiw2ICs0MjcsNyBAQCB2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24q
IGluc3RydQogICAgIERFRlMoT3BJbnN0YW5jZW9mLCBkc3QpCiAgICAgREVGUyhPcEluc3RhbmNl
b2ZDdXN0b20sIGRzdCkKICAgICBERUZTKE9wR2V0QnlWYWwsIGRzdCkKKyAgICBERUZTKE9wR2V0
UHJpdmF0ZU5hbWUsIGRzdCkKICAgICBERUZTKE9wVHlwZW9mLCBkc3QpCiAgICAgREVGUyhPcElk
ZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNFbXB0eSwgZHN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1YTkzODQw
NzMxNjYwN2QyZjE2ZWU2ZDZmMDdjMTY0NWJjYzU3OGY1Li4zZDBlNTc2YmJmNDZlOWQzYTRjYWU2
ZGQwZDMxZTc3Mjc3YjM5MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcApAQCAtMTI1MSw2ICsxMjUxLDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0g
MDsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldFByaXZh
dGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAgICBKU0NlbGwqIHByb3Bl
cnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlE
IHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKworICAgICAgICAgICAgaWYg
KCghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkpICYmICghc3RydWN0dXJl
SUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3Ry
dWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBkYXRh
TG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBMTEludCBwcml2YXRlIHBy
b3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAw
OworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAgICAgICAgICAgbWV0YWRh
dGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAgICAgICBtX21ldGFkYXRh
LT5mb3JFYWNoPE9wUHV0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewogICAgICAgICAgICAg
U3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOwog
ICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0
cnVjdHVyZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Zp
dHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKaW5kZXggMGQ5NTcw
OTI2YWIxNDczNzhlYzMxNzI4MzhkYjIzNTg4MmRiN2JjZC4uMzlmZWUwYTY2OWEyODI2NTg1YTJh
NDkyMmEzODJiZjZiOGEwYWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5oIgogI2luY2x1ZGUgIlBy
b2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5j
bHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRl
ICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5o
IgpAQCAtMjU2LDYgKzI1Nyw0NyBAQCBzdHJ1Y3QgRml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsK
ICAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNt
YU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpOwogICAgIH0KIH07CisKK3Rl
bXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNpemU+
IHsKKyAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5z
aWduZWRUeXBlOworCisgICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJvb2xlYW5zIGFuZCBhIDIg
Yml0IGVudW0sIGVuY29kZWQgYXM6CisgICAgLy8gICAgICAgICAgaXNTdHJpY3QKKyAgICAvLyAg
ICAgICAgICAgICB2CisgICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNEaXJlY3QKKyAgICAvLyAg
ICAgICAgICAgXgorICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgezAgPSBOb25lLCAx
ID0gUHV0LCAyID0gQ3JlYXRlIH0KKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0
Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3RyaWN0Qml0ID0gMjsKKyAg
ICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0gMTI7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQg
PSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFncykKKyAgICB7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQo
UHV0QnlWYWxGbGFncyBmbGFncykKKyAgICB7CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKKyAgICAgICAgYXV0byBpc1N0cmlj
dCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7Cisg
ICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7CisgICAgICAgIHJldHVybiAocHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAoaXNT
dHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKKyAgICB9CisKKyAgICBzdGF0aWMgUHV0QnlWYWxGbGFn
cyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9
IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOworICAgICAgICBhdXRvIGlz
U3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmljdEJpdCk7CisgICAgICAg
IGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdwaSAm
IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZFNoaWZ0KTsKKyAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0
cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgICAgICByZXR1cm4gYWNjZXNzID09IFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPworICAgICAgICAgICAgaXNEaXJlY3QgPyBQdXRC
eVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRl
KGVjbWFNb2RlKSA6CisgICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKSA6
IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSk7CisgICAg
fQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZp
dHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6Omlz
X2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRl
cmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggZTJjMWE0OWI0MzRjMGNjNTE1ODQ5NDQ1
YWNkOWZlZGJmNTk3YTAzNy4uNzA0MjU0YmJiN2E1ZGEzMTY5MWIzMTA2NjhiZjM2Y2EwNDU0ZWM1
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29u
c3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25z
dGFudC5oCkBAIC0xMDQsNiArMTA0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihB
cnJheSwgbnVsbHB0cikgXAogICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYo
Y2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCisgICAgdihjcmVhdGVQcml2YXRlU3ltYm9sLCBudWxs
cHRyKQogCiAKICNkZWZpbmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkg
bmFtZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdz
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0MGE5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
VmFsRmxhZ3MuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorCisjaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCit7CisgICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7Cisg
ICAgaWYgKGZsYWdzLmlzRGlyZWN0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVj
dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQorICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJQcml2YXRlRmllbGQrUHV0Iik7CisgICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZp
ZWxkQWRkKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5VmFsRmxhZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NWZmZDc5N2Y2NTg3ODc5YzBjMzIxNTlj
OTY1MDI4MjgyYTM5ZmNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
OiB1aW50OF90IHsKKyAgICBOb25lLAorICAgIFB1dCwKKyAgICBDcmVhdGUsCit9OworCitjbGFz
cyBQdXRCeVZhbEZsYWdzIHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFs
RmxhZ3MgY3JlYXRlKEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1
dEJ5VmFsRmxhZ3MoZmFsc2UsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICAvLyBBIGRpcmVjdCBw
dXRfYnlfaWQgbWVhbnMgdGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2lu
ZyBpZiB0aGUKKyAgICAvLyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgorICAgIGNvbnN0
ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUp
CisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7Cisg
ICAgfQorCisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURlZmluZVBy
aXZhdGVGaWVsZChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRC
eVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOworICAg
IH0KKworICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQdXRQcml2YXRl
RmllbGQoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxG
bGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAg
ICBib29sIGlzRGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQorICAgIEVDTUFN
b2RlIGVjbWFNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQorICAgIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDo6Tm9uZTsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7
IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZDo6UHV0OyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7
IH0KKworcHJpdmF0ZToKKworICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJl
Y3QsIEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisg
ICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmUpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisg
ICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3Ms
IEVDTUFNb2RlIGVjbWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKKyAgICAgICAg
LCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYWNjZXNzKQorICAgICAgICAsIG1fZWNtYU1vZGUo
ZWNtYU1vZGUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgbV9pc0RpcmVjdDsKKyAgICBQcml2
YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBFQ01BTW9k
ZSBtX2VjbWFNb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBQcmludFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiwgSlNDOjpQdXRCeVZhbEZsYWdzKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAppbmRleCA2MTEyNzlmNjA5YTA4NTg5YWRjZTkx
YzJhNWM4YWY2NDgwODBjNGM2Li5mOTBkNTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZi
MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKQEAgLTI3LDYg
KzI3LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90
RGlyZWN0IH07CitlbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0
ZUZpZWxkQ3JlYXRlLCBEaXJlY3RQcml2YXRlRmllbGRQdXQgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBiY2Y3ZDNhZDg1ZWIxZmNmZDQxZmI3
Zjg5MTAyMmViOWI3ZmQ3ZDU3Li40NjFkOWZhZGQ0OGIzNWJjOTRlZGQ2MTBiNzM4N2NlYTkwMmMx
NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGlj
IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVC
bG9jaygKICAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1v
ZGUoKSkpOwogICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMgPSBleGVjdXRhYmxlLT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZ1bmN0aW9uTm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAg
ICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RN
b2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3Vw
ZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2
ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFt
ZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFy
c2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29u
c3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0
VHlwZTo6Tm9uZSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAK
ICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCA4ODQ2MTFiOGM5Mzc2ODIzYWI5YWY4YmE1ZmEyOThmYTQzZWEz
M2NlLi43YjdhZDMxNmExZTg4Mjg2Zjk0ZTFiMzIzMWJlMmJjY2M4M2FiNTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMTg3OSw2ICsxODc5LDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlu
c3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAK
ICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IDogUHJvcGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLT5hZGQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5
KTsKKworICAgICAgICAgICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBl
dmFsKCkgd2l0aGluIGEgbmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVk
LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNjY2MworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBA
IC0yNjgwLDkgKzI2ODUsMTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4g
dmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0
QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK3sKKyAgICBPcEdldFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJv
cGVydHkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKKyAgICBPcFB1dEJ5VmFs
RGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6
Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3
MDQsNiArMjcxNSwxOCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dElu
dGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogICAgIHJldHVybiB2YWx1
ZTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRl
RmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVy
dHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1v
ZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVt
aXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVy
U2FtcGxlckJlZ2luOjplbWl0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGFmYTNkOTIzNzE3NGEz
ZjdjOTQ0MTRjOGU0ZWI3Yzg3YWUzNWM0NzEuLmNjNjNhOTI2YmNkMjMzNGJlOWIzZTJkODY4YzVk
ZTgyNjEwNWJhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTc5OCwxMSArNzk4LDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlz
VmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsK
IAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgs
IFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZh
dGVGaWVsZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAK
ICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0
U3VwZXJTYW1wbGVyRW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYWUxMWM0YjU5MDk0ZDgzM2FhNjZjZmFlODE5
NTMzNDU5NTA5Y2M1NS4uNDc0OTJjZThmNDFkNzE4NTI3MzAwYWM3YTM1MjZhMzY1ZmUyMGY0OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtNTQ0LDExICs1NDQsMzAgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRI
b21lT2JqZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoZnVuY3Rpb24sIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCksIGhvbWVPYmplY3QpOwog
fQogCit2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAg
Ly8gV2FsayB0aGUgbGlzdCBhbmQgZGVjbGFyZSBhbnkgUHJpdmF0ZSBwcm9wZXJ0eSBuYW1lcyAo
ZS5nLiBgI2Zvb2ApIGluIHRoZSBwcm92aWRlZCBzY29wZS4KKyAgICBmb3IgKFByb3BlcnR5TGlz
dE5vZGUqIHAgPSB0aGlzOyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGNvbnN0IFByb3Bl
cnR5Tm9kZSYgbm9kZSA9ICpwLT5tX25vZGU7CisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFBy
b3BlcnR5Tm9kZTo6UHJpdmF0ZSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNy
ZWF0ZVByaXZhdGVTeW1ib2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0
ciwgTGlua1RpbWVDb25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisKKyAgICAgICAgICAg
IENhbGxBcmd1bWVudHMgYXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzeW1ib2wgPSBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJp
dmF0ZVN5bWJvbC5nZXQoKSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRG
dW5jdGlvbiwgYXJndW1lbnRzLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBE
ZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworCisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
VG9TY29wZShzY29wZSwgdmFyLCBzeW1ib2wuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJ
bml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICB9CisgICAg
fQorfQorCiBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVn
aXN0ZXJJRCogcHJvdG90eXBlLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxk
TG9jYXRpb25zKQogewotICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyBy
ZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7
CiAgICAgUmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKKworICAgIC8vIEZhc3QgY2FzZTogdGhp
cyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgZm9yICg7
IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBw
LT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9w
ZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAtNzEwLDYgKzcyOSw5
IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogbmV3T2JqLCBQcm9wZXJ0eU5vZGUmIG5vZGUpCiB7CisgICAgLy8gUHJpdmF0ZSBmaWVs
ZHMgYXJlIGhhbmRsZWQgaW4gdGhlIHN5bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIg
ZnVuY3Rpb24sIG5vdCBoZXJlLgorICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlO
b2RlOjpQcml2YXRlKSk7CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9IGdlbmVy
YXRvci5zaG91bGRTZXRGdW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lOwpAQCAtODQwLDE2ICs4NjIsNjYgQEAgUmVnaXN0ZXJJ
RCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXIKICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0
OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhp
c1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgp
LCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJ
RCogcmV0ID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERlc3QuZ2V0KCks
IGJhc2UuZ2V0KCkpOworCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3Qu
Z2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAor
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVm
UHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkg
eworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7Cisg
ICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBu
YW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3Vu
ZCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFz
ZSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJO
b2RlKCkpIHsKKyAgICAgICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUg
PSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGRzdCwgYmFzZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgbV9pZGVudCk7Cit9CisK
K1JlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCit7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdEdldFBy
b3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBkc3QsIGJhc2UsIHRoaXNWYWx1ZSk7Cit9CisKK1JlZ2lz
dGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdp
c3RlcklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAg
ICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVz
dCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFy
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRl
TmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZSwgcHJpdmF0ZU5h
bWUuZ2V0KCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgp
KSB7CisgICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gZ2Vu
ZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHZhbHVlKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIG1faWRlbnQsIHZhbHVlKTsKK30KKwor
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0UHV0UHJvcGVy
dHkoZ2VuZXJhdG9yLCBiYXNlLCB2YWx1ZSwgdGhpc1ZhbHVlKTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTE3MzQs
MTEgKzE4MDYsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRPcHRpb25hbENoZWNrKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAg
IH0KICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgp
LCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBpZiAoYmFz
ZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyQmFzZSA9IGVtaXRT
dXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZ1bmN0aW9uLmdldCgpLCBzdXBlckJhc2UuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1Jl
Z2lzdGVyKCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRl
bnQpOworCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBiYXNlSXNTdXBlciA/IGVtaXRT
dXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVy
KCk7CisgICAgZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmdW5jdGlvbi5nZXQoKSwg
YmFzZS5nZXQoKSk7CiAKICAgICBpZiAoaXNPcHRpb25hbENoYWluQmFzZSgpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE9wdGlvbmFsQ2hlY2soZnVuY3Rpb24uZ2V0KCkpOwpAQCAtMjA1OSw2ICsy
MTI5LDIyIEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
YmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RT
dGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CisKKyAgICBpZiAoZG90QWNjZXNzb3It
PmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBBU1NFUlQoIWJhc2VJc1N1cGVyKTsKKyAgICAg
ICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShw
cml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQp
OworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGly
ZWN0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRl
TmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQ
b3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZh
bHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFs
dWUuZ2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmUoZHN0LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VJ
c1N1cGVyKSB7CkBAIC0yMjgyLDYgKzIzNjgsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6
ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBk
b3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAg
UmVnaXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1lKCkp
IHsKKyAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZh
cik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0
ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKwor
ICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQo
KSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBlbWl0SW5jT3JEZWMo
Z2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0
KCksIHZhbHVlKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRz
dCwgcHJvcERzdC5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNW
YWx1ZTsKICAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpIHsKICAgICAgICAgdGhpc1Zh
bHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKQEAgLTMxMjQsMTEgKzMyMjUsNyBAQCBSZWdp
c3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5l
cmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9y
ZWRSZXN1bHQoKSkgPyByZXN1bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgaWYgKG1fYmFz
ZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVl
ID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlk
KGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQo
KSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKKyAgICBlbWl0UHV0UHJvcGVydHkoZ2Vu
ZXJhdG9yLCBiYXNlLmdldCgpLCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZm9yd2FyZFJlc3VsdC5nZXQo
KSk7CiB9CkBAIC0zMTQwLDIzICszMjM3LDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFu
ZFNpZGUobV9iYXNlLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5l
cmF0b3IpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lv
bkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1Zh
bHVlOwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgdGhpc1ZhbHVl
ID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlz
VmFsdWUuZ2V0KCksIG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIG1faWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGVtaXRHZXRQcm9w
ZXJ0eVZhbHVlKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpLCB0aGlzVmFsdWUpOworCiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1p
dFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBP
cGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVz
Y3JpcHRvcigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlm
IChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0
QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7
Ci0gICAgZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQo
KSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0g
ZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlz
VmFsdWUpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5n
ZXQoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNob3J0Q2lyY3Vp
dFJlYWRNb2RpZnlEb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC00NjIwLDYgKzQ3MDksMTcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDYWxsRGVmaW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9w
ZXJ0eU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdl
bmVyYXRvcjo6UHJvcGVydHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlXcml0YWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9z
aXRpb24pOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6
OlR5cGU6OlByaXZhdGVOYW1lOiB7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZSgqbV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2Nh
bCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJp
YWJsZXMiKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9u
KCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyBtX2lkZW50LT5sZW5ndGgoKSk7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51
bGxwdHIsIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZv
dW5kKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVQcml2YXRlRmllbGQoZ2VuZXJhdG9y
LnRoaXNSZWdpc3RlcigpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVk
TmFtZTogewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMg
Y2xhc3MgZmllbGRzCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTgzMzAKQEAgLTQ2MzAsNyArNDczMCw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiQ29tcHV0ZWQgbmFt
ZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlv
bigpICsgMSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgdmFyKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29w
ZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFy
LCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwpAQCAtNDcyMiw2
ICs0ODIyLDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBnZW5lcmF0b3IuZW1pdENh
bGxEZWZpbmVQcm9wZXJ0eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVy
LmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9zaXRpb24p
OwogCiAgICAgaWYgKG1fY2xhc3NFbGVtZW50cykgeworICAgICAgICBtX2NsYXNzRWxlbWVudHMt
PmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iuc2NvcGVS
ZWdpc3RlcigpKTsKKwogICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IGluc3RhbmNlRmll
bGRMb2NhdGlvbnM7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lQ2xhc3NFbGVtZW50cyht
X2NsYXNzRWxlbWVudHMsIGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICBpZiAoIWluc3RhbmNlRmllbGRMb2NhdGlvbnMu
aXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IGNkZWMxODZmMTU5NWQwMTEyOGJhMDAwMzQ2MWJiZGUzZjJiMDllMmUu
LjU1MTZjMmQzYTYzNjlmN2ZjNDNlMzJhYjYzMWFkY2M2MjNhMTM2ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MSw2ICs3MSw3
IEBACiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZs
YWdzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdu
bWVudC5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0xMjY1LDYgKzEyNjYs
MTggQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07
CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlY29kZT4KK0VDTUFNb2RlIGVjbWFNb2RlKEJ5
dGVjb2RlIGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOworfQor
Cit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxE
aXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3QgYnl0ZWNvZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2Rl
Lm1fZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFs
bG9jYXRlVGFyZ2V0YWJsZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAg
ICBBU1NFUlQoYnl0ZWNvZGVJbmRleCk7CkBAIC04MjI2LDcgKzgyMzksNyBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRl
eCBvc3JFeGl0SW5kZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlk
KQotICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0
ZWNvZGUubV9lY21hTW9kZSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50
aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwg
b3NyRXhpdEluZGV4LCBlY21hTW9kZShieXRlY29kZSkpOwogICAgIH0KIAogICAgIGlmICghY29t
cGlsZWRBc1B1dEJ5SWQpIHsKQEAgLTgyMzcsNyArODI1MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRlCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAg
ICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0g
ICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0
IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUu
bV9lY21hTW9kZSkpOworICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3Qg
PyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwg
T3BJbmZvKGVjbWFNb2RlKGJ5dGVjb2RlKSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAv
LyBQdXRCeVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkg
Y2xvYmJlciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJp
Yy4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKaW5kZXggZTg1MDI1MGQwNGIyZmJjMWZjN2I0OTBlNzc1MDkxY2Y2ODhkOGVjNi4uNmVi
Nzc3MTA3ZGZmY2Y3MmYxMzQwMDYzY2YxYzE1NDA3NzgyMGE1NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk3LDYgKzI5Nyw3IEBAIENh
cGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBJCiAKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3Bf
Y3JlYXRlX2dlbmVyYXRvcl9mcmFtZV9lbnZpcm9ubWVudDoKKyAgICBjYXNlIG9wX2dldF9wcml2
YXRlX25hbWU6IC8vIEZJWE1FOiBvcF9nZXRfcHJpdmF0ZV9uYW1lIHdpbGwgbmVlZCBERkcvRlRM
IHN1cHBvcnQgdG8gc2hpcCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3By
b2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21v
ZHVsZV9wcm9ncmFtX3Byb2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzZDIyNWRjYTJkOGI4MDdjNzhmMjMyN2FjMjNkODE3
MWU3ZjBmMjI5Li4yNmRhZjk3OWUxN2NhMGFmMjZmOTI2MWRkYmQ4OTJiNmY1YjhlOGZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
MTQzNjYsNyArMTQzNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwg
Y2FsbFNpdGUsIHVzZWRSZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShiYXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBl
Y21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5k
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKG1faml0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCmluZGV4IGZiN2ZjZWVjYjQ1Y2I3OWQ5NzFiNTAzOWY0MDYzNjhkMzMyNDEzZmYuLmQ0
MDRjZmRlNDkxOTE0ZjYwN2ZmMWU1YjcyZjQ0ODk0NjhmYzE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQyMDEsNyArNDIwMSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBjYWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBd
LmdwcigpKSwKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigp
KSwgR1BSSW5mbzo6cGF0Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/
IERpcmVjdCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAKICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKaW5kZXggOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3
YzYyODc5YzE2YjEwYzgzMS4uZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYx
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTE0MSw2ICsxNDEs
NyBAQCBtb2R1bGUgRFNMCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxh
Z3MuaCIKICNpbmNsdWRlICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2
MGZjNGQ0MjY1NmMxNDkuLjk2YzE5YTE3YmRjMmE3ZDEwZjE1ZjliY2EzOTAyMTYyMWM5OWRiODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3Qp
IFwKICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KSBcCiAg
ICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAorICAg
IG1hY3JvKE9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGlt
aXplKSBcCisgICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3Ry
aWN0T3B0aW1pemUpIFwKICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1h
Y3JvKFB1dEJ5SWRSZXBsYWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNo
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggMDA1ZDNhMTY1NjQwZTk4NDYwM2Jk
OWQwZGI3ZjQzNjNhMGM5MmNlMy4uNmQxNmQ5OTBhMGRhNmE4ZTY1ZGY0MmY1YzE5MTYzNTY1M2Rj
MDFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1Ao
cHVzaF93aXRoX3Njb3BlKQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMp
CisgICAgICAgIERFRklORV9TTE9XX09QKGdldF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklO
RV9TTE9XX09QKHB1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1
dF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChyZXNvbHZlX3Njb3Bl
X2Zvcl9ob2lzdGluZ19mdW5jX2RlY2xfaW5fZXZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IGQ2MzFmMDFjYTg0MGJmMzQ0ZTYzNjI4YWM1YjM1NzVlYzRkZjgzOTIuLjAxYmM0NmZhMzM1
ZWI2MWE3NzhmYWQwN2M1MWNkM2NlODQwY2FkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApA
QCAtNDAxLDcgKzQwMSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3A+CiAgICAgICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChP
cCwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOwogCi0gICAgICAgIC8v
IElkZW50aWZpZXIgY2hlY2sgaGVscGVyIGZvciBQdXRCeVZhbC4KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CisgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKKworICAgICAgICAv
LyBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVj
b2RlLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKworICAgICAgICAvLyBJZGVu
dGlmaWVyIGNoZWNrIGhlbHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2
b2lkIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQg
c2NyYXRjaCwgQ2FjaGVhYmxlSWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDU0ODU4MzkwZWZiN2Iz
NmI0ZjhlOWVmOGZjZWNmMThjMDllNDIwYjMuLjIzNjgzMDQ1ZjFmZDFmNmFhNDVlNjFkNjM4OWFl
ZjFmYzI4MjAxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCB2b2lkIEpJVEdl
dEJ5SWRXaXRoVGhpc0dlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYg
aml0KQogSklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNh
bGxTaXRlLCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRp
ZmllciwKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNj
cmF0Y2gsIAotICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgOiBK
SVRCeUlkR2VuZXJhdG9yKAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRl
LCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQotICAgICwgbV9l
Y21hTW9kZShlY21hTW9kZSkKLSAgICAsIG1fcHV0S2luZChwdXRLaW5kKQorICAgIEVDTUFNb2Rl
IGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywg
Y29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFz
ZSwgdmFsdWUpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX3B1
dEtpbmQocHV0S2luZCkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJpdmF0
ZUZpZWxkQWNjZXNzS2luZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFy
KHNjcmF0Y2gpOwogfQpAQCAtMTUyLDYgKzE1MiwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRp
b25fR1NzaUpKQyBKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKKyAg
ICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmUpIHsKKyAgICAgICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgICAgICBB
U1NFUlQobV9lY21hTW9kZS5pc1N0cmljdCgpKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXpl
OworICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9w
dGltaXplOworICAgIH0KKwogICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAg
ICAgaWYgKG1fcHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDk3NmY3MWJiYWFjOTFkOTNl
NjA3MDY3Nzk2YzZjNTI0ZTA0OWQ1ZmQuLjczMjlkNmI3MzgxNGQ2YzRiYTU1MmE1ODkzZTcyYjAy
MWU2YTUxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZUNhY2hlR2VuZXJhdG9yLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgogI2luY2x1
ZGUgIlJlZ2lzdGVyU2V0LmgiCiAKQEAgLTEzMCwxMSArMTMxLDEyIEBAIGNsYXNzIEpJVFB1dEJ5
SWRHZW5lcmF0b3IgOiBwdWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklU
UHV0QnlJZEdlbmVyYXRvcigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0
KCkpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQ6Ok5vbmUpCiAgICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAg
ICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwK
LSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0
S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1v
ZGUsIFB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CiAgICAg
CiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0x
NDMsNiArMTQ1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2Rl
OwogICAgIFB1dEtpbmQgbV9wdXRLaW5kOworICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9w
cml2YXRlRmllbGRBY2Nlc3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3Ig
OiBwdWJsaWMgSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaAppbmRleCA5YjZjMDUyNDhiYTI5Mjk2Zjk5ZWQzNzZmYjk0ODI4ZmJjOTMz
Y2JmLi5kNTNlNjk3N2QzOWQ3NTllNjc0MTJmZDlhZDFiOWU2NzgyYjk3ZDMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApAQCAtNjg2LDYgKzY4NiwzNiBAQCBBTFdBWVNf
SU5MSU5FIEJpbmFyeUFyaXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlP
cCBieXRlY29kZSkKICAgICByZXR1cm4gYXJpdGhQcm9maWxlOwogfQogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZShPcCBvcCkKK3sK
KyAgICByZXR1cm4gb3AubV9lY21hTW9kZTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElO
RSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQoreworICAg
IHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19J
TkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFs
RGlyZWN0IG9wKQoreworICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIE9wPgorUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoT3ApCit7CisgICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBvcCkKK3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nl
c3NLaW5kKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDNh
NDFlNzYyZWM4ZDgzY2M0MmFjZTFkMTNiMmQ0Nzk2MmI0Njc1NzUuLjNkZTg0MjUzYmMyZmUxMjFk
Y2UzNTExMDYzMGM1ZTMwMjRjMjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcApAQCAtNjk3LDYgKzY5NywxMTcgQEAgdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmEKICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJh
c2VPYmplY3QsIHN0cnVjdHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3Qp
OwogfQogCit9IC8vIGV4dGVybiAiQyIKKwordXNpbmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sg
PSBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9w
ZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJik+OworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCBwdXRQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZp
ZXIgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJh
Y2smIGNhbGxiYWNrID0gUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlk
ZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKKworICAgIFB1dFByb3BlcnR5U2xvdCBwdXRTbG90KGJhc2VPYmplY3QsIHRy
dWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJp
dmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAg
ICAgICBjYWxsYmFjayh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50
KTsKK30KKworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBkZWZpbmVQcml2YXRlRmllbGQoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNWYWx1
ZSB2YWx1ZSwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJp
dmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2
bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7
CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFN0cnVj
dHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKworICAgIFB1
dFByb3BlcnR5U2xvdCBwdXRTbG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJ
ZENvbnRleHQoKSk7CisgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9i
amVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjayh2bSwg
Y29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30KKworZXh0ZXJuICJD
IiB7CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZp
ZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxM
X0ZSQU1FKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hl
YWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAg
ICBkZWZpbmVQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFs
dWUsIGlkZW50aWZpZXIsIHZhbHVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdD
YWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxl
clNjb3BlKGZhbHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJh
dGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEFjY2Vzc1R5cGUg
YWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBl
KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpKTsKKworICAgIGRlZmluZVByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbPV0oVk0mIHZtLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYg
cHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2
ZW50OjpPcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6
ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJh
c2VPYmplY3QpKTsKKworICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5
cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKKwor
ICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9s
ZFN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9i
YWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVy
LCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CisgICAgfSk7
Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
dWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZS
QU1FKHZtKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJs
ZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOwor
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBw
dXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGlk
ZW50aWZpZXIsIHZhbHVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJ
ZGVudGlmaWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZh
bHNlKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNo
ZWFibGVJZGVudGlmaWVyKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2Fz
dDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisKKyAgICBwdXRQcml2
YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlm
aWVyLCB2YWx1ZSwgWyZdKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSog
b2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSks
IGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQorICAg
ICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmpl
Y3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQ
cml2YXRlRmllbGRQdXQpOworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQsIEpTVmFsdWUgdmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21h
TW9kZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDllYTNjYmQ5MzRlYjQ3MzY5NzFkNmY5
ZTFiMjdlNzgxODhkNDY0MTAuLjY2NzA1ZTQ1OThhZjk2N2UwOTIwNTI2ODU4MTc1N2E5ODdiYWFm
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgs
NiArMTg4LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0
aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJO
QUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVs
ZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50
cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
UHV0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8q
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFN
b2RlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0
QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmlu
ZGV4IGVhNzMxYzMwMzk4MTFjMDI2Yzg1NTk5Y2E2MDk2YjY4MjZmMzg2YzIuLmNkZTNmZDUwMTRh
MTVlNjY0ZWMxMmI0OGFlN2VjOTAzNDkxYzM4MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgSklUUHV0
QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwg
UHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgo
bV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygp
LCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3Mo
cmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3Ry
dWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBG
SVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZl
bHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEpJVDo6ZW1p
dFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9w
ZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92
YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOworICAgICAgICBl
Y21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNE
aXJlY3QpCkBAIC02NTgsOCArNjU4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRl
eCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2
YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVG
cm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAg
ICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNv
ZGUubV9mbGFncy5lY21hTW9kZSgpLAotICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJl
Y3QpOworICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGly
ZWN0LCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdl
bmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAppbmRleCBmYzJlNDRkNzkyYWFmMDQyOGYyMzBhZWZkZjk2NjQ4M2Y0ZWQ5Yjhm
Li5lYmM2M2QxNmU2OTNmYjA1NmVmMDZjMTZjMGNhZGY2YTc0MmY1NjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAg
LTQ0Myw2ICs0NDMsNDggQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRBcnJheVN0b3JhZ2VQdXRC
eVZhbChPcCBieXRlY29kZSwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSkKICAgICByZXR1cm4gc2xv
d0Nhc2VzOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3A+CitKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsIENhY2hlYWJsZUlkZW50aWZpZXIgcHJvcGVydHlOYW1lLCBKdW1wTGlzdCYgZG9uZUNhc2Vz
LCBKdW1wTGlzdCYgc2xvd0Nhc2VzKQoreworICAgIC8vIGJhc2U6IHRhZyhyZWdUMSksIHBheWxv
YWQocmVnVDApCisgICAgLy8gcHJvcGVydHk6IHRhZyhyZWdUMyksIHBheWxvYWQocmVnVDIpCisK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKKyAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOworCisgICAgc2xvd0Nhc2VzLmFwcGVu
ZChicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKKyAgICBlbWl0QnlWYWxJZGVudGlmaWVyQ2hlY2so
cmVnVDIsIHJlZ1QyLCBwcm9wZXJ0eU5hbWUsIHNsb3dDYXNlcyk7CisKKyAgICAvLyBXcml0ZSBi
YXJyaWVyIGJyZWFrcyB0aGUgcmVnaXN0ZXJzLiBTbyBhZnRlciBpc3N1aW5nIHRoZSB3cml0ZSBi
YXJyaWVyLAorICAgIC8vIHJlbG9hZCB0aGUgcmVnaXN0ZXJzLgorICAgIC8vCisgICAgLy8gSUMg
Y2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBp
cyBjZWxsLgorICAgIC8vIFdlIGFyZSBlbWl0dGluZyB3cml0ZS1iYXJyaWVyIGJlZm9yZSB3cml0
aW5nIGhlcmUgYnV0IHRoaXMgaXMgT0sgc2luY2UgMzJiaXQgSlNDIGRvZXMgbm90IGhhdmUgY29u
Y3VycmVudCBHQy4KKyAgICAvLyBGSVhNRTogVXNlIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIg
aW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNvZGUgc2l6ZS4KKyAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Mzk1CisgICAgZW1pdFdyaXRl
QmFycmllcihiYXNlLCBTaG91bGRGaWx0ZXJCYXNlKTsKKyAgICBlbWl0TG9hZFBheWxvYWQoYmFz
ZSwgcmVnVDApOworICAgIGVtaXRMb2FkKHZhbHVlLCByZWdUMywgcmVnVDIpOworCisgICAgSklU
UHV0QnlJZEdlbmVyYXRvciBnZW4oCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1f
Ynl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJT
ZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCisgICAgICAgIEpT
VmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiks
IHJlZ1QxLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtpbmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQoYnl0ZWNvZGUpKTsKKyAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CisgICAgZG9u
ZUNhc2VzLmFwcGVuZChqdW1wKCkpOworCisgICAgTGFiZWwgY29sZFBhdGhCZWdpbiA9IGxhYmVs
KCk7CisgICAgZ2VuLnNsb3dQYXRoSnVtcCgpLmxpbmsodGhpcyk7CisKKyAgICAvLyBKSVRQdXRC
eUlkR2VuZXJhdG9yIG9ubHkgcHJlc2VydmUgdGhlIHZhbHVlIGFuZCB0aGUgYmFzZSdzIHBheWxv
YWQsIHdlIGhhdmUgdG8gcmVsb2FkIHRoZSB0YWcuCisgICAgZW1pdExvYWRUYWcoYmFzZSwgcmVn
VDEpOworCisgICAgQ2FsbCBjYWxsID0gY2FsbE9wZXJhdGlvbihnZW4uc2xvd1BhdGhGdW5jdGlv
bigpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVl
UmVncyhyZWdUMywgcmVnVDIpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBwcm9wZXJ0eU5h
bWUucmF3Qml0cygpKTsKKyAgICBnZW4ucmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4s
IGNhbGwpOworICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKKworICAgIHJldHVybiBnZW47
Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgYm9vbCBpc0RpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+b3Bjb2RlSUQo
KSA9PSBvcF9wdXRfYnlfdmFsX2RpcmVjdDsKQEAgLTQ1NSw3ICs0OTcsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8UwogICAgICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBw
cm9wZXJ0eSA9IGJ5dGVjb2RlLm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUu
bV92YWx1ZTsKLSAgICAgICAgZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOworICAgICAg
ICBlY21hTW9kZSA9IEpJVDo6ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAo
aXNEaXJlY3QpCkBAIC02NjQsNyArNzA2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29k
ZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAogICAgICAg
ICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93bmVkQnlDb2RlQmxv
Y2sobV9jb2RlQmxvY2ssICppZGVudCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25s
eShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksCi0gICAgICAgIHJlZ1QxLCBieXRl
Y29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7Cisg
ICAgICAgIHJlZ1QxLCBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAgICAgCiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBiMTdlYzcy
NGI2MWViMTEwYjQyMjc4MzBkMmEyZDBlMmIyNjg4MmVjLi40NGJiYWZhMGZiOTU4NzliODgzMWFi
ZDZhMzUwOTMwNGFhZDgwNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
QEAgLTUyMCw2ICs1MjAsMTAgQEAgc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVHZW5lcmljUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHV0S2kKICAgICBpZiAoc2xv
dC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAg
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdDsKKyAgICAgICAgaWYg
KHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3Q7CisgICAgICAgIGlmIChw
dXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0OwogICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZFN0cmljdDsKICAgICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAt
NTMyLDYgKzUzNiwxMCBAQCBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZU9wdGltaXppbmdQdXRCeUlk
RnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdQogICAgIGlmIChzbG90Lmlz
U3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAg
ICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemU7CisgICAgICAg
IGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkKKyAgICAgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7Cisg
ICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZFB1dCkKKyAgICAgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CiAg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemU7CiAgICAgfQogICAg
IGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTYyNSw2ICs2MzMsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENvZGVCbG9jawogICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQb2x5UHJvdG9BY2Nl
c3NDaGFpbj4gcHJvdG90eXBlQWNjZXNzQ2hhaW47CiAgICAgICAgICAgICAgICAgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgY29uZGl0aW9uU2V0OwogICAgICAgICAgICAgICAgIGlmIChwdXRL
aW5kID09IE5vdERpcmVjdCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHV0S2luZCAh
PSBEaXJlY3RQcml2YXRlRmllbGRQdXQgJiYgcHV0S2luZCAhPSBEaXJlY3RQcml2YXRlRmllbGRD
cmVhdGUpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGNhY2hlU3RhdHVzID0gcHJlcGFyZUNo
YWluRm9yQ2FjaGluZyhnbG9iYWxPYmplY3QsIGJhc2VDZWxsLCBudWxscHRyKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjYWNoZVN0YXR1cykKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHaXZlVXBPbkNhY2hlOwpAQCAtNjQyLDYgKzY1MSwxMyBAQCBzdGF0aWMgSW5saW5lQ2Fj
aGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENv
ZGVCbG9jawogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOworICAgICAg
ICAgICAgICAgICAgICBjb25kaXRpb25TZXQgPSBnZW5lcmF0ZUNvbmRpdGlvbnNGb3JQcm9wZXJ0
eU1pc3Modm0sIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBuZXdTdHJ1Y3R1cmUsIGlkZW50Lmlt
cGwoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29uZGl0aW9uU2V0LmlzVmFsaWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaXZlVXBPbkNhY2hlOworICAgICAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjpjcmVhdGVU
cmFuc2l0aW9uKHZtLCBjb2RlQmxvY2ssIHByb3BlcnR5TmFtZSwgb2Zmc2V0LCBvbGRTdHJ1Y3R1
cmUsIG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBXVEZNb3ZlKHByb3RvdHlwZUFjY2Vzc0No
YWluKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoc2xvdC5pc0NhY2hlYWJs
ZUN1c3RvbSgpIHx8IHNsb3QuaXNDYWNoZWFibGVTZXR0ZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAx
ZmMyMzIyODkxMWM4N2ViYWVhYWI0MGM3NzRjNzE2YmNiZjVjMmQ1Li5jNTIzZThhNjAwNmRkYzUz
ZDI1OTlhNGQyNGM2ZTk0YjU0ZGNhZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtNjAsNiArNjAsNyBAQAog
I2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
ICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIK
ICNpbmNsdWRlICJTaGFkb3dDaGlja2VuLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDFkMDYxNWM3MDJmNjIxYTMxMzI2YWRkMTJiNjU1M2Vm
NDBmOWQ2M2MuLmQxZmQ2ZTYxNTNjYzhhODU2OGNjZWVmMjc5ZWZiY2Y1NzA5ZTBkNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTA3
MCw2ICsxMDcwLDY0IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
KQogICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChnZXRCeVZhbCh2bSwgZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBieXRlY29kZSkpOwogfQogCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldFByaXZhdGVOYW1lPigp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2Rl
Lm1fYmFzZSk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwg
Ynl0ZWNvZGUubV9wcm9wZXJ0eSk7CisgICAgQVNTRVJUKHN1YnNjcmlwdC5pc1N5bWJvbCgpKTsK
KworICAgIGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlw
dC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXRPd25Qcm9wZXJ0eSk7CisgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworCisgICAgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgc2xvdC5pc0NhY2hl
YWJsZSgpICYmICFzbG90LmlzVW5zZXQoKSkgeworICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5
dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVj
dHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKyAgICAgICAg
ICAgIGlmIChvbGRTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogYSA9
IHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCk7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBiID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0p
OworCisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZTo6c2hvdWxkQ29udmVydFRvUG9seVBy
b3RvKGEsIGIpKSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChhLT5yYXJlRGF0YSgpLT5z
aGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkuZ2V0KCkgPT0gYi0+cmFyZURhdGEoKS0+c2hhcmVk
UG9seVByb3RvV2F0Y2hwb2ludCgpLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYS0+cmFy
ZURhdGEoKS0+c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLT5pbnZhbGlkYXRlKHZtLCBTdHJp
bmdGaXJlRGV0YWlsKCJEZXRlY3RlZCBwb2x5IHByb3RvIG9wcG9ydHVuaXR5LiIpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoc2xvdC5pc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBj
YWNoZS4KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAwOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworCisgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5w
cm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCgpKSB7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOworCisgICAgICAgICAgICAgICAgICAgIC8vICBVcGRhdGUgdGhlIGNhY2hlZCBwcml2YXRl
IHN5bWJvbAorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwg
Y29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihjb2RlQmxvY2spOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKHNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTExMSwy
MCArMTE2OSw0MiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9k
aXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwotICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZS5pc1N0cmljdCgpOworICAgIGJvb2wg
aXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCk7Cisg
ICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcyA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRl
RmllbGRBY2Nlc3MoKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2Ny
aXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZp
ZWxkQWNjZXNzKTsKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3Vs
ZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VO
RCgpOwogICAgIH0KIAorICAgIGlmIChzdWJzY3JpcHQuaXNEb3VibGUoKSkgeworICAgICAgICBB
U1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKKyAgICAgICAgZG91YmxlIHN1YnNjcmlwdEFz
RG91YmxlID0gc3Vic2NyaXB0LmFzRG91YmxlKCk7CisgICAgICAgIHVpbnQzMl90IHN1YnNjcmlw
dEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN1YnNjcmlwdEFzRG91YmxlKTsKKyAg
ICAgICAgaWYgKHN1YnNjcmlwdEFzRG91YmxlID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5k
ZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7CisgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNjcmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgaXNTdHJp
Y3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxk
Tm90VGhyb3cpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICB9CisK
ICAgICAvLyBEb24ndCBwdXQgdG8gYW4gb2JqZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFuIGV4Y2Vw
dGlvbi4KICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFkodGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAg
ICAgIExMSU5UX0VORCgpOwogCisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9
PSBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQogICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJ
bmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZhbHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUg
PyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJv
dyk7CiAgICAgZWxzZSB7CisgICAgICAgIGlmIChpc1ByaXZhdGVGaWVsZEFjY2VzcykgeworICAg
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsK
KyAgICAgICAgICAgIGlmIChieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCisg
ICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVj
dCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
dmFsdWUsIHNsb3QpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7ICAgIAorICAgICAgICB9CisK
ICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsK
ICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpwdXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9i
amVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDhhZGVlMTZmYjVj
OTkwMGE3YmIyOGY0NzAwNzQ2ZDc0YzJmYmY0N2MuLjlhNzVmNjVjZWZhZjc5ZTUyMDk4ZTQ5NmRj
MWQwNDA2YjIyMjZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCkBAIC03Miw2ICs3Miw3IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHV0X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVs
X2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3Zh
bCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25h
bWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRf
YnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGly
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNTdlMzk4MmI4MzllYWY5ZWE5OGNmNDgyOTBkNjE0
MjMyMDQ0YTVhNi4uMmNlZmIzNzc5NzYwYTVlOGFhNDRjMDViZDliN2NjOWQwZTk0NDBhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTE1MTksNyArMTUxOSw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0CiAKIGVuZCkKIAotCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0
QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAg
IG1hY3JvIGZpbmlzaEludEdldEJ5VmFsKHJlc3VsdFBheWxvYWQsIHNjcmF0Y2gpCiAgICAgICAg
IGdldChtX2RzdCwgc2NyYXRjaCkKQEAgLTE1OTcsNiArMTU5NiwyOSBAQCBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZAogCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVf
bmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEodDUsIHQwKQorCisgICAgIyBTbG93IHBhdGggaWYg
dGhlIHByaXZhdGUgZmllbGQgaXMgc3RhbGUKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDApCisgICAg
bG9hZHAgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDVdLCB0MQorICAg
IGJwbmVxIHQxLCB0MCwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBnZXQobV9iYXNlLCB0
MCkKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0
NV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxU
YWcsIHQzLCAub3BHZXRQcml2YXRlTmFtZVNsb3cpCisgICAgbG9hZGkgT3BHZXRQcml2YXRlTmFt
ZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKKyAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlSURbdDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkUHJvcGVydHlB
dFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQorICAgIHZhbHVlUHJvZmlsZShPcEdldFBy
aXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEpCisgICAgcmV0dXJuKHQwLCB0MSkKKwor
Lm9wR2V0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dldF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQorCiAKIG1hY3JvIHB1dEJ5
VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDE1NjlmNDg1
YTE5ZGZiZTY3MDAwY2NhZmJkZDAyZWE3MzQyMGY5ZjkuLjE3Y2M0OTQ4ODNiMGIzNjdjZTI4MDE0
OTU0M2NhYmQzYmZhNzcyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xNTY1LDcgKzE1NjUsNiBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdAogCiBlbmQpCiAKLQogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKICAgICBtYWNybyBmaW5pc2hHZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCiAg
ICAgICAgIGdldChtX2RzdCwgc2NyYXRjaCkKQEAgLTE2NDksNiArMTY0OCwyOSBAQCBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZAogCiBlbmQpCiAKK2xsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X3By
aXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEodDIsIHQwKQorCisgICAgIyBTbG93IHBh
dGggaWYgdGhlIHByaXZhdGUgZmllbGQgaXMgc3RhbGUKKyAgICBnZXQobV9wcm9wZXJ0eSwgdDAp
CisgICAgbG9hZHAgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fcHJvcGVydHlbdDJdLCB0
MQorICAgIGJwbmVxIHQxLCB0MCwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBnZXQobV9i
YXNlLCB0MCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5v
cEdldFByaXZhdGVOYW1lU2xvdykKKyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNd
LCB0MQorICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUlE
W3QyXSwgdDAKKyAgICBiaW5lcSB0MCwgdDEsIC5vcEdldFByaXZhdGVOYW1lU2xvdworCisgICAg
bG9hZGkgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3QyXSwgdDEKKyAgICBs
b2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQxLCB0MywgdDApCisgICAgdmFsdWVQcm9maWxl
KE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDIsIHQwKQorICAgIHJldHVybih0MCkKKwor
Lm9wR2V0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dldF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2goKQorZW5kKQogCiBtYWNybyBwdXRCeVZh
bE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaAppbmRleCAxMGExNDUzZjhiZTI3ZDIyZTBlMzVhOTA2ZTU5MGRjZjQ3
YWUwZjcyLi4wYzA2YjM2YTg5MjA0OTRiZTBhNDY2NmFlY2U5NWYzOWVmOGQyOTJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMjcwLDEyICsyNzAsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciogcHJvcGVydHksIERvdFR5cGUgdHlwZSwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBlbmQpCiAgICAgewogICAgICAgICBpZiAoYmFzZS0+aXNTdXBlck5vZGUoKSkKICAgICAg
ICAgICAgIHVzZXNTdXBlclByb3BlcnR5KCk7CiAgICAgICAgIAotICAgICAgICBEb3RBY2Nlc3Nv
ck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlv
biwgYmFzZSwgKnByb3BlcnR5KTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3
IChtX3BhcnNlckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0
eSwgdHlwZSk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZv
dCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtNjUxLDYgKzY1MSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBub2RlLT5pc0Fzc2lnbm1lbnRMb2NhdGlvbigpOwog
ICAgIH0KIAorICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oY29uc3QgRXhwcmVzc2lvbiYgbm9k
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBub2RlLT5pc1ByaXZhdGVMb2NhdGlvbigpOworICAg
IH0KKwogICAgIGJvb2wgaXNPYmplY3RMaXRlcmFsKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCiAg
ICAgewogICAgICAgICByZXR1cm4gbm9kZS0+aXNPYmplY3RMaXRlcmFsKCk7CkBAIC0xNDM4LDE1
ICsxNDQzLDE1IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgRG90QWNjZXNzb3JOb2Rl
KiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlv
bkNhbGxEb3ROb2RlKiBub2RlID0gbnVsbHB0cjsKICAgICBpZiAoIXByZXZpb3VzQmFzZVdhc1N1
cGVyICYmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmNhbGxQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHJpdmF0ZU5hbWUoKSkpCi0gICAgICAgIG5v
ZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAgbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICBlbHNlIGlmICghcHJl
dmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCkgfHwgZG90LT5pZGVudGlmaWVy
KCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVByaXZhdGVOYW1l
KCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIG9ubHkgbmVlZGVkIGJlY2F1
c2Ugd2UgaGF2ZW4ndCB0YXVnaHQgdGhlIGJ5dGVjb2RlIGdlbmVyYXRvciB0byBpbmxpbmUKICAg
ICAgICAgLy8gUmVmbGVjdC5hcHBseSB5ZXQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNjY4LgogICAgICAgICBpZiAoIWRvdC0+YmFzZSgpLT5pc1Jlc29s
dmVOb2RlKCkgfHwgc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihkb3QtPmJhc2UoKSktPmlkZW50
aWZpZXIoKSAhPSAiUmVmbGVjdCIpCi0gICAgICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JB
cHBseUNoaWxkRGVwdGgpOworICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQs
IGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CiAgICAgfQogICAgIGlmICghbm9kZSkKLSAgICAgICAg
bm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+
dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIG5vZGUtPnNl
dFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7
CiAgICAgcmV0dXJuIG5vZGU7CiB9CkBAIC0xNTg3LDcgKzE1OTIsNyBAQCBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlKj4obG9jKTsKIAogICAgIGlmIChvcCA9PSBPcGVyYXRvcjo6RXF1YWwpCi0gICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBk
b3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFy
ZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVy
KCksIGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwg
c3RhcnQsIGVuZCk7CiAKICAgICBpZiAob3AgPT0gT3BlcmF0b3I6OkNvYWxlc2NlRXEgfHwgb3Ag
PT0gT3BlcmF0b3I6Ok9yRXEgfHwgb3AgPT0gT3BlcmF0b3I6OkFuZEVxKSB7CiAgICAgICAgIGF1
dG8qIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFNob3J0Q2lyY3VpdFJlYWRNb2RpZnlEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBl
eHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKQEAgLTE1OTUsNyArMTYwMCw3
IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0K
IAotICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFk
TW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBv
cCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CisgICAgUmVh
ZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgp
LCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAg
bm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCku
b2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKaW5kZXggOTE3MTc4OTZlNDQ0ODViZWI3OTQwNzA4MGJlMjZmOWIzMzk4YTllZC4u
MzY0OGE0NDg0M2I3MmNlOTg1MTcxNzUzMGZmNTA2ZWM2YThiODE5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTk0NSwxMCArOTQ1LDExIEBAIHRlbXBsYXRlIDxi
b29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4
ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9T
VFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3Bh
cnNpbmdCdWlsdGluRnVuY3Rpb247CisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJl
bnQgPT0gJyMnOworICAgIGJvb2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYg
bV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogICAgIGJvb2wgaXNXZWxsS25vd25TeW1ib2wgPSBm
YWxzZTsKLSAgICBpZiAoaXNQcml2YXRlTmFtZSkgeworICAgIGlmIChpc0J1aWx0aW5OYW1lKSB7
CiAgICAgICAgIEFTU0VSVChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pOwogICAgICAgICBzaGlm
dCgpOwogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdAJykgewpAQCAtOTU2LDggKzk1NywxMiBA
QCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpT
VG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAg
fQogICAgIH0KLSAgICAKKwogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJy
ZW50U291cmNlUHRyKCk7CisKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQo
KTsKKwogICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSB8fCBtX2N1cnJlbnQgPT0g
J1xcJyk7CiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAgIHNoaWZ0
KCk7CkBAIC05NjksNyArOTc0LDggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAKICAg
ICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24p
IHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBp
ZGVudGlmaWVyU3RhcnQ7Ci0gICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24gJiYg
aXNQcml2YXRlTmFtZSkgeworICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZp
ZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGlu
RnVuY3Rpb24gJiYgaXNCdWlsdGluTmFtZSkgewogICAgICAgICAgICAgaWYgKGlzV2VsbEtub3du
U3ltYm9sKQogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVy
KG1fdm0sIG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3du
U3ltYm9sKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCkpOwogICAgICAgICAgICAg
ZWxzZQpAQCAtOTkxLDIwICs5OTcsMjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICB9
IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKLSAgICBpZiAoVU5M
SUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlu
cyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsK
KyAgICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5U
OworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhl
ckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNC
dWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAg
ICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29u
c3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsK
ICAgICAgICAgICAgIEFTU0VSVCgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFlbnRy
eSk7CiAgICAgICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBJREVO
VDsKKyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICAgICAgSlNUb2tl
blR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwg
c3RyaWN0TW9kZSA/IHRva2VuIDogSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gKHRva2VuICE9
IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogaWRlbnRUeXBlOwog
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgcmV0dXJuIGlkZW50VHlw
ZTsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0K
IAogdGVtcGxhdGUgPD4KQEAgLTEwMjEsNyArMTAyOCwxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91
bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFy
Pjo6cAogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJy
ZW50ID09ICcjJzsKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNv
dXJjZVB0cigpOworCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisK
ICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQoaXNTaW5nbGVDaGFyYWN0ZXJJ
ZGVudFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpIHx8IG1f
Y3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFBhcnQo
bV9jdXJyZW50KSkgewpAQCAtMTA0NSw2ICsxMDU3LDkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxk
Q3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46
OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAgICAg
CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHJldHVybiBQUklWQVRFTkFNRTsKKwog
ICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZs
YWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSkgewogICAgICAg
ICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgewpAQCAtMTA2OSw2ICsxMDg0LDE0IEBAIEpTVG9rZW5UeXBlIExl
eGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSog
dG9rZW5EYXRhCiAgICAgQVNTRVJUKG1fYnVmZmVyMTYuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQo
IXRva2VuRGF0YS0+ZXNjYXBlZCk7CiAKKyAgICBhdXRvIGlkZW50Q2hhcnNTdGFydCA9IGlkZW50
aWZpZXJTdGFydDsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSAqaWRlbnRpZmllclN0YXJ0ID09
ICcjJzsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgKytpZGVudENoYXJzU3RhcnQ7
CisKKyAgICBKU1Rva2VuVHlwZSBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5B
TUUgOiBJREVOVDsKKyAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUgfHwgaWRlbnRpZmllclN0YXJ0
ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSk7CisKICAgICBhdXRvIGZpbGxCdWZmZXIgPSBbJl0gKGJv
b2wgaXNTdGFydCA9IGZhbHNlKSB7CiAgICAgICAgIC8vIFx1WFhYWCB1bmljb2RlIGNoYXJhY3Rl
cnMgb3IgU3Vycm9nYXRlIHBhaXJzLgogICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1
cnJlbnRTb3VyY2VQdHIoKSkKQEAgLTEwODgsNyArMTExMSw3IEBAIEpTVG9rZW5UeXBlIExleGVy
PENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9r
ZW5EYXRhCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAg
ICAgICAgICByZWNvcmRVbmljb2RlQ29kZVBvaW50KGNoYXJhY3Rlci52YWx1ZSgpKTsKICAgICAg
ICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKLSAgICAgICAgICAg
IHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgIH0K
IAogICAgICAgICBBU1NFUlQoVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpKTsKQEAgLTExMDQs
MTAgKzExMjcsMTAgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRl
bnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJj
ZVB0cigpOwotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7
CiAgICAgfTsKIAotICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50aWZpZXJT
dGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOworICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxs
QnVmZmVyKGlkZW50Q2hhcnNTdGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOwogICAgIGlmIChV
TkxJS0VMWSh0eXBlICYgRXJyb3JUb2tlbkZsYWcpKQogICAgICAgICByZXR1cm4gdHlwZTsKIApA
QCAtMTE0MCwxMyArMTE2MywxMyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6
cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAgICBB
U1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZh
bHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICgh
ZW50cnkpCi0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRl
bnRUeXBlOwogICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5U
eXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZF
RF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gVU5FWFBFQ1RF
RF9FU0NBUEVfRVJST1JUT0s7CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVy
biBpZGVudFR5cGU7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFjdGVyUmVx
dWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3RlcikKQEAgLTI0NzMsMTQgKzI0
OTYsMjEgQEAgc3RhcnQ6CiAgICAgICAgIG1faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbiA9
IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0
OwotICAgIGNhc2UgQ2hhcmFjdGVySGFzaDoKKyAgICBjYXNlIENoYXJhY3Rlckhhc2g6IHsKICAg
ICAgICAgLy8gSGFzaGJhbmcgaXMgb25seSBwZXJtaXR0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBz
b3VyY2UgdGV4dC4KLSAgICAgICAgaWYgKHBlZWsoMSkgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0
KCkpIHsKKyAgICAgICAgYXV0byBuZXh0ID0gcGVlaygxKTsKKyAgICAgICAgaWYgKG5leHQgPT0g
JyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAg
ICAgICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwogICAg
ICAgICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgY291bGQgYmUgYSB2YWxpZCBQcml2YXRl
TmFtZS4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpICYmIChp
c1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkgeworICAg
ICAgICAgICAgbGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5d29yZHMp
OworICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAgIGdvdG8g
aW52YWxpZENoYXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRp
ZmllclN0YXJ0OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQogICAgICAg
ICAgICAgZ290byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCAyY2VlYzM4YjY2ZWU2MTYwOTljYzIzOWIzMTc2NTIz
ZDcxYmUwMTAwLi4wZGNlNjcxMjZkODVkNjViYjZkMWNkNzQ1MDE5YjYyMWQ3YjdmNDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAt
MzI3LDEwICszMjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCisgICAgaW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIERvdFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAgICAg
ICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JO
b2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUp
CisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAg
IHsKICAgICB9CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9k
ZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6
IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAg
ICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBt
X2FyZ3MoYXJncykKICAgICB7CiAgICAgfQpAQCAtNDM3LDE0ICs0NDEsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVf
dCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVf
dCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBs
eShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JB
cHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxP
ckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlk
ZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAgICwg
bV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENhbGxP
ckFwcGx5KQogICAgIHsKICAgICB9CkBAIC03NzIsMjEgKzc3NiwxNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBBc3NpZ25Eb3RO
b2RlOjpBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0
aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0g
ICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAg
ICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUg
UmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRG90VHlwZSB0eXBlLCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkK
ICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikK
ICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggYmNkOWVmOThiZWI0YmU4ZWUx
ZWE2NGJlZTM0NGMxMjg1ZmIwOWQyMC4uNjRhNjZmNzY1YzhmNGQyODQ5NmRhOWNlNmM0NGFiYjA4
YWE4ODFiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTMzNSw3
ICszMzUsNyBAQCBib29sIFByb3BlcnR5TGlzdE5vZGU6Omhhc1N0YXRpY2FsbHlOYW1lZFByb3Bl
cnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BOYW1lKQogYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpz
aG91bGRDcmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyhQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQog
ewogICAgIHdoaWxlIChsaXN0KSB7Ci0gICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0
ZWRDbGFzc0ZpZWxkKCkpCisgICAgICAgIGlmIChsaXN0LT5tX25vZGUtPmlzQ29tcHV0ZWRDbGFz
c0ZpZWxkKCkgfHwgbGlzdC0+bV9ub2RlLT5pc1ByaXZhdGUoKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBsaXN0ID0gbGlzdC0+bV9uZXh0OwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCBjYTRlMGUwMjhlZDUwMThmNjI3YmU1ZjYzYmRkZmJi
MTA1YmE3NzExLi5iODkwZmUzMTAxOWZiZDRkOTJiODE3MTIwMjQ2MDk1NmEyZjI3YjJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3Im
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0NvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNQcml2YXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBpc0xvY2F0
aW9uKCk7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25SZXNvbHZlTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03MTksNyArNzIwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3Rh
bmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBw
dWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5
cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21w
dXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiB9OworICAgICAgICBlbnVtIFR5
cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21w
dXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZSA9IDY0IH07CiAg
ICAgICAgIGVudW0gUHV0VHlwZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVjdCB9Owog
CiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUq
LCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03Mzgs
NiArNzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkg
Y29uc3QgeyByZXR1cm4gaXNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7
IH0KICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlz
SW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAg
ICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVy
cmlkZGVuQnlEdXBsaWNhdGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgJiBQcml2YXRlOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENs
YXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5h
bWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lz
T3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzQ4LDcgKzc1MCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fz
c2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNjsKKyAgICAgICAgdW5zaWduZWQgbV90
eXBlIDogNzsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAg
ICAgIHVuc2lnbmVkIG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAy
ID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFz
c0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKQEAgLTc3Niw2
ICs3NzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgUmVnaXN0ZXJJRCosIFZlY3Rv
cjxKU1RleHRQb3NpdGlvbj4qKTsKIAorICAgICAgICB2b2lkIGVtaXREZWNsYXJlUHJpdmF0ZUZp
ZWxkTmFtZXMoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBzY29wZSk7CisKICAgICBw
cml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0ID0gbnVsbHB0cikgZmluYWwKICAgICAgICAg
ewpAQCAtODIwLDkgKzgyNCwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1
YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07CiAKLSAgICBjbGFzcyBEb3RBY2Nlc3Nvck5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CisgICAgZW51bSBjbGFzcyBEb3RUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUgfTsK
KyAgICBjbGFzcyBCYXNlRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQmFzZURvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCBEb3RUeXBlKTsKKworICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzZTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQorICAgICAgICBEb3RUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lOyB9CisKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1Zh
bHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSk7CisKKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CisgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CisgICAgICAgIERvdFR5cGUgbV90eXBlOworICAgIH07CisKKyAgICBjbGFz
cyBEb3RBY2Nlc3Nvck5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgcHVibGljOgorICAgICAgICBEb3RBY2Nlc3Nvck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCBEb3RUeXBlKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtODMxLDEwICs4NTYsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgICAgICBib29sIGlz
TG9jYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNQ
cml2YXRlTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlw
ZTo6UHJpdmF0ZU5hbWU7IH0KICAgICAgICAgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNl
OwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CiAKICAgICBjbGFz
cyBTcHJlYWRFeHByZXNzaW9uTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAgLTk0Nyw5ICs5NzAsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzOwogICAgIH07
CiAKLSAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEZ1bmN0aW9u
Q2FsbERvdE5vZGUgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBBcmd1bWVu
dHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CkBAIC05NTcsOCArOTgwLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBib29sIGlzRnVuY3Rpb25D
YWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAg
ICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsKICAgICB9OwogCkBAIC05OTUsNyArMTAxNiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgZmlu
YWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2Fs
bE9yQXBwbHkpOworICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5
cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKQEAgLTEwMDQsNyArMTAyNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6
IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9y
QXBwbHkpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBl
LCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBz
aXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gbnVsbHB0cikgZmluYWw7CkBAIC0xNDY3LDI4ICsxNDg4LDI0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CiAgICAgfTsK
IAotICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgQXNzaWduRG90Tm9k
ZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERv
dFR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNl
OwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9yaWdodDsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHM7CiAgICAg
fTsKIAotICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIFJl
YWRNb2RpZnlEb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7Cisg
ICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgT3BlcmF0b3IsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxs
cHRyKSBmaW5hbDsKIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwotICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdo
dDsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVyYXRvcjsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFz
QXNzaWdubWVudHMgOiAxOwpAQCAtMjI4NSw3ICsyMzAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBEZWZpbmVGaWVsZE5vZGUgZmluYWwgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBDb21wdXRlZE5h
bWUgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgTmFtZSwgUHJpdmF0ZU5hbWUsIENvbXB1
dGVkTmFtZSB9OwogICAgICAgICBEZWZpbmVGaWVsZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciosIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSk7CiAKICAgICBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGQ0MmFhYzIy
ODk1MzgxMGJlOGJjM2Y5YzYxNzNjYzZlMjFiZDg4ZDAuLjY0ZTJhYWY1ZTUzYmZlMWEzNThkZDZk
MTNhMDMzN2ExOWIzOWM3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTgyNiw2ICs4MjYsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAgICAgICBU
cmVlRXhwcmVzc2lvbiBub2RlID0gMDsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CiAgICAgICAg
IGJvb2wgaGFzSW5pdGlhbGl6ZXIgPSBmYWxzZTsKKworICAgICAgICBmYWlsSWZUcnVlKG1hdGNo
KFBSSVZBVEVOQU1FKSwgIkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgdG8gZGVjbGFyZSBhIHZh
cmlhYmxlIik7CiAgICAgICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkpIHsKICAgICAgICAg
ICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoZGVjbGFyYXRpb25UeXBlID09IERlY2xhcmF0
aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24gfHwgZGVjbGFyYXRpb25UeXBlID09IERlY2xhcmF0aW9u
VHlwZTo6Q29uc3REZWNsYXJhdGlvbiksIAogICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlICds
ZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAg
LTEyODgsNiArMTI5MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3Ry
dWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICBp
ZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQog
ICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVl
VG9LZXl3b3JkKGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKKyAg
ICAgICAgICAgIGlmIChraW5kICE9IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFy
YW1ldGVycykKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKFBSSVZBVEVOQU1FKSwg
IkNhbm5vdCB1c2UgYSBwcml2YXRlIG5hbWUgYXMgYSAiLCBkZXN0cnVjdHVyaW5nS2luZFRvVmFy
aWFibGVLaW5kTmFtZShraW5kKSk7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVj
dGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3QiKTsKICAg
ICAgICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1
Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwga2luZCA9PSBEZXN0cnVjdHVyaW5nS2lu
ZDo6RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmll
ciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMjk1Myw2ICsyOTU3LDE5IEBA
IHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgZmFpbElmRmFsc2UoY29tcHV0ZWRQcm9wZXJ0eU5h
bWUsICJDYW5ub3QgcGFyc2UgY29tcHV0ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAg
aGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVuZCIsICJjb21wdXRl
ZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQUklW
QVRFTkFNRTogeworICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0Zp
ZWxkcygpKTsKKyAgICAgICAgICAgIEpTVG9rZW4gdG9rZW4gPSBtX3Rva2VuOworICAgICAgICAg
ICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgIGZhaWxJZlRydWUo
dGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiU3RhdGljIGNsYXNzIGVsZW1lbnQgY2Fu
bm90IGJlIHByaXZhdGUiKTsKKyAgICAgICAgICAgIGZhaWxJZlRydWUoaXNHZXR0ZXIgfHwgaXNT
ZXR0ZXIsICJDYW5ub3QgcGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7Cisg
ICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAg
ICAgZmFpbElmVHJ1ZShtYXRjaEFuZFVwZGF0ZShPUEVOUEFSRU4sIHRva2VuKSwgIkNhbm5vdCBw
YXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU5hbWUoKmlkZW50KSAmIERl
Y2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVj
bGFyZSBwcml2YXRlIGZpZWxkIHR3aWNlIik7CisgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nh
c3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBpZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKQogICAgICAgICAgICAgICAg
IGdvdG8gbmFtZWRLZXl3b3JkOwpAQCAtMjk2OCw4ICsyOTg1LDEwIEBAIHBhcnNlTWV0aG9kOgog
ICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRo
b2QiKTsKICAgICAgICAgfSBlbHNlIGlmIChPcHRpb25zOjp1c2VQdWJsaWNDbGFzc0ZpZWxkcygp
ICYmICFtYXRjaChPUEVOUEFSRU4pICYmIHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNl
ICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUpIHsKICAgICAgICAg
ICAgIEFTU0VSVCghaXNHZXR0ZXIgJiYgIWlzU2V0dGVyKTsKLSAgICAgICAgICAgIGlmIChpZGVu
dCkKKyAgICAgICAgICAgIGlmIChpZGVudCkgewogICAgICAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNs
YXJlIGNsYXNzIGZpZWxkIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKKyAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3JQcml2
YXRlRmllbGQsICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIGNsYXNzIGZpZWxkIG5hbWVkICcjY29u
c3RydWN0b3InIik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb21wdXRlZFBy
b3BlcnR5TmFtZSkgewogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRl
bnRpZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKG1fdm0sIG51bUNvbXB1dGVkRmll
bGRzKyspOwpAQCAtMzAzMyw2ICszMDUyLDEwIEBAIHBhcnNlTWV0aG9kOgogICAgIGluZm8uZW5k
T2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAgICAgY29uc3VtZU9yRmFp
bChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhIGNsYXNzIGJvZHki
KTsKIAorICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgeworICAgICAg
ICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQg
YW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KKyAgICAgICAgc2VtYW50aWNG
YWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fu
bm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKKyAgICB9CiAgICAgYXV0
byBjbGFzc0V4cHJlc3Npb24gPSBjb250ZXh0LmNyZWF0ZUNsYXNzRXhwcihsb2NhdGlvbiwgaW5m
bywgY2xhc3NTY29wZS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSwgY29uc3RydWN0b3Is
IHBhcmVudENsYXNzLCBjbGFzc0VsZW1lbnRzKTsKICAgICBwb3BTY29wZShjbGFzc1Njb3BlLCBU
cmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICByZXR1cm4gY2xhc3NFeHBy
ZXNzaW9uOwpAQCAtMzA1Niw2ICszMDc5LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAg
ICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogICAgICAgICBE
ZWZpbmVGaWVsZE5vZGU6OlR5cGUgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6TmFtZTsK
ICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgeworICAgICAgICBjYXNlIFBSSVZBVEVO
QU1FOgorICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5h
bWU7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKICAgICAgICAgY2FzZSBTVFJJTkc6CiAgICAg
ICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG5hbWVkS2V5d29yZDoKQEAgLTMwOTUsNiArMzEyMSw5
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAgICAgICAgIGlmIChjb25zdW1lKEVRVUFMKSkK
ICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250
ZXh0KTsKIAorICAgICAgICBpZiAodHlwZSA9PSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZh
dGVOYW1lKQorICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBm
YWxzZSk7CisKICAgICAgICAgVHJlZVN0YXRlbWVudCBkZWZpbmVGaWVsZCA9IGNvbnRleHQuY3Jl
YXRlRGVmaW5lRmllbGQoZmllbGRMb2NhdGlvbiwgaWRlbnQsIGluaXRpYWxpemVyLCB0eXBlKTsK
ICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIGRlZmluZUZp
ZWxkKTsKICAgICB9CkBAIC00Nzk4LDYgKzQ4MjcsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkIHJl
Y29yZENhbGxPckFwcGx5RGVwdGgoUGFyc2VyVHlwZSosIFZNJiwgT3B0aW9uYWw8dHlwZW5hbWUg
UGEKIHsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK2Jvb2wgUGFyc2VyPExl
eGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIqIGlkZW50KQoreworICAg
IGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgaWYgKGF1dG8gbWF5YmVDdXJyZW50ID0gZmluZFByaXZhdGVOYW1lU2NvcGUoKSkg
eworICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gbWF5YmVDdXJyZW50LnZhbHVlKCk7CisgICAg
ICAgIGlmICghY3VycmVudC0+aGFzUHJpdmF0ZU5hbWUoKmlkZW50KSkKKyAgICAgICAgICAgIGN1
cnJlbnQtPnVzZVByaXZhdGVOYW1lKCppZGVudCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsK
QEAgLTQ5OTksOCArNTA0NCwyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAg
ICAgICAgIG1fcGFyc2VyU3RhdGUubm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAg
ICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmRQb3Np
dGlvbigpOwogICAgICAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVyKFRyZWVCdWlsZGVy
OjpEb250QnVpbGRLZXl3b3JkcyB8IExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CisgICAgICAgICAgICAgICAgYXV0byB0eXBlID0gRG90VHlwZTo6TmFtZTsKKyAgICAg
ICAgICAgICAgICBpZiAobWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChpZGVudCk7CisgICAgICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoYmFzZUlzU3Vw
ZXIsICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbmFtZXMgZnJvbSBzdXBlciIpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFNjb3BlKCktPmV2YWxDb250ZXh0VHlwZSgp
ID09IEV2YWxDb250ZXh0VHlwZTo6SW5zdGFuY2VGaWVsZEV2YWxDb250ZXh0KSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmhhc1By
aXZhdGVOYW1lKCppZGVudCksICJDYW5ub3QgcmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBm
aWVsZCAnIiwgaWRlbnQtPmltcGwoKSwgIiciKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZGYWxzZSh1c2VQcml2YXRlTmFtZShpZGVudCksICJDYW5ub3QgcmVmZXJlbmNlIHBy
aXZhdGUgbmFtZXMgb3V0c2lkZSBvZiBjbGFzcyIpOworICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZSA9IGlkZW50OworICAgICAgICAgICAgICAgICAgICBj
dXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgdHlwZSA9IERvdFR5cGU6OlByaXZhdGVOYW1lOworICAgICAgICAgICAgICAgICAgICBt
X3Rva2VuLm1fdHlwZSA9IElERU5UOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSBhZnRlciAiLCBv
cHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICInLiciKTsKLSAgICAgICAgICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3RhcnRMb2NhdGlvbiwgYmFzZSwgbV90b2tlbi5t
X2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmRQb3Np
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3Mo
c3RhcnRMb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVz
c2lvbkVuZCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkoYmFzZUlzU3VwZXIgJiYgY3VycmVudFNjb3BlKCktPmlzQXJyb3dGdW5jdGlvbigpKSkKICAg
ICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+c2V0SW5uZXJBcnJvd0Z1
bmN0aW9uVXNlc1N1cGVyUHJvcGVydHkoKTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CkBAIC01
MTk1LDYgKzUyNTMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZT
dHJpY3QoY29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVucXVhbGlmaWVk
IHByb3BlcnR5ICciLCBtX3BhcnNlclN0YXRlLmxhc3RJZGVudGlmaWVyLT5pbXBsKCksICInIGlu
IHN0cmljdCBtb2RlIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY29udGV4dC5p
c1ByaXZhdGVMb2NhdGlvbihleHByKSwgIkNhbm5vdCBkZWxldGUgcHJpdmF0ZSBmaWVsZCAiLCBt
X3BhcnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZS0+aW1wbCgpKTsKICAgICAgICAgICAgIGV4cHIg
PSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9r
ZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTUyNzEsNyArNTMzMCwxMSBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhw
ZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JUT0s6
CiAgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2VuKCks
ICInIik7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAorCisgICAgY2FzZSBQUklWQVRF
TkFNRToKKyAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHByaXZhdGUgbmFtZSAiLCBnZXRU
b2tlbigpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBBV0FJVDoKICAgICBjYXNlIElE
RU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0VG9r
ZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDU0YjM5
NzMwOWVhMmZjY2YzNzMxZmJlOTk4ZGFiNTk5YzliYmUwMTYuLjFmNWQ5MzJjM2Y1NzVlYjIwNTU3
NDA0ZTU2NDE4N2ZiZjc1Yjk2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91bmRh
cnkoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29sIGlz
QXN5bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAgICAg
Ym9vbCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1
bmN0aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNDbGFzc1Njb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBjb25z
dCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA5LDYgKzMxMCwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQogCisg
ICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IEN1cnJlbnRseSwgaXNQcml2YXRlTmFtZVNjb3BlIGlzIGFuIGFsaWFzIGZvciBpc0NsYXNzU2Nv
cGUgLS0tIFRoaXMgaXMgcG90ZW50aWFsbHkgbWlzbGVhZGluZywKKyAgICAgICAgLy8gcGFydGlj
dWxhcmx5IHdoZW4gcGFyc2luZyBkaXJlY3QgZXZhbCBjb2RlIHdoaWNoIG9jY3VycyB3aXRoaW4g
YSBjbGFzcy4KKyAgICAgICAgc2V0SXNDbGFzc1Njb3BlKCk7CisgICAgfQorCiAgICAgdm9pZCBz
ZXRJc0NsYXNzU2NvcGUoKQogICAgIHsKICAgICAgICAgbV9pc0NsYXNzU2NvcGUgPSB0cnVlOwpA
QCAtNDc1LDcgKzQ4Myw0NCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9sZXhp
Y2FsVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmdldCgpKTsKICAgICB9Ci0gICAgCisKKyAgICBi
b29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQcml2YXRlTmFtZShpZGVudCk7CisgICAg
fQorCisgICAgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKFNjb3BlJiBvdGhlcikK
KyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy5jb3B5VW5kZWNsYXJlZFByaXZhdGVO
YW1lc1RvKG90aGVyLm1fbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgfQorCisgICAgYm9vbCBoYXNV
c2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
bV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byBlbnRyeSA6IG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXMoKSkgewor
ICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFsdWUu
aXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdm9p
ZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBtX2xleGljYWxW
YXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgIH0KKworICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAg
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxp
ZDsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVBy
aXZhdGVOYW1lKGlkZW50KTsKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBoYXNEZWNsYXJlZFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBoYXNEZWNsYXJlZFBhcmFtZXRlcihpZGVudC5pbXBsKCkp
OwpAQCAtOTEwLDcgKzk1NSw3IEBAIHB1YmxpYzoKICAgICB+UGFyc2VyKCk7CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQ
YXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVy
c0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+
KiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJz
ZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250
ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRp
b24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqID0gbnVsbHB0ciwg
Y29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKIAogICAgIEpTVGV4dFBv
c2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVy
LT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5M
b2NhdGlvbigpOyB9CkBAIC0xMTgzLDYgKzEyMjgsNDQgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwogICAgIH0KIAorICAgIE9wdGlvbmFsPFNj
b3BlUmVmPiBmaW5kUHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQobV9z
Y29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6
ZSgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVO
YW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAobV9zY29wZVN0YWNr
W2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZt
X3Njb3BlU3RhY2ssIGkpOworCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQor
CisgICAgU2NvcGVSZWYgcHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2su
c2l6ZSgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZh
dGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBBU1NFUlQobV9zY29w
ZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKTsKKyAgICAgICAgcmV0dXJuIFNjb3BlUmVm
KCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wgY29weVVuZGVjbGFyZWRQcml2
YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9
IHByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IGN1cnJlbnQuaW5kZXgo
KSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFt
ZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKCFpKQorICAgICAgICAg
ICAgcmV0dXJuICFjdXJyZW50LT5oYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpOwor
CisgICAgICAgIGN1cnJlbnQtPmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8obV9zY29wZVN0
YWNrW2ldKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgU2NvcGVSZWYgY2xv
c2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwpAQCAtMTQ2Miw2ICsxNTQ1
LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5tX3R5cGUgPT0g
ZXhwZWN0ZWQ7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQW5kVXBkYXRl
KEpTVG9rZW5UeXBlIGV4cGVjdGVkLCBjb25zdCBKU1Rva2VuJiB0b2tlbikKKyAgICB7CisgICAg
ICAgIGlmIChtYXRjaChleHBlY3RlZCkpIHsKKyAgICAgICAgICAgIG1fdG9rZW4gPSB0b2tlbjsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hDb250ZXh0dWFs
S2V5d29yZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIHsKQEAgLTE3MTUsNiAr
MTgwOCw4IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFM
V0FZU19JTkxJTkUgYm9vbCBpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoVHJlZUJ1aWxkZXImLCBU
cmVlRXhwcmVzc2lvbik7CiAKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgdXNlUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciopOworCiAgICAgQUxXQVlTX0lOTElORSBpbnQgaXNCaW5hcnlPcGVy
YXRvcihKU1Rva2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigpOwog
ICAgIApAQCAtMTgwOSw2ICsxOTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25QYXJz
ZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9uUGFyc2VQaGFzZTo6Qm9keSB9Owog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRpZmllciB7IG51bGxwdHIgfTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSB7IG51bGxwdHIgfTsKKyAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdFByaXZhdGVOYW1lIHsgbnVsbHB0ciB9OwogICAg
ICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgaXNQYXJzaW5nQ2xh
c3NGaWVsZEluaXRpYWxpemVyIHsgZmFsc2UgfTsKICAgICB9OwpAQCAtMTk1OSw3ICsyMDU1LDcg
QEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxl
ZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
KFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZlY3RvcjxKU1Rl
eHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7CiAgICAgaW50IGVyckxpbmU7
CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTE5NzQsNiArMjA3MCwxMSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJv
ciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IE9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9zb3Vy
Y2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKKyAgICBpZiAoaXNFdmFsTm9kZTxQ
YXJzZWROb2RlPigpICYmIHZhcmlhYmxlc1VuZGVyVERaICYmIHZhcmlhYmxlc1VuZGVyVERaLT5w
cml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElzUHJpdmF0
ZU5hbWVTY29wZSgpOworICAgICAgICB2YXJpYWJsZXNVbmRlclREWi0+Y29weVByaXZhdGVOYW1l
c1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIH0KKwogICAgIGF1
dG8gcGFyc2VSZXN1bHQgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFyc2lu
Z0NvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGluc3Rh
bmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5l
TnVtYmVyKCk7CkBAIC0yMDU4LDYgKzIxNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoCiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9IERl
cml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRU
eXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25lLAogICAgIERlYnVnZ2VyUGFyc2VEYXRhKiBkZWJ1
Z2dlclBhcnNlRGF0YSA9IG51bGxwdHIsCisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCog
dmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLAogICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQb3Np
dGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAogICAgIGJvb2wgaXNJbnNp
ZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2UpCiB7CkBAIC0yMDcwLDcgKzIxNzIsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJp
dCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBi
dWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRp
bmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29u
dGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1
Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0
ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZh
bE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRl
eHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAg
ICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VN
b2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBh
cnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVyVERaLCBp
bnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5l
d2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5w
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0yMDgzLDcgKzIxODUsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlv
biA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXMncyBzcGVjaWFs
IGNvbnN0cnVjdG9ycyBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwogICAgICAg
ICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29u
c3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2
YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURhdGEs
IGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJz
ZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5v
ZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBX
VEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQgPSBw
YXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6
UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAg
ICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCmluZGV4IGRlMGViZWFmODVmZDcxMjM3MTdmODc3MTEyN2Y3MTkyM2ZmZTY3NDgu
LjdiM2MxZWMzYjdmNmE2YjExYmZjNDVmNGJjOTFkMDQ4MTJmNGNkMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTE0LDYgKzExNCw3IEBAIGVu
dW0gSlNUb2tlblR5cGUgewogICAgIERPVUJMRSwKICAgICBCSUdJTlQsCiAgICAgSURFTlQsCisg
ICAgUFJJVkFURU5BTUUsCiAgICAgU1RSSU5HLAogICAgIFRFTVBMQVRFLAogICAgIFJFR0VYUCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggYWFi
MGI3NGRhYTg5MDY0NDY4MGJjYmQyZjA4OGVhYmRjYTkzZGQwNi4uNDNmNWE5MmVjNzZiYjY1Yjg3
NmQ4NTg3ZDE5NDQxMmEyYTA3MzkwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgICAgICBSZXNv
bHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3RyaW5n
RXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhwciwg
UmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCiAgICAgICAgIEZ1bmN0aW9uRXhwciwgQ2xh
c3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIsIEJyYWNrZXRFeHByLCBEb3RFeHByLCBDYWxs
RXhwciwKLSAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwgQmlu
YXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwKKyAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4
cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwgUHJpdmF0ZURvdEV4cHIs
CiAgICAgICAgIENvbmRpdGlvbmFsRXhwciwgQXNzaWdubWVudEV4cHIsIFR5cGVvZkV4cHIsCiAg
ICAgICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJhbEV4cHIsIEJpbmRpbmdEZXN0cnVjdHVyaW5n
LCBSZXN0UGFyYW1ldGVyLAogICAgICAgICBBcnJheURlc3RydWN0dXJpbmcsIE9iamVjdERlc3Ry
dWN0dXJpbmcsIFNvdXJjZUVsZW1lbnRzUmVzdWx0LApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1Ymxp
YzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
TnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNv
bnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIHR5
cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWUgPyBQcml2YXRlRG90RXhwciA6IERvdEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCkg
eyByZXR1cm4gWWFycjo6aGFzRXJyb3IoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi5zdHJpbmco
KSwgZmxhZ3Muc3RyaW5nKCkpKSA/IDAgOiBSZWdFeHBFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwg
aW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KQEAgLTQwMyw3ICs0MDMsMTIgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc0xvY2F0aW9uKEV4cHJlc3Npb25UeXBlIHR5cGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlw
ZSA9PSBCcmFja2V0RXhwcjsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwg
dHlwZSA9PSBEb3RFeHByIHx8IHR5cGUgPT0gUHJpdmF0ZURvdEV4cHIgfHwgdHlwZSA9PSBCcmFj
a2V0RXhwcjsKKyAgICB9CisKKyAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKEV4cHJlc3Npb25U
eXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9PSBQcml2YXRlRG90RXhwcjsK
ICAgICB9CiAKICAgICBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKEV4cHJlc3Npb25UeXBlIHR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmly
b25tZW50LmNwcAppbmRleCA4ZTY5MTUxYzdiNmNiMzExMWIwZmU3N2NlODk3MzA3NDA2MmY1ZjVh
Li4xZjU3MDg4YTM0YzY2M2NhNzAyZjc3ZDQ3NzQwNjk2ZTI2NzY4OGVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAg
LTI5LDYgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitWYXJpYWJsZUVudmlyb25tZW50
JiBWYXJpYWJsZUVudmlyb25tZW50OjpvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCYgb3RoZXIpCit7CisgICAgbV9tYXAgPSBvdGhlci5tX21hcDsKKyAgICBtX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKKyAgICBtX3JhcmVEYXRh
LnJlc2V0KCk7CisgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEg
PSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5t
X3JhcmVEYXRhKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIHZvaWQgVmFyaWFibGVFbnZpcm9u
bWVudDo6bWFya1ZhcmlhYmxlQXNDYXB0dXJlZElmRGVmaW5lZChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogewogICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fbWFw
LmZpbmQoaWRlbnRpZmllcik7CkBAIC04MCw2ICs5MCw3IEBAIHZvaWQgVmFyaWFibGVFbnZpcm9u
bWVudDo6c3dhcChWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKIHsKICAgICBtX21hcC5zd2Fw
KG90aGVyLm1fbWFwKTsKICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2
ZXJ5dGhpbmdDYXB0dXJlZDsKKyAgICBtX3JhcmVEYXRhLnN3YXAob3RoZXIubV9yYXJlRGF0YSk7
CiB9CiAKIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNJbXBvcnRlZChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQpAQCAtMTAwLDcgKzEx
MSw3IEBAIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFyaWFibGVFbnZpcm9u
bWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50CiAgICAgOiBtX2lzRXZlcnl0aGluZ0NhcHR1
cmVkKGVudi5pc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpKQogewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8
VW5pcXVlZFN0cmluZ0ltcGwqLCBWYXJpYWJsZUVudmlyb25tZW50RW50cnk+LCAzMj4gc29ydGVk
RW50cmllczsKLSAgICBzb3J0ZWRFbnRyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW52LnNp
emUoKSk7CisgICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5tYXBT
aXplKCkpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGVudikKICAgICAgICAgc29ydGVkRW50cmll
cy5hcHBlbmQoeyBwYWlyLmtleS5nZXQoKSwgcGFpci52YWx1ZSB9KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCA1MzJk
MTQ2ZWZkMWZjYWU1MzI2OWU3NWRmNmY1ZmRiZWExOTkyYzUyLi4xNzdmODgxNWJjM2EzN2U0ZWFk
NmJkNjAxYWNjZjRmYWMwMTNmMjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVk
ZSAiSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtNDIsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0Z1bmN0aW9uOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGlzUGFyYW1ldGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTbG9wcHlNb2RlSG9pc3Rp
bmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lzdGlu
Z0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTmFtZTsgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC01
Myw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNGdW5jdGlv
bigpIHsgbV9iaXRzIHw9IElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
SXNQYXJhbWV0ZXIoKSB7IG1fYml0cyB8PSBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIHsgbV9iaXRzIHw9IElz
U2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dElzUHJpdmF0ZU5hbWUoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVOYW1lOyB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC03
NCw3ICs3OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIElzSW1wb3J0ZWROYW1lc3BhY2UgPSAxIDw8
IDYsCiAgICAgICAgIElzRnVuY3Rpb24gPSAxIDw8IDcsCiAgICAgICAgIElzUGFyYW1ldGVyID0g
MSA8PCA4LAotICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwgOQor
ICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwgOSwKKyAgICAgICAg
SXNQcml2YXRlTmFtZSA9IDEgPDwgMTAsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAw
IH07CiB9OwpAQCAtODMsMTUgKzg4LDU1IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKIH07CiAKK3N0
cnVjdCBQcml2YXRlTmFtZUVudHJ5IHsKK3B1YmxpYzoKKyAgICBQcml2YXRlTmFtZUVudHJ5KHVp
bnQxNl90IHRyYWl0cyA9IDApIHsgbV9iaXRzID0gdHJhaXRzOyB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CisgICAg
QUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJ
c0RlY2xhcmVkOyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2Jp
dHMgfD0gSXNVc2VkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7
IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CisKKyAgICB1aW50MTZfdCBiaXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRzOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJpdmF0ZU5hbWVF
bnRyeSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9iaXRzID09IG90aGVy
Lm1fYml0czsKKyAgICB9CisKKyAgICBlbnVtIFRyYWl0cyA6IHVpbnQxNl90IHsKKyAgICAgICAg
SXNVc2VkID0gMSA8PCAwLAorICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAorICAgIH07CisK
K3ByaXZhdGU6CisgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OworfTsKKworc3RydWN0IFByaXZh
dGVOYW1lRW50cnlIYXNoVHJhaXRzIDogSGFzaFRyYWl0czxQcml2YXRlTmFtZUVudHJ5PiB7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworfTsKKwogY2xh
c3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxQ
YWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnks
IElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFByaXZhdGVOYW1lRW50cnks
IElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gUHJpdmF0ZU5hbWVzOwogcHVibGljOgotICAg
IFZhcmlhYmxlRW52aXJvbm1lbnQoKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVu
dChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVu
dmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmKSA9IGRlZmF1bHQ7Ci0gICAgVmFy
aWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmKSA9
IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KFZhcmlhYmxlRW52
aXJvbm1lbnQmJikgPSBkZWZhdWx0OworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoKSB7IH0KKyAg
ICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikKKyAgICAg
ICAgOiBtX21hcChXVEZNb3ZlKG90aGVyLm1fbWFwKSkKKyAgICAgICAgLCBtX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkKG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCisgICAgICAgICwgbV9yYXJl
RGF0YShXVEZNb3ZlKG90aGVyLm1fcmFyZURhdGEpKQorICAgIHsKKyAgICB9CisgICAgVmFyaWFi
bGVFbnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKKyAgICAgICAg
OiBtX21hcChvdGhlci5tX21hcCkKKyAgICAgICAgLCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkKG90
aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQpCisgICAgICAgICwgbV9yYXJlRGF0YShvdGhlci5t
X3JhcmVEYXRhID8gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRh
Pigqb3RoZXIubV9yYXJlRGF0YSkgOiBudWxscHRyKQorICAgIHsKKyAgICB9CisgICAgVmFyaWFi
bGVFbnZpcm9ubWVudCYgb3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVy
KTsKIAogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1f
bWFwLmJlZ2luKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gbV9tYXAuZW5kKCk7IH0KQEAgLTk5LDcgKzE0NCw4IEBAIHB1YmxpYzoKICAgICBBTFdB
WVNfSU5MSU5FIE1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
ZW5kKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5hZGQoaWRl
bnRpZmllciwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkpOyB9CiAgICAgQUxXQVlTX0lOTElO
RSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1
cm4gYWRkKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
dW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKSArIHByaXZhdGVOYW1l
c1NpemUoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgbWFwU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbWFwLnNpemUoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBjb250YWlucyhj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVy
biBtX21hcC5jb250YWlucyhpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBy
ZW1vdmUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1
cm4gbV9tYXAucmVtb3ZlKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0
ZXJhdG9yIGZpbmQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikg
eyByZXR1cm4gbV9tYXAuZmluZChpZGVudGlmaWVyKTsgfQpAQCAtMTE2LDExICsxNjIsMTA0IEBA
IHB1YmxpYzoKICAgICBib29sIGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuICFtX21hcC5zaXplKCk7IH0KIAorICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0gV1RG
OjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lczo6aXRlcmF0b3I+OworCisgICAgQUxXQVlTX0lO
TElORSBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgp
KTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQor
CisgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBhdXRvJiBtZXRhID0g
Z2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKKyAgICAgICAgbWV0YS5zZXRJ
c0RlY2xhcmVkKCk7CisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlTmFtZSgpOworICAgICAgICBlbnRyeS5z
ZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAgcmV0
dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisgICAgfQorICAgIHZvaWQgdXNlUHJp
dmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIu
Z2V0KCkpOworICAgICAgICBtZXRhLnNldElzVXNlZCgpOworICAgICAgICBpZiAobWV0YS5pc0Rl
Y2xhcmVkKCkpCisgICAgICAgICAgICBmaW5kKGlkZW50aWZpZXIpLT52YWx1ZS5zZXRJc0NhcHR1
cmVkKCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZXNSYW5nZSBwcml2
YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRvclJh
bmdlIG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2ZW50IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVja1Zh
bGlkaXR5KCkuCisgICAgICAgIEFTU0VSVChwcml2YXRlTmFtZXNTaXplKCkgPiAwKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJl
Z2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHVuc2lnbmVkIHByaXZhdGVOYW1lc1NpemUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJl
dHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlu
cyhpZGVudGlmaWVyLmltcGwoKSk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIGNv
cHlQcml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKCFvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICAgICAgb3RoZXIubV9yYXJlRGF0YSA9IFdU
Rjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAg
aWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBlbnRy
eSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZW50cnkudmFsdWUu
aXNVc2VkKCkgJiYgZW50cnkudmFsdWUuaXNEZWNsYXJlZCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgb3RoZXIubV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGVudHJ5LmtleSwgZW50cnku
dmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8oVmFyaWFibGVFbnZpcm9ubWVu
dCYgb3V0ZXIpIGNvbnN0IHsKKyAgICAgICAgLy8gVXNlZCBieSB0aGUgUGFyc2VyIHRvIHRyYW5z
ZmVyIHJlY29yZGVkIHVzZXMgb2YgUHJpdmF0ZU5hbWVzIGZyb20gYW4KKyAgICAgICAgLy8gaW5u
ZXIgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCBpbnRvIGFuIG91dGVyIG9uZSwgaW4gY2FzZSBhIFBO
RSBpcyB1c2VkCisgICAgICAgIC8vIGVhcmxpZXIgaW4gdGhlIHNvdXJjZSBjb2RlIHRoYW4gaXQg
aXMgZGVmaW5lZC4KKyAgICAgICAgaWYgKHByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBlbnRyeSA6IHByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkp
CisgICAgICAgICAgICAgICAgICAgIG91dGVyLmdldE9yQWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5
LmdldCgpKS5zZXRJc1VzZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHN0cnVjdCBSYXJlRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKKworICAgICAgICBSYXJlRGF0YSgpIHsgfQorICAgICAgICBSYXJlRGF0YShSYXJlRGF0
YSYmIG90aGVyKQorICAgICAgICAgICAgOiBtX3ByaXZhdGVOYW1lcyhXVEZNb3ZlKG90aGVyLm1f
cHJpdmF0ZU5hbWVzKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIFJhcmVEYXRhKGNv
bnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBSYXJlRGF0YSYgb3BlcmF0b3I9KGNv
bnN0IFJhcmVEYXRhJikgPSBkZWZhdWx0OworICAgICAgICBQcml2YXRlTmFtZXMgbV9wcml2YXRl
TmFtZXM7CisgICAgfTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkVmFyaWFi
bGVFbnZpcm9ubWVudDsKIAogICAgIE1hcCBtX21hcDsKICAgICBib29sIG1faXNFdmVyeXRoaW5n
Q2FwdHVyZWQgeyBmYWxzZSB9OworCisgICAgUHJpdmF0ZU5hbWVFbnRyeSYgZ2V0T3JBZGRQcml2
YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKKyAgICB7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFi
bGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLmFkZChpbXBsLCBQcml2YXRlTmFtZUVudHJ5KDApKS5pdGVyYXRvci0+
dmFsdWU7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFZhcmlhYmxlRW52aXJvbm1lbnQ6
OlJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CmluZGV4IDYwMWQwMTlkZjkzZjhmMmY4Y2M2YzFmNTkxYTk0MTU0OGRjMDdmY2IuLjVlY2U2ZGEx
NmIwNjA3MzI5NWE0YTZiNjY4MWI5ZWZlNTg0ZDZmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg1Niw2ICs4NTYsMTIgQEAgcHVibGlj
OgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmNvZGUoZW5jb2RlciwgeyAqc291cmNlIH0p
OwogICAgIH0KKworICAgIFNvdXJjZVR5cGU8VD4qIGRlY29kZUFzUHRyKERlY29kZXImIGRlY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghdGhpcy0+aXNFbXB0eSgp
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPnRlbXBsYXRlIGJ1ZmZlcjxUPigpLT5kZWNvZGUoZGVj
b2Rlcik7CisgICAgfQogfTsKIAogY2xhc3MgQ2FjaGVkU2ltcGxlSnVtcFRhYmxlIDogcHVibGlj
IENhY2hlZE9iamVjdDxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gewpAQCAtMTAwMywyMyArMTAw
OSw0NSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgOiAxOwogfTsKIAorY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhIDog
cHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4geworcHVi
bGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5h
bWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisg
ICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFy
ZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVj
b2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGws
IFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1w
bD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJp
dmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudCA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudD4gewogcHVibGljOgogICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikK
ICAgICB7CiAgICAgICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBlbnYubV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZDsKICAgICAgICAgbV9tYXAuZW5jb2RlKGVuY29kZXIsIGVudi5tX21hcCk7Cisg
ICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGVudi5tX3JhcmVEYXRhLmdldCgpKTsK
ICAgICB9CiAKICAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWYXJpYWJsZUVudmly
b25tZW50JiBlbnYpIGNvbnN0CiAgICAgewogICAgICAgICBlbnYubV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZCA9IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmRlY29kZShkZWNv
ZGVyLCBlbnYubV9tYXApOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBlbnYubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPmRlY29kZShkZWNv
ZGVyLCAqZW52Lm1fcmFyZURhdGEpOworICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJl
ZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFj
a2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IG1fbWFwOworICAgIENhY2hl
ZFB0cjxDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9Owog
CiBjbGFzcyBDYWNoZWRDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKQEAgLTExNDcsNiArMTE3NSwyMiBA
QCBwcml2YXRlOgogICAgIGludHB0cl90IG1fYml0czsKIH07CiAKK2NsYXNzIENhY2hlZFN5bWJv
bFRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlOjpTeW1ib2xU
YWJsZVJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKQorICAg
IHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcHJp
dmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBT
eW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0CisgICAgewor
ICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9wcml2YXRl
TmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0
cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX3ByaXZhdGVO
YW1lczsKK307CisKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxlIDogcHVibGljIENhY2hlZE9iamVj
dDxTeW1ib2xUYWJsZT4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkKQEAgLTExNTcsNiArMTIwMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgPSBzeW1ib2xUYWJsZS5tX25l
c3RlZExleGljYWxTY29wZTsKICAgICAgICAgbV9zY29wZVR5cGUgPSBzeW1ib2xUYWJsZS5tX3Nj
b3BlVHlwZTsKICAgICAgICAgbV9hcmd1bWVudHMuZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRhYmxl
Lm1fYXJndW1lbnRzLmdldCgpKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2Rlciwg
c3ltYm9sVGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgU3ltYm9sVGFibGUq
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTE3MCw2ICsxMjE1LDExIEBAIHB1
YmxpYzoKICAgICAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHNjb3BlZEFyZ3VtZW50c1RhYmxl
ID0gbV9hcmd1bWVudHMuZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoc2NvcGVkQXJndW1l
bnRzVGFibGUpCiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9hcmd1bWVudHMuc2V0KGRlY29k
ZXIudm0oKSwgc3ltYm9sVGFibGUsIHNjb3BlZEFyZ3VtZW50c1RhYmxlKTsKKyAgICAgICAgaWYg
KCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fcmFy
ZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+
KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2RlciwgKnN5bWJvbFRhYmxl
LT5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZTsK
ICAgICB9CiAKQEAgLTExODAsNiArMTIzMCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9u
ZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOwogICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsKICAg
ICBDYWNoZWRQdHI8Q2FjaGVkU2NvcGVkQXJndW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOworICAg
IENhY2hlZFB0cjxDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAog
Y2xhc3MgQ2FjaGVkSlNWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCmluZGV4IGI0YjcxNjMzNzM0ZTNjYWQ5OTU3ZTdjZGZkY2RjNzMzMmRlODllYzMu
LmFmZGNjOTAyOTEzNzNmNTBkMDU3MGUzOGM4ZDkzNWEwYWJmYzljOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBVbmxp
bmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgcwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxp
bmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbiA9IGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9
IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNo
ZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRD
b250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCBudWxscHRyLCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24pOworICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hl
VHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENv
bnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHZhcmlhYmxlc1VuZGVyVERaLCBu
dWxscHRyLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwogICAgIGlmICghcm9vdE5vZGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggOWEzMDBlNzM2Nzg4OTJiMDU0Njg5
MDVlZWU2YTY0MDFjOTk5NTg2My4uMzU0NDE1Zjk1MjhhZGJiOWMyZWQ1ZTE1YzM1MjU3MDA1NTc2
MDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcApAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUg
SU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUp
ICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGluTmFtZXMtPm5hbWUjI1ByaXZhdGVOYW1lKCkp
CiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5hbWUpICwgbmFtZSMjU3ltYm9sKG1fYnVpbHRp
bk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX0ZJRUxE
X05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmllbGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZN
JiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQzLDYgKzQ0LDcgQEAgQ29tbW9uSWRl
bnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICBKU0NfQ09NTU9OX0lERU5U
SUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9J
REVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQog
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklW
QVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA4
ZGJjNmQ3YWMxODdiNzE5ZDA0NTI2NTcwMjgwOTYxNjIyOWQ1OGRjLi44NTU4YmFiOTBjZTVkOGJi
M2RkMTA4ZTA4NDVmOGE1Mjk0ZjQ1ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIwOSw2ICsyMDksOSBAQAogICAgIG1h
Y3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikKIAorI2RlZmluZSBKU0NfQ09NTU9OX0lE
RU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChtYWNybykgXAorICAgIG1hY3JvKGNvbnN0cnVj
dG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3Jv
KSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMzIzLDYgKzMy
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCiAKKyNkZWZpbmUgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JB
TCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMCisK
ICAgICAgICAgLy8gQ2FsbGVycyBvZiB0aGlzIG1ldGhvZCBzaG91bGQgbWFrZSBzdXJlIHRoYXQg
aWRlbnRpZmllcnMgZ2l2ZW4gdG8gdGhpcyBtZXRob2QgCiAgICAgICAgIC8vIHN1cnZpdmUgdGhl
IGxpZmV0aW1lIG9mIENvbW1vbklkZW50aWZpZXJzIGFuZCByZWxhdGVkIFZNLgogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEV4dGVybmFsTmFtZShjb25zdCBJZGVudGlmaWVy
JiBwdWJsaWNOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBwcml2YXRlTmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwZjc3
YTgxODNiZWEzNmRhYmRjNjIzMTMxNjI2YTMwNjE4OTMwYzdlLi45ODJhY2E3YTk2OGRkZjg0OThk
NDM1ZjA4NWZlMzRkZjI5ZGUxMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEzMTAsNiArMTMxMCwyOCBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgUkVUVVJOX1BST0ZJ
TEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkpOwogfQogCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBCRUdJTigp
OworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVl
KCk7CisgICAgQVNTRVJUKHN1YnNjcmlwdC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VWYWx1ZS5y
ZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9i
amVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJp
dmF0ZU5hbWUoKSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgYXNPYmplY3Qo
YmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3Qp
OworICAgIENIRUNLX0VYQ0VQVElPTigpOworCisgICAgUkVUVVJOX1BST0ZJTEVEKHNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAzYzA3MTRjMjll
NDM4NTgzMmVmYmQwNjcxNjc1MjFkYTMyZGNiODQ1Li42NjQ2ODliMjlmMDgxZmI1ZDEyNjYyZGE1
ODc2N2JiNGZmNDA1MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMjc0LDYgKzI3NCw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X3ByaXZhdGVfbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
dmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9k
YXRhX3Byb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKaW5kZXggOGM5Y2EwMzQ3NjA0OTZiMGE2YWVhZjBmODI2ZmIzNjQ2
NjNkYzBkNy4uNDE0ZTdiZGY3N2FiNGZjNzY0YjU2NWRmNmYxYmQ0YTBkNjRiMzBjYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAK
QEAgLTMyNCw2ICszMjQsMTYgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iKTsKIH0KIAor
SlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1
bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCitKU09iamVjdCogY3JlYXRlUmVk
ZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5u
b3QgcmVkZWZpbmUgZXhpc3RpbmcgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBwZW5k
ZXIsIFR5cGVOb3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU91dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKaW5kZXggZTlhNTIzMWZjNTY0YjA3ZGQzOWQxY2FjMTQ2
OTA5NWEzZGJkNDEyYy4uZTFiN2UwMjExOGQ0OGI1ZjU0NDg3NDViZDM2NGEyZTkzOTk3M2I3MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aApAQCAtNTMsNiArNTMsOCBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJh
bWV0ZXJFcnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsbwogSlNPYmplY3QqIGNy
ZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09i
amVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVO
YW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2
YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZv
clZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29w
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDFlZGE3ZWIzYjEzN2U4MmY1ODczNDEyYTVkMDIyODI2ZTYxZmQ0MDUuLmVjNTBi
MzhlNTg5Y2Q4Y2ExMzkxODU2N2M5YzliODllODMyZjQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI5NCw2ICsyOTQsMTIg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVuZ3RoUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkpKSk7CiB9CiAKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNyZWF0ZVByaXZhdGVTeW1ib2woSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTeW1ib2w6OmNyZWF0ZSh2bSwgUHJp
dmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKS5nZXQoKSkpOworfQorCiAjaWYgQVNT
RVJUX0VOQUJMRUQKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFzc2VydENh
bGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7
CkBAIC0xMjE4LDYgKzEyMjQsMTEgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2Vy
TmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAg
ICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1h
dCkpOwogICAgICAgICB9KTsKIAorICAgIC8vIFByaXZhdGVTeW1ib2xzIC8gUHJpdmF0ZU5hbWVz
CisgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVD
b25zdGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8SlNDZWxsPiYgaW5pdCkgeworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBT
dHJpbmcoKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbCkpOworICAgICAgICB9KTsKKwogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkgJiYgRU5BQkxFKFdFQkFTU0VNQkxZX1NUUkVBTUlOR19BUEkpCiAgICAg
Ly8gV2ViQXNzZW1ibHkgU3RyZWFtaW5nIEFQSQogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OndlYkFzc2VtYmx5Q29tcGlsZVN0
cmVhbWluZ0ludGVybmFsKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCAy
ZmQ2ZDk3NDlkMWM2YmMwMjVlM2Y0YWY0ZDQxZjc4NGM0ODkzZDU2Li5jZjMzZDI2YTkzNDE5MjZk
YzNiMjcyNjM0YTM3M2ViMTRmMjg2YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTE4MCw2ICsxODAsMTEgQEAgcHVibGljOgogICAgIC8vIGJlaW5nIHJl
dHVybmVkLiBPbmNlIHRoaXMgaXMgZml4ZWQgd2Ugc2hvdWxkIG1pZ3JhdGUgY29kZSAmIHJlbW92
ZSB0aGlzIG1ldGhvZC4KICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKKyAgICBzdGF0aWMgYm9vbCBnZXRQcml2YXRlRmllbGRTbG90KEpTT2JqZWN0Kiwg
SlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIGlubGlu
ZSBib29sIGdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CisgICAgaW5saW5lIHZvaWQgcHV0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2Jq
ZWN0KiwgUHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxp
bmUgdm9pZCBkZWZpbmVQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworCiAgICAgdW5zaWduZWQgZ2V0QXJyYXlMZW5n
dGgoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFoYXNJbmRleGVkUHJvcGVydGllcyhpbmRl
eGluZ1R5cGUoKSkpCkBAIC0xNDQ0LDYgKzE0NDksNzggQEAgQUxXQVlTX0lOTElORSB2b2lkIEpT
T2JqZWN0Ojpkb1B1dFByb3BlcnR5U2VjdXJpdHlDaGVjayhKU09iamVjdCosIEpTR2xvYmFsT2Jq
ZWMKIHsKIH0KIAorSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xv
YmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihK
U0dsb2JhbE9iamVjdCopOworCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldFByaXZh
dGVGaWVsZFNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAg
IEFTU0VSVChwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKTsKKyAgICBWTSYgdm0gPSBnZXRW
TShnbG9iYWxPYmplY3QpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gb2JqZWN0LT5zdHJ1
Y3R1cmUodm0pOworCisgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICBQcm9wZXJ0eU9mZnNl
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCh2bSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzKTsK
KyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChvZmZzZXQpOworICAgIEFT
U0VSVCh2YWx1ZSk7CisgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgIEpTQ2VsbCog
Y2VsbCA9IHZhbHVlLmFzQ2VsbCgpOworICAgICAgICBKU1R5cGUgdHlwZSA9IGNlbGwtPnR5cGUo
KTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKGNlbGwpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHR5
cGUsIHR5cGUgIT0gR2V0dGVyU2V0dGVyVHlwZSAmJiB0eXBlICE9IEN1c3RvbUdldHRlclNldHRl
clR5cGUpOworICAgICAgICAvLyBGSVhNRTogRm9yIG5vdywgcHJpdmF0ZSBmaWVsZHMgZG8gbm90
IHN1cHBvcnQgZ2V0dGVyL3NldHRlciBmaWVsZHMuIExhdGVyIG9uLCB3ZSB3aWxsIG5lZWQgdG8g
ZmlsbCBpbiBhY2Nlc3NvciBtZXRhZGF0YSBoZXJlLAorICAgICAgICAvLyBhcyBpbiBKU09iamVj
dDo6Z2V0T3duTm9uSW5kZXhQcm9wZXJ0eVNsb3QoKQorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisgICAgfQorCisgICAgc2xvdC5zZXRW
YWx1ZShvYmplY3QsIGF0dHJpYnV0ZXMsIHZhbHVlLCBvZmZzZXQpOworICAgIHJldHVybiB0cnVl
OworfQorCitpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBpZiAoIUpTT2JqZWN0OjpnZXRQ
cml2YXRlRmllbGRTbG90KHRoaXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkg
eworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZh
bGlkUHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBmYWxzZSk7CisgICAgfQorICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3Bl
LmV4Y2VwdGlvbigpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRydWUpOworfQor
CitpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYgcHV0U2xvdCkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmpl
Y3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFz
UHJvcGVydHkpOworICAgIGlmICghSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QodGhpcywg
Z2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIHRocm93RXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGds
b2JhbE9iamVjdCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHZvaWQoKSk7
CisgICAgfQorICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAg
IHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHB1dFNsb3QpOworfQorCitpbmxpbmUgdm9pZCBKU09iamVjdDo6ZGVmaW5lUHJpdmF0ZUZpZWxk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCkKK3sKKyAgICBWTSYgdm0g
PSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzLCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOworICAgIGlmIChKU09iamVjdDo6Z2V0UHJpdmF0
ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVkZWZpbmVk
UHJpdmF0ZU5hbWVFcnJvcihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB2b2lkKCkpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5l
eGNlcHRpb24oKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHV0RGlyZWN0KHZtLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBwdXRTbG90KTsKK30KKwogLy8gSXQgbWF5IHNlZW0gY3Jhenkg
dG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVy
ZW5jZQogLy8gc2luY2UgdGhpcyBpcyBmdW5jdGlvbiB2ZXJ5IGhvdCBpbiB2YXJpYWJsZSBsb29r
dXAKIHRlbXBsYXRlPGJvb2wgY2hlY2tOdWxsU3RydWN0dXJlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCAxZmU3ZDY3MjlkMjk3NWZhYWY5YTIzMWIzZWQx
NTZlMjhiMDc1NmVkLi4wZWI1Mjc4ZjQzMmU0YTQ1Y2I5MGFmY2Q0YTMzMDgxMDY4ZGZlNDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcApAQCAtMzM3LDYgKzMz
NywxMCBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFooSlNT
Y29wZSogc2NvcGUsIFZhcmlhYmxlRW52aXJvbm1lbgogICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAgICBmb3IgKGF1dG8gZW5kID0g
c3ltYm9sVGFibGUtPmVuZChsb2NrZXIpLCBpdGVyID0gc3ltYm9sVGFibGUtPmJlZ2luKGxvY2tl
cik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICByZXN1bHQuYWRkKGl0ZXItPmtl
eSk7CisgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnByaXZhdGVOYW1lcygpKQorICAg
ICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRlTmFtZShuYW1lKTsgICAgCisgICAgICAgIH0K
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CmluZGV4IGI2ZmYzOTE3Yzc3ZjNkN2M3ZWMxYThlZDkxZDBjZGI1MDI0NmU3ZjMuLjU1NzcxZGRk
ZjcwYmJjNjQyZjI0NTU0MzdkZGZkNGYxZDVkNDkyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTA5LDYgKzUwOSw3IEBAIGNvbnN0ZXhwciBi
b29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCB1
c2VQdWJsaWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3
aWxsIHVuZGVyc3RhbmQgcHVibGljIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKICAg
ICB2KEJvb2wsIHVzZVJhbmRvbWl6aW5nRXhlY3V0YWJsZUlzbGFuZEFsbG9jYXRpb24sIGZhbHNl
LCBOb3JtYWwsICJGb3IgdGhlIGFybTY0IEV4ZWN1dGFibGVBbGxvY2F0b3IsIGlmIHRydWUsIHNl
bGVjdCB3aGljaCByZWdpb24gdG8gdXNlIHJhbmRvbWx5LiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGVz
dGluZyB0aGF0IGp1bXAgaXNsYW5kcyB3b3JrLiIpIFwKICAgICB2KEJvb2wsIGV4cG9zZVByb2Zp
bGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBleHBv
c2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhlIHNhbXBsaW5nIHByb2ZpbGVy
IGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKKyAgICB2KEJvb2wsIHVzZVByaXZhdGVDbGFzc0Zp
ZWxkcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIgd2lsbCB1bmRlcnN0YW5k
IHByaXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogCiBlbnVtIE9wdGlvbkVx
dWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IGNiYWI0NmNlNTQ1NGUyM2YzNDgyZWJkYmMwYjY5
Y2EyNjk1NjdmZjUuLjE2NGNhNmQ0MzEwZTZiYjM4ZTY0N2UyZjZiZTJmOWY3ZDlmMzI2NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKQEAgLTE4
MSw2ICsxODEsMTEgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxlOjpjbG9uZVNjb3BlUGFydChW
TSYgdm0pCiAgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAg
ICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fdW5pcXVlVHlwZVNldE1hcC5zZXQoaXRlci0+
a2V5LCBpdGVyLT52YWx1ZSk7CiAgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKGF1dG8gbmFtZSA6IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzKQorICAgICAgICAgICAg
ICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKG5hbWUpOworICAgICAg
ICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCBlMjM0ZDMxNGM2OWVkMmQxMTEzMjM5MTRi
YTI3ZDNkOTMxNTUyNjc2Li4zMWY4MWZhZTAyZmIyMDFkMzIxOGJiMGZiNGM1MmQyMjFmNGNkNjQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKQEAgLTM4
LDcgKzM4LDcgQEAKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8bWVtb3J5Pgog
I2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVW5pcXVlZFN0
cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xJbXBsLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCkBAIC00NTAsNiArNDUwLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlwZVNldD4sIElkZW50aWZpZXJS
ZXBIYXNoPiBVbmlxdWVUeXBlU2V0TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxWYXJPZmZzZXQs
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IE9mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgdHlw
ZWRlZiBWZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9FbnRyeVZlYzsKKyAgICB0eXBl
ZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+
IFByaXZhdGVOYW1lU2V0OworICAgIHR5cGVkZWYgV1RGOjpJdGVyYXRvclJhbmdlPHR5cGVuYW1l
IFByaXZhdGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRp
YyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAtNTk0LDcgKzU5NiwyNSBAQCBw
dWJsaWM6CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICAgYWRkKGxvY2tlciwga2V5LCBzdGQ6OmZvcndhcmQ8RW50cnk+KGVudHJ5KSk7CiAgICAgfQot
ICAgIAorCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZXMoKSBjb25zdCB7IHJldHVybiBtX3JhcmVE
YXRhICYmIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsgfQorICAgIEFMV0FZU19J
TkxJTkUgUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlIHByaXZhdGVOYW1lcygpCisgICAgeworICAg
ICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZl
bnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKGhh
c1ByaXZhdGVOYW1lcygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmVuZCgpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJ
bXBsKiBrZXkpCisgICAgeworICAgICAgICBBU1NFUlQoa2V5ICYmICFrZXktPmlzU3ltYm9sKCkp
OworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RG
OjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisKKyAgICAgICAgQVNTRVJUKCFt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhrZXkpKTsKKyAgICAgICAgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW50cnk+CiAgICAgdm9pZCBzZXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVW5p
cXVlZFN0cmluZ0ltcGwqIGtleSwgRW50cnkmJiBlbnRyeSkKICAgICB7CkBAIC03MjksMTggKzc0
OSwyMSBAQCBwcml2YXRlOgogICAgIFNjb3BlT2Zmc2V0IG1fbWF4U2NvcGVPZmZzZXQ7CiBwdWJs
aWM6CiAgICAgbXV0YWJsZSBDb25jdXJyZW50SlNMb2NrIG1fbG9jazsKLXByaXZhdGU6Ci0gICAg
dW5zaWduZWQgbV91c2VzTm9uU3RyaWN0RXZhbCA6IDE7Ci0gICAgdW5zaWduZWQgbV9uZXN0ZWRM
ZXhpY2FsU2NvcGUgOiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4aWNhbFNjb3BlLgotICAgIHVuc2ln
bmVkIG1fc2NvcGVUeXBlIDogMzsgLy8gU2NvcGVUeXBlCi0gICAgCisKICAgICBzdHJ1Y3QgU3lt
Ym9sVGFibGVSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgVW5pcXVlSURNYXAgbV91bmlxdWVJRE1hcDsKICAgICAgICAgT2Zmc2V0VG9W
YXJpYWJsZU1hcCBtX29mZnNldFRvVmFyaWFibGVNYXA7CiAgICAgICAgIFVuaXF1ZVR5cGVTZXRN
YXAgbV91bmlxdWVUeXBlU2V0TWFwOwogICAgICAgICBXcml0ZUJhcnJpZXI8Q29kZUJsb2NrPiBt
X2NvZGVCbG9jazsKKyAgICAgICAgUHJpdmF0ZU5hbWVTZXQgbV9wcml2YXRlTmFtZXM7CiAgICAg
fTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDogMTsKKyAg
ICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhp
Y2FsU2NvcGUuCisgICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5cGUKKwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW1ib2xUYWJsZVJhcmVEYXRhPiBtX3JhcmVEYXRhOwogCiAg
ICAgV3JpdGVCYXJyaWVyPFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTRkMDE5
NTljY2QxNjQwZDcxNzcwYzE1ZWY5NWU1NzVkODE2ODQ0YS4uZDc2ODc4MTNiMGU1ZGY4YTE1OGUz
M2IyMzA1ZTE0ZTllZDU0ZWMxOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wNS0yOCAgQ2FpdGxpbiBQ
b3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIEFkZCBzdXBwb3J0IGZv
ciBwcml2YXRlIGNsYXNzIGZpZWxkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRXhwYW5kcyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBmaWVsZHMgcGF0
Y2gsIGFkZGluZyBhIG51bWJlciBvZiBwcml2YXRlCisgICAgICAgIGZpZWxkIHRlc3RzLgorCisg
ICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2Rl
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXpl
LW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtZnJlZXplLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtb24tcHJveHkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0
LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1zZWFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
dXNlLWV2YWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNz
LWluc3RhbmNlLmpzOgorICAgICAgICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1maWVsZC5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL29wdGlvbmFsLWNoYWluaW5nLWFuZC1wcml2YXRlLWZpZWxk
cy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29t
cHV0ZWQtcHJvcGVydHkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRp
cmVjdC1hZGRwcml2YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1k
aXJlY3QtcHV0cHJpdmF0ZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFt
bDoKKwogMjAyMC0wNS0yNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBpbl9zdHJ1Y3R1cmVfcHJvcGVydHkgbmVlZHMgdG8gaGFuZGxlIGNvbnN0YW50
cyBvbiB0aGUgUkhTIG9mIHRoZSAiaW4iCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YTExNjNlMTY3ZWQwZDZj
NWY2NzY1NmQwMWIzNGQ4OGNiNzRmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsK
KyAgICAjbSA9ICgpID0+IDI1OworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhp
cy4jbSgpOworICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCks
IDI1KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
Y2FjaGVkLWJ5dGVjb2RlLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
Y2FjaGVkLWJ5dGVjb2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyYTRmNDM1NGY4OTdmMTEzNzQwODcxMjYw
NDZjNmYxZGZkM2U3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKQEAgLTAsMCArMSwxOCBAQAorLy9AIHJ1
bkJ5dGVjb2RlQ2FjaGUoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsK
KyAgICAjZiA9IDM7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOwor
ICAgIH0KK30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDMpOworCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0
LW9mLWxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUt
b3V0LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1M2Y2YjIzMTA3ZGRhYTJiNDViYzNmMDU4ZWFi
ZjExY2YwMTkzYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDQ4IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0g
T2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgewor
ICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAk
e21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwg
eworICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09
IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cg
bmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKKy8vIFRo
ZSBiYXNlIGNsYXNzIGlzIGRlY2xhcmVkIGluIGV2YWwgc3BlY2lmaWNhbGx5IHNvIHRoYXQgaXQg
Y2FuIGFkZCBlbm91Z2gKKy8vIHByb3BlcnRpZXMgdG8gdGhlIGNsYXNzIHRvIHN0b3JlIHByaXZh
dGUgZmllbGRzIGluIG91dC1vZi1saW5lIHByb3BlcnR5IHN0b3JhZ2UuCitsZXQgQmFzZSA9IGV2
YWwoYChjbGFzcyBCYXNlIHsKKyAgLy8gTWV0aG9kcworICBjb25zdHJ1Y3RvcigpIHsKKyAgICAv
LyBEZWZpbmUgcHJvcGVydGllcworICAgICR7QXJyYXkoMjAwKS5tYXAoKF8sIGkpID0+IGAgIHRo
aXMueCR7aX0gPSAke2l9O1xuYCkuam9pbigiIil9CisgIH0KK30pYCk7CisKK2NsYXNzIFByaXZh
dGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2Jq
ZWN0LmZyZWV6ZSh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNGcm96
ZW4odGhpcyksICJPYmplY3QuaXNGcm96ZW4odGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdl
dCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKwor
ZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVu
dEV4dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54MTUwID09PSAxNTApOworICBjLngxNTAg
PSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNz
ZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwor
dGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0
KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJl
ZXplLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY0MmNjMGZmOTJkNmJhYzljODRkOTA2OTQzNGYzYjc3ZDdkZjViMjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUu
anMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFz
c2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1
ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBpZiAo
YSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBiKSkK
KyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0byBi
ZSAke2J9YCk7CisgIH0KK30pOworCitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoKSB7Cisg
ICAgdGhpcy54ID0gMTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRF
eHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5mcmVlemUodGhpcyksIDQy
KTsKKyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0LmlzRnJvemVuKHRoaXMpLCAiT2JqZWN0Lmlz
RnJvemVuKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNp
OyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgewor
ICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLngg
PSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNz
ZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwor
dGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0
KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24t
cHJveHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NjFmNzE4ZDk3NDI3MGFjOGExOWU1ZjdiZjA1MjAwZGViOTM3NmNkCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24t
cHJveHkuanMKQEAgLTAsMCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAo
YSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3Nl
cnRBcnJheUNvbnRlbnQoYSwgZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJT
aXplIG9mIGFycmF5cyBkb2Vzbid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
Lmxlbmd0aDsgaSsrKQorICAgICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9
ICIgKyBhW2ldICsgIiBidXQgZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJy
ID0gW107CisKK2NsYXNzIFByb3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAg
IHJldHVybiBuZXcgUHJveHkodGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2Jq
LCBwcm9wKSB7CisgICAgICAgICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG9ialtwcm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQor
fQorCitjbGFzcyBUZXN0IGV4dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjZiA9IDM7CisgICAgbWV0
aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3
IFRlc3QoKTsKK2xldCByID0gdC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMg
YnV0IGdvdDogIiArIHIpOworCithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9m
LWxpbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGlu
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42OWQ4NjIxNjAxZDVkZTM0YTQyODM0NmQ1MWNjZjgyMmZiZjU2MGE5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
b3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSwyOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBp
ZiAoYSAhPT0gZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAi
IGJ1dCBnb3Q6ICIgKyBhKTsKK30KKworbGV0IGtsYXNzU291cmNlID0gYAordmFyIEMgPSBjbGFz
cyB7CisgICAgYXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKSB7CisgICAgICAgIGFzc2VydCh0aGlzLiNm
MjAwLCAiZm9vIik7CisgICAgfQorYDsKKworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDsgaSsr
KSB7CisgICAga2xhc3NTb3VyY2UgKz0gIiAgICAjZiIgKyBpICsgIjtcbiI7Cit9CisKK2tsYXNz
U291cmNlICs9ICIgICAgI2YyMDAgPSBcImZvb1wiO1xufSI7CisKK2V2YWwoa2xhc3NTb3VyY2Up
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBjLmFzc2VydE91dE9mTGluZVZhbHVlKCk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGlu
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5z
aW9ucy1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MmRiOGIxNmFlMGQ1Y2I3ZjNmNTU4NTI3
ZTQwMGViNTIyYzFiMzYxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzCkBAIC0wLDAg
KzEsNTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIp
CisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwg
bWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcg
RXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMg
JHtleHByfWApOworICB9LCB7CisgIGZhbHNlKGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlm
IChleHByID09IHRydWUpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2Fn
ZSB8fCAiZXhwciJ9IHRvIGJlIGZhbHNlLCBidXQgd2FzICR7ZXhwcn1gKQorICB9LAorICBlcXVh
bHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChh
ICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKKy8vIFRoZSBiYXNlIGNs
YXNzIGlzIGRlY2xhcmVkIGluIGV2YWwgc3BlY2lmaWNhbGx5IHNvIHRoYXQgaXQgY2FuIGFkZCBl
bm91Z2gKKy8vIHByb3BlcnRpZXMgdG8gdGhlIGNsYXNzIHRvIHN0b3JlIHByaXZhdGUgZmllbGRz
IGluIG91dC1vZi1saW5lIHByb3BlcnR5IHN0b3JhZ2UuCitsZXQgQmFzZSA9IGV2YWwoYChjbGFz
cyBCYXNlIHsKKyAgLy8gTWV0aG9kcworICBjb25zdHJ1Y3RvcigpIHsKKyAgICAvLyBEZWZpbmUg
cHJvcGVydGllcworICAgICR7QXJyYXkoMjAwKS5tYXAoKF8sIGkpID0+IGAgIHRoaXMueCR7aX0g
PSAke2l9O1xuYCkuam9pbigiIil9CisgIH0KK30pYCk7CisKK2NsYXNzIFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LnByZXZl
bnRFeHRlbnNpb25zKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0LmZhbHNlKE9iamVj
dC5pc0V4dGVuc2libGUodGhpcyksICJPYmplY3QuaXNFeHRlbnNpYmxlKHRoaXMpIiksIHRoaXMu
I2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMu
I2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRl
RmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBhc3NlcnQuZXF1YWxzKGMueDE1MCA9PT0g
MTUwKTsKKyAgYy54MTUwID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAg
Yy5zZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0
KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAy
MDA7ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzYwOTcy
NzgxNGZjNjA1ZTEwNGM2NjRkNmUzZTYwZTJkNGM1YzMyCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzCkBA
IC0wLDAgKzEsNDcgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQo
ZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJv
dyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1
dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGZhbHNlKGV4cHIsIG1lc3NhZ2UgPSAiIikgewor
ICAgIGlmIChleHByID09IHRydWUpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7
bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIGZhbHNlLCBidXQgd2FzICR7ZXhwcn1gKQorICB9LAor
ICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIp
IHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJh
c2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNz
IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kg
PSAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNz
ZXJ0LmZhbHNlKE9iamVjdC5pc0V4dGVuc2libGUodGhpcyksICJPYmplY3QuaXNFeHRlbnNpYmxl
KHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9Cisg
IHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQg
YyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAwLjE7
CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVx
dWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgx
KTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQt
b2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0
LW9mLWxpbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxYjMwZTYyZTI4MzlhZDQ3NTIzMWYzN2NhNGRmYzUx
MTYxMGQ1NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLXNlYWwtb3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSw1MiBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVj
dC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBp
ZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNz
YWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAg
ZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFs
c2UsIGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEg
PT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisg
ICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUg
JHtifWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZh
bCBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0
byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVy
dHkgc3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2Rz
CisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJh
eSgyMDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0K
KyAgfQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBl
eHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3Quc2VhbCh0aGlzKSwgNDIpOworICAjYXNzZXJ0
ID0gKGFzc2VydChPYmplY3QuaXNTZWFsZWQodGhpcyksICJPYmplY3QuaXNTZWFsZWQodGhpcyki
KSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkp
IHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3
IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54
MTUwID09PSAxNTApOworICBjLngxNTAgPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwg
NDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5s
aW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0g
MDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLXNlYWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgzZTdhYjM1ZDdjMTRhNmM3NjkxMjYyNmNm
ZDEyODE3YzVhMGIwOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXNlYWwuanMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3Np
Z24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhw
ciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8
ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZXF1YWxz
KGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAh
PT0gYSAmJiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCitjbGFzcyBCYXNlIHsKKyAg
Y29uc3RydWN0b3IoKSB7CisgICAgdGhpcy54ID0gMTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRl
RmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVj
dC5zZWFsKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc1NlYWxlZCh0
aGlzKSwgIk9iamVjdC5pc1NlYWxlZCh0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkg
eyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5j
dGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0
ZW5zaW9uczsKKyAgYy54ID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAg
Yy5zZXQoaSk7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0
KTsKKwordGVzdCgwKTsKK3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAy
MDA7ICsraSkKKyAgdGVzdChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtdXNlLWV2YWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3ODgwNTdiMWJmNDk1NTBhMGU4ZjNkOThh
OTQxYTgzN2NmMTFjMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXVzZS1ldmFsLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIsICItLXVzZVB1YmxpY0NsYXNzRmllbGRz
PTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgbWVzc2FnZSkgeworICAgIGlmICghYSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpOworfQorCitsZXQgaW5zdCA9IG5ldyBjbGFzcyB7
CisgIGEgPSBldmFsKCIoaSkgPT4gaS4jYiIpOworCisgICNiID0ge307Cit9OworCitpbnN0LmEo
aW5zdCkueCA9IDE7Cithc3NlcnQoaW5zdC5hKGluc3QpLnggPT0gMSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwppbmRleCBlNTE2Mjk5YTc5MmM2
Mzg0Yjg0MmM2OTdmNDFmY2VkN2Y1Y2ZmZmNmLi41MDY5YTdkYTVhMTU1ZGNjMDYwNGU0NjMyYjkw
ZTgzMDkzOWZlODM2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3Ry
ZXNzLWluc3RhbmNlLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3Mt
aW5zdGFuY2UuanMKQEAgLTEsMTEgKzEsMTUgQEAKLS8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
dWJsaWNDbGFzc0ZpZWxkcz10cnVlIikKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJsaWND
bGFzc0ZpZWxkcz10cnVlIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQogCiBjbGFz
cyBBIHsKICAgICBhID0gMDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7CisgICAgI2QgPSAxOwog
ICAgIGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9OworICAgICNmID0gZnVuY3Rpb24oKSB7
IHJldHVybiAxOyB9OwogICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZhbCgidHJ1ZSIpOworICAg
ICNpID0gZXZhbCgiZmFsc2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rl
c3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTYzMzYyZmFhNjNl
NDA1NjI1ZDFmZWNlY2U5OWJjZDI2NmI5ZWE5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZ2V0LXByaXZhdGUtZmllbGQuanMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJ
VCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIEdldEJ5VmFsRGlyZWN0IHNob3VsZCB0aHJvdyB3aGVu
IHRoZSByZWNlaXZlciBkb2VzIG5vdCBoYXZlIHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0
eQorbGV0IGksIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeCA9IGk7CisgICAgY29u
c3RydWN0b3IoKSB7IGlmIChpID09PSAzMCkgcmV0dXJuIHsgW1N5bWJvbC50b1N0cmluZ1RhZ106
ICJ3aXRob3V0ICN4In07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeDsgfQor
ICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRoICN4IjsgfQorfQor
Cit0cnkgeworICAgIGZvciAoaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGxldCBjID0g
bmV3IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngoYyk7CisgICAgICAgIGlmIChyZXN1bHQg
IT09IGkpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke2N9KSB0
byBiZSAke2l9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgewor
ICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0g
VHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQor
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9u
IHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWlu
aW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcyBiL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWlu
aW5nLWFuZC1wcml2YXRlLWZpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJjZjEyYjY0YTE2NDMwMmVk
MjdmNWI5MWUwNzU0NDcxZTExN2U2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
b3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzCkBAIC0wLDAgKzEsOTMgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiAoYSwgZSkgPT4geworICAgICAgICBpZiAoYSAh
PT0gZSkgCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIg
YnV0IGdvdDogIiArIGEpOworICAgIH0sCisKKyAgICB0aHJvd3M6IChleHBlY3RlZEV4Y2VwdGlv
biwgZnVuY3RvciwgbSkgPT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rvcigp
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBl
eHBlY3RlZEV4Y2VwdGlvbikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOwor
ICAgICAgICB9CisgICAgfQorfTsKKworKCgpID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
I2ZpZWxkID0gJ3Rlc3QnOworICAgIAorICAgICAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAg
ICAgICAgIHJldHVybiBvPy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9
IG5ldyBDOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAg
YXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhjKSwgJ3Rlc3QnKTsKKyAgICAgICAgYXNzZXJ0LnNh
bWVWYWx1ZShDLmFjY2Vzcyh1bmRlZmluZWQpLCB1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQu
c2FtZVZhbHVlKEMuYWNjZXNzKG51bGwpLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIEMuYWNjZXNzKHt9KTsKKyAgICB9
LCAiT2JqZWN0IHdpdGhvdXQgcHJpdmF0ZSBmaWVsZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisK
Ky8vIENoYWluZWQgY2FzZQorKCgpID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxk
ID0gJ3Rlc3QnOworICAgIAorICAgICAgICBzdGF0aWMgY2hhaW5lZEFjY2VzcyhvKSB7CisgICAg
ICAgICAgICByZXR1cm4gby5wcml2YXRlPy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDOworICAgIGxldCBvID0ge3ByaXZhdGU6IGN9OworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNo
YWluZWRBY2Nlc3MobyksICd0ZXN0Jyk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5jaGFp
bmVkQWNjZXNzKHt9KSwgdW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNo
YWluZWRBY2Nlc3Moe3ByaXZhdGU6IG51bGx9KSwgdW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBvLnByaXZhdGUgPSB7fTsK
KyAgICAgICAgQy5jaGFpbmVkQWNjZXNzKG8pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2
YXRlIGZpZWxkIHNob3VsZCB0aHJvdyIpOworfSkoKTsKKworKCgpID0+IHsKKyAgICBjbGFzcyBD
IHsKKyAgICAgICAgI2ZpZWxkOworCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAg
IHRoaXMuI2ZpZWxkID0gdjsKKyAgICAgICAgfQorICAgIAorICAgICAgICBzdGF0aWMgYWNjZXNz
KG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvLiNmaWVsZD8ucHJvcGVydHk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwOyBpKyspIHsKKyAgICAgICAgYy5zZXRGaWVsZCh7cHJvcGVydHk6ICd0ZXN0J30pOworICAg
ICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCAndGVzdCcpOworCisgICAgICAgIGMu
c2V0RmllbGQodW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2Vzcyhj
KSwgdW5kZWZpbmVkKTsKKworICAgICAgICBjLnNldEZpZWxkKG51bGwpOworICAgICAgICBhc3Nl
cnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIEMuYWNjZXNzKHt9KTsKKyAgICB9
LCAiT2JqZWN0IHdpdGhvdXQgcHJpdmF0ZSBmaWVsZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0
ZWQtcHJvcGVydHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNv
bXB1dGVkLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZDhlMjE5MjNmMjAyNGQwMjIwMmYzYTJl
MTZiYjQ5ZTFmOTViM2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIiwgIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogKGV4cGVjdGVk
RXJyb3IsIGZ1bmN0b3IpID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
KTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2Yg
ZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IubmFtZSArICIgYnV0IHRocm93czogIiArIGUu
bmFtZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgY2xhc3MgQmFzZSB7CisgICAgICAgIFt7fS4jeF0gPSAxOyAKKyAgICAgICAg
I3ggPSAiZm9vIjsKKyAgICB9Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0
LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwt
ZGlyZWN0LWFkZHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTMxMzU0Njg2OTI3ZjM2Y2VkOWE5OWFl
ZTc0NDkxZDhmN2YyMzM3NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1i
eS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanMKQEAgLTAsMCArMSwzNCBAQAorLy8gVE9ETzogLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikgLS0gQ3VycmVudGx5
LCBlYWdlciBKSVQgaXMgbm90IHN1cHBvcnRlZCBmb3IgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MuCisv
L0AgcnVuRGVmYXVsdCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKQorCisvLyBQcml2YXRlRmllbGQgIkNyZWF0ZSIgYWNjZXNzIHNob3Vs
ZCB0aHJvdyBpZiB3cml0aW5nIHRvIGEgbm9uLWV4aXN0ZW50IFByaXZhdGVOYW1lLgorbGV0IGMs
IGkgPSAwLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgIHJldHVybiBpIDwgMjkgPyB0aGlzIDogYzsKKyAgICB9Cit9CisKK2NsYXNzIENDIGV4
dGVuZHMgQyB7CisgICAgI3ggPSBpKys7CisgICAgeCgpIHsgcmV0dXJuIHRoaXMuI3g7IH0KK30K
KworYyA9IG5ldyBDQzsKK3RyeSB7CisgICAgZm9yIChsZXQgaiA9IDE7IGogPCA1MDsgKytqKSB7
CisgICAgICAgIGxldCB4ID0gbmV3IENDOworICAgICAgICBpZiAoeC54KCkgIT09IGopCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIHgueCgpIHRvIGJlICR7an0sIGJ1dCBm
b3VuZCAke3gueCgpfWApOworICAgIH0KK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7
CisgICAgaWYgKGkgIT09IDMwIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgeworICAg
ICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpz
IGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40Mzg2NTNkZDIyMjE3ZDFkMTZlNzA2N2Q4YWQyNDU5OGM0NThjYzg4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpA
QCAtMCwwICsxLDMyIEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKSAtLSBDdXJyZW50bHksIGVhZ2VyIEpJVCBpcyBub3Qgc3VwcG9ydGVk
IGZvciBwcml2YXRlIGZpZWxkIGFjY2Vzcy4KKy8vQCBydW5EZWZhdWx0KCItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIp
CisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIFByaXZh
dGVGaWVsZCAiUHV0IiBhY2Nlc3Mgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhp
c3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBD
IHsKKyAgICAjeDsKKyAgICBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIGkgPCAzMCA/IHRoaXMgOiB7
IFtTeW1ib2wudG9TdHJpbmdUYWddOiAid2l0aG91dCAjeCIgfTsgfQorICAgIHN0YXRpYyB4KG9i
aikgeyByZXR1cm4gb2JqLiN4ID0gaSsrOyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWdd
KCkgeyByZXR1cm4gIndpdGggI3giIH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGxldCBqID0gMDsg
aiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IG9iaiA9IG5ldyBDOworICAgICAgICBsZXQgcmVz
dWx0ID0gQy54KG9iaik7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGopCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke29ian0pIHRvIGJlICR7an0sIGJ1dCBmb3Vu
ZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOwor
ICAgIC8vIHJ2YWwgb2YgQXNzaWdubWVudEV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGJlZm9yZSBQ
cml2YXRlRmllbGRGaW5kKCN4LCBscmVmKSBpcyBwZXJmb3JtZWQsCisgICAgLy8gdGh1cyBgaWAg
aGFzIGFscmVhZHkgYmVlbiBpbmNyZW1lbnRlZC4KKyAgICBpZiAoaSAhPT0gMzEgfHwgZS5jb25z
dHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitp
ZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQg
bm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA3YmVkMDY0NGFi
MjU4ZDVkMTA0ODUxMDhmMmM1OGZjNjg4MjQ5MTMzLi44M2JmNjdlOTJjYTI3NjQyNGZjMDlhZWQz
NTAzMDdlMDE2ZTQ0MWY1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC02LDYgKzYsNyBAQCBmbGFnczoK
ICAgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ6IHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQKICAg
V2Vha1JlZjogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzogdXNlUHVibGljQ2xh
c3NGaWVsZHMKKyAgY2xhc3MtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcwog
c2tpcDoKICAgZmVhdHVyZXM6CiAgICAgLSBTaGFyZWRBcnJheUJ1ZmZlcgpAQCAtMTQsNyArMTUs
NiBAQCBza2lwOgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3NDkzMQogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKIAotICAgIC0gY2xhc3MtZmllbGRzLXBy
aXZhdGUKICAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZp
ZWxkcy1wdWJsaWMKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400459</attachid>
            <date>2020-05-28 08:09:38 -0700</date>
            <delta_ts>2020-05-28 09:05:42 -0700</delta_ts>
            <desc>Patch v21</desc>
            <filename>bug-206431-20200528110937.patch</filename>
            <type>text/plain</type>
            <size>197758</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Nzc2YmJhZDIyODFkZTJmYjlmZDc4MGIwZjc5MDllZjgwNWI1ZDJlLi4yMGY1YzUyOTI1ODQxYmNl
NTBjOWE5YjJjMGNjNGJmNGQwMzE5OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjkgQEAKKzIwMjAtMDUtMjggIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X3ByaXZhdGVfbmFtZSksIG9uZSBjaGFuZ2VkIG9wY29k
ZSAob3BfcHV0X2J5X3ZhbF9kaXJlY3QpLgorICAgICAgICAgICAgLSBBIG1ldGhvZCBmb3IgY3Jl
YXRpbmcgU3ltYm9sIG9iamVjdHMgd2l0aCBhIG51bGwgUHJpdmF0ZVN5bWJvbEltcGwgaXMgZXhw
b3NlZCBhcyBhCisgICAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgKEBjcmVhdGVQcml2YXRl
U3ltYm9sKS4KKyAgICAgICAgICAgIC0gTnVsbCBQcml2YXRlIFN5bWJvbHMgYXJlIHN0b3JlZCBi
eSBuYW1lIChub3QgYSB2YWxpZCBpZGVudGlmaWVyKSBpbiBhIEpTU2NvcGUsIGFuZAorICAgICAg
ICAgICAgICBhcmUgbG9hZGVkIGZyb20gdGhlIG91dGVyIHNjb3BlIHdoZW5ldmVyIHRoZXkgYXJl
IHVzZWQgYnkgdGhlIG1vZGlmaWVkIG9wY29kZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgdG8g
b3BfcHV0X2J5X3ZhbF9kaXJlY3QgaW5jbHVkZSBhIG5ldyBieXRlY29kZSBvcGVyYW5kIChQdXRC
eVZhbEZsYWdzKSB3aGljaCBhcmUKKyAgICAgICAgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IG92ZXJ3cml0aW5nIG9yIGRlZmluaW5nIGEgbmV3IHByaXZhdGUgZmllbGQuIFNwZWNpZmljYWxs
eSwgd2hlbiBpdAorICAgICAgICBjb21lcyB0byBwcml2YXRlIGZpZWxkIGFjY2Vzc2VzLCBpdCdz
IG5lY2Vzc2FyeSB0byB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcgYSBmaWVsZAor
ICAgICAgICB3aGljaCBkb2VzIG5vdCBleGlzdCwgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGRlZmlu
ZSBhIHByaXZhdGUgZmllbGQgd2hpY2ggaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBkZWZpbmVk
LgorCisgICAgICAgIER1cmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIGNsYXNzIGV4cHJlc3Npb24s
IGJlZm9yZSB0aGUgY2xhc3MgZWxlbWVudCBsaXN0IGlzIGV2YWx1YXRlZCAoaW4gY2FzZQorICAg
ICAgICBhbnkgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgZXhwcmVzc2lvbnMgcmVmZXIgdG8gYSBu
ZXcgcHJpdmF0ZSBmaWVsZCksIGEgbmV3IFByaXZhdGVTeW1ib2wgaXMKKyAgICAgICAgY3JlYXRl
ZCBmb3IgZWFjaCBpbmRpdmlkdWFsIHByaXZhdGUgZmllbGQgbmFtZSwgYW5kIHN0b3JlZCBpbiB0
aGUgY2xhc3MgbGV4aWNhbCBzY29wZS4KKworICAgICAgICBQcml2YXRlIGZpZWxkIG5hbWVzIGFy
ZSBsb2FkZWQgZnJvbSBzY29wZSBiZWZvcmUgdGhlaXIgdXNlLiBUaGlzIHByZXZlbnRzIG11bHRp
cGxlIGV2YWx1YXRpb25zCisgICAgICAgIG9mIHRoZSBzYW1lIGNsYXNzIHNvdXJjZSBmcm9tIGFj
Y2Vzc2luZyBlYWNoIG90aGVyJ3MgcHJpdmF0ZSBmaWVsZHMsIGJlY2F1c2UgdGhlIHZhbHVlcyBv
ZiB0aGUKKyAgICAgICAgc3ltYm9scyBsb2FkZWQgZnJvbSB0aGUgY2xhc3Mgc2NvcGUgd291bGQg
YmUgZGlzdGluY3QuIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHByb3Bvc2FsIHRleHQsCisgICAg
ICAgIGFuZCBpcyB0aGUga2V5IHJlYXNvbiB3aHkgd2UgdXNlIEJ5VmFsIGxvb2t1cHMgcmF0aGVy
IHRoYW4gQnlJZCBsb29rdXBzLgorCisgICAgICAgIFRvIGlsbHVzdHJhdGUsIHR5cGljYWwgcHJp
dmF0ZSBmaWVsZCBhY2Nlc3Mgd2lsbCBsb29rIGxpa2U6CisKKyAgICAgICAgPEZpZWxkIFJlYWRz
PgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAi
I3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJv
bD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFBy
b3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBnZXRfcHJpdmF0ZV9uYW1l
ICAgPHZhbHVlPT4sIDxyZWNlaXZlciAtLS0gcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4KKwor
ICAgICAgICA8RmllbGQgV3JpdGVzPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3Bl
PT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRf
ZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhy
b3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAg
ICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3lt
Ym9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWU+CisKKyAgICAgICAgPEZpZWxkIERl
ZmluaXRpb24+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRT
Y29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAg
ICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8
R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92
YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+
LCA8UHV0QnlWYWxQcml2YXRlTmFtZXxQdXRCeVZhbFRocm93SWZFeGlzdHM+CisKKyAgICAgICAg
VGhlIGZlYXR1cmUgaXMgY3VycmVudGx5IGhpZGRlbiBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBK
U0M6Ok9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxG
bGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
UHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNEaXJlY3Qg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjplY21hTW9kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFjY2VzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkUHV0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpQdXRCeVZhbEZsYWdzKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJp
YWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlBy
ZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRz
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAg
ICAgKEpTQzo6ZGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9p
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9w
cmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVP
cHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlE
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChK
U0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJU
eXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
bGV4V2l0aG91dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlm
eURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2Nv
cGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4
cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkJh
c2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6dHlwZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dCk6CisgICAgICAgICog
cGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNQcml2YXRlTmFtZVNjb3Bl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzUHJpdmF0ZU5hbWVTY29wZSk6Cisg
ICAgICAgIChKU0M6OlNjb3BlOjpoYXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlNjb3Bl
Ojpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhh
c1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZmluZFByaXZhdGVOYW1lU2NvcGUpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI6OnByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjptYXRjaEFuZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyVG9rZW5zLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVy
YXRvcj0pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAg
ICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVOYW1lRW50cnk6OnNldElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50
cnk6OnNldElzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1l
bnQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVByaXZhdGVOYW1lc1RvIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNU
byBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhOjpS
YXJlRGF0YSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmdldE9yQWRkUHJp
dmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRPcHRpb25hbDo6ZGVjb2RlQXNQdHIgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6ZW5jb2RlKToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxl
OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVy
czo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVk
ZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgICog
cnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1
cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoK
KwogMjAyMC0wNS0yOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
R2FyZGVuaW5nOiBBZGQgYW4gYXNzZXJ0Tm9FeGNlcHRpb24oKSB0byBwbGFjYXRlIHRoZSBleGNl
cHRpb24gY2hlY2tlciBhbmQgZ3JlZW4gdGhlIGJvdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggOTFhNmUzYTFiMDQwZTBhZWZlY2Q5MzUzMjdmZGFkNmU5MjEzMzlkNC4u
YThmNmRjOWYyYzcyMDBmOGNhYzRhMmQxZDI0YTVmZWQ2ZDVlOGFiMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQwLDYgKzU0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAg
IGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3Mu
aAorICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2Ft
cGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzZTgyMGVhZjM4MGNkYzdj
YzRlNDBhOGNjZjMxZmQzZGExNWJmNGQuLjFlMmU0MTE4NjdiZjU5ZWUxZDZlOTUzZmE2NTQ4ZWU2
YTUyN2Q2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDYgKzEyNTAs
NyBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0
QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAv
KiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1
RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVO
YW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyog
SlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThB
MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMTQsNiArNDExNSw4IEBACiAJCTg2NzA0QjgxMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclBhdHRlcm4u
Y3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0geWFyci9ZYXJy
UGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNjIzNDY0NTBC
MDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeVZhbEZsYWdz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZG
MyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhE
NDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4
ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBh
dGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQwMCw2ICs4NDAzLDggQEAKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4
NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCisJCQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8q
IFB1dEJ5VmFsRmxhZ3MuY3BwICovLAorCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtp
bmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNl
cy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVz
ZXMuaCAqLywKQEAgLTEwMTQ4LDYgKzEwMTUzLDcgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAz
MUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0
QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDJlOTVmYjVmOGQzOGIxZTI5YzUxM2I2ZmMwYzgyNWJlZDVkMGIyNDIuLjZjYWU0ZDRiZTA4MWZj
MmY0NTBkOTUxYWRlZWE3NzEyYzAxYmJkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
QEAgLTI2OCw2ICsyNjgsNyBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0
ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMmNmNjE5ZDI4ZGUzNjU1MWM0MGJlMjQyZmI0OTQ3
ZmZhOGI0MmFlMy4uNzQ1NDg4YmVkYTA0MWVhNzlhOTNjMTVmNDdlOGY0YzQyNjM5OWE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTY5
LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGls
ZVN0cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0
cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBc
Ci0gICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlvbikgCisgICAgbWFjcm8oaGFzT3duUHJv
cGVydHlGdW5jdGlvbikgXAorICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVz
cGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5h
bWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBs
IG5hbWUjI1N5bWJvbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCmluZGV4IDBiZDZhMDdmZmIwZTMxNzk1ZjE0NmJhNDg1NDFhYmM1ZTU4ZTJiZTgu
LmQzZTY3OGI1MmQzM2MzZWQ2OWNmY2ZjYWY4MzM0N2ZmZGQyNWExOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDksNiArNDksNyBA
QCB0eXBlcyBbCiAgICAgOlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9m
ZnNldCwKICAgICA6UHV0QnlJZEZsYWdzLAorICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNv
bHZlVHlwZSwKICAgICA6U3RydWN0dXJlLAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU1MCw2ICs1
NTEsMTkgQEAgb3AgOmdldF9ieV92YWwsCiAgICAgICAgIHNlZW5JZGVudGlmaWVyczogR2V0QnlW
YWxIaXN0b3J5LAogICAgIH0KIAorb3AgOmdldF9wcml2YXRlX25hbWUsCisgICAgYXJnczogewor
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0
YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBzdHJ1Y3R1
cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIHBy
b3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAog
ICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTc1LDcgKzU4
OSw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lz
dGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTog
VmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCisgICAgICAgIGZs
YWdzOiBQdXRCeVZhbEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCBhMzE5MGYyZGQ1ZDNiNmQyZmRiY2VmOGUw
MjBmZWIzY2ZjNzU4NTA0Li5iMGYyZTgwMmQ3MjdjN2Y4ZTMyOTRjMTU1YjkxY2IyYzhkYmU5ZTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKQEAgLTIxMyw2ICsyMTMsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVT
RVMoT3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVT
RVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VT
KE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwg
YmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAg
IFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFs
dWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC00MjgsNiAr
NDI5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51
bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wSW5zdGFuY2VvZiwg
ZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5
VmFsLCBkc3QpCisgICAgREVGUyhPcEdldFByaXZhdGVOYW1lLCBkc3QpCiAgICAgREVGUyhPcFR5
cGVvZiwgZHN0KQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3QpCiAgICAg
REVGUyhPcElzRW1wdHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNWE5Mzg0MDczMTY2MDdkMmYxNmVlNmQ2ZjA3YzE2NDViY2M1Nzhm
NS4uM2QwZTU3NmJiZjQ2ZTlkM2E0Y2FlNmRkMGQzMWU3NzI3N2IzOTIxYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyNTEsNiArMTI1MSwx
OSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CiAgICAgICAgIH0pOwogCisgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BHZXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewor
ICAgICAgICAgICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7
CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0
dXJlSUQ7CisKKyAgICAgICAgICAgIGlmICgoIXByb3BlcnR5IHx8IHZtLmhlYXAuaXNNYXJrZWQo
cHJvcGVydHkpKSAmJiAoIXN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2xlYXJpbmcgTExJbnQgcHJpdmF0ZSBwcm9wZXJ0eSBhY2Nlc3MuIik7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAg
fSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dEJ5SWQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCmluZGV4IDBkOTU3MDkyNmFiMTQ3Mzc4ZWMzMTcyODM4ZGIyMzU4ODJkYjdi
Y2QuLjM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgyYmY2YjhhMGFhZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9w
Y29kZVNpemUuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRl
ICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1Niw2ICsyNTcsNDcgQEAgc3RydWN0IEZp
dHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5
SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVj
bWFNb2RlKTsKICAgICB9CiB9OworCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3Qg
Rml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVu
YW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5VmFsRmxh
Z3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVtLCBlbmNvZGVkIGFzOgorICAgIC8vICAg
ICAgICAgIGlzU3RyaWN0CisgICAgLy8gICAgICAgICAgICAgdgorICAgIC8vICAgICAwMDAwfDAw
fDB8MCA8IGlzRGlyZWN0CisgICAgLy8gICAgICAgICAgIF4KKyAgICAvLyAgICBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9IFB1dCwgMiA9IENyZWF0ZSB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgc19pc1N0cmljdEJpdCA9IDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRl
RmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1
dEJ5VmFsRmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBz
dGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCisgICAgeworICAg
ICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3Qo
KSk7CisgICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAgICAgICBhdXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkp
OworICAgICAgICByZXR1cm4gKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPDwgc19wcml2YXRlRmll
bGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQor
CisgICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7
CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGly
ZWN0Qml0KTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAm
IHNfaXNTdHJpY3RCaXQpOworICAgICAgICBhdXRvIGFjY2VzcyA9IHN0YXRpY19jYXN0PFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+
PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUg
PSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAg
ICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lID8KKyAg
ICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2Rl
KSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSkgOgorICAgICAgICAgICAgYWNjZXNz
ID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1
dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2
YXRlRmllbGQoZWNtYU1vZGUpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9w
Y29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6
ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+
PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1
c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4
IGU0ZGM5NWNiMGEyNjk5NTE2NmUwNjZmNGU1ZGI1ZDU3ZTc2OGIxZDAuLjFiMDcwMGRmNjc1NWMy
YzU2N2ZiODU3OTFlMDZlZWNjNDJlYTBlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMTA1LDYgKzEwNSw3IEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYo
Y2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uLCBu
dWxscHRyKSBcCisgICAgdihjcmVhdGVQcml2YXRlU3ltYm9sLCBudWxscHRyKSBcCiAKIAogI2Rl
ZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQ
cmludGVyLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0
cmluZ1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFn
cyBmbGFncykKK3sKKyAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBpZiAoZmxhZ3Mu
aXNEaXJlY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7CisgICAgaWYg
KGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIlBy
aXZhdGVGaWVsZCtQdXQiKTsKKyAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY1ZmZkNzk3ZjY1ODc4NzljMGMzMjE1OWM5NjUwMjgyODJhMzlm
Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2VudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA6IHVpbnQ4X3Qgewor
ICAgIE5vbmUsCisgICAgUHV0LAorICAgIENyZWF0ZSwKK307CisKK2NsYXNzIFB1dEJ5VmFsRmxh
Z3MgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGUo
RUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhm
YWxzZSwgZWNtYU1vZGUpOworICAgIH0KKworICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFu
cyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQorICAg
IC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3RleHByIHN0YXRpYyBQ
dXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICBj
b25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKEVD
TUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZhdGVGaWVsZChFQ01BTW9k
ZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOworICAgIH0KKworICAgIGJvb2wgaXNEaXJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9CisgICAgRUNNQU1vZGUgZWNtYU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9CisgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpO
b25lOyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQ7IH0KKyAg
ICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZTsgfQorCitwcml2YXRl
OgorCisgICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUg
ZWNtYU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKKyAgICAgICAgLCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAgICAg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIg
UHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2VzcywgRUNNQU1vZGUgZWNt
YU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQorICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZChhY2Nlc3MpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAg
ICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0OworICAgIFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOworICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFBy
aW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5
VmFsRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0S2luZC5oCmluZGV4IDYxMTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1YzhhZjY0ODA4
MGM0YzYuLmY5MGQ1MjlkMmFlYmIzY2Q5NWM4YjQ1N2I2NDhiNWY3NGI4ZmIxM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QgfTsKK2Vu
dW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUs
IERpcmVjdFByaXZhdGVGaWVsZFB1dCB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCmluZGV4IGJjZjdkM2FkODVlYjFmY2ZkNDFmYjdmODkxMDIyZWI5Yjdm
ZDdkNTcuLjQ2MWQ5ZmFkZDQ4YjM1YmM5NGVkZDYxMGI3Mzg3Y2VhOTAyYzE0ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIEFT
U0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7CiAgICAg
VmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IGV4ZWN1dGFi
bGUtPmluc3RhbmNlRmllbGRMb2NhdGlvbnMoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rp
b25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgIHZtLCBzb3Vy
Y2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1v
ZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpOworICAgICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhl
Y3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBu
dWxscHRyLCBudWxscHRyLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGlmICghZnVu
Y3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGE4MDU1MDhiZjczN2UxMTQ1MjE1ZjVhMjU3ZjFmMmM2NjU3MjA5MTMuLmVjOGRiNzc0
ZTllYzU5OGYyODZmYjU0NzM1ZTI3ZWQyMDc0ZWVlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0x
ODkyLDYgKzE4OTIsMTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhp
Y2FsVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGwKIAogICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgOiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZChO
b0xvY2tpbmdOZWNlc3NhcnksIGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkpOworCisgICAgICAg
ICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4g
YSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjYzCisgICAg
ICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICAgICAgICAg
IHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI2OTMsOSArMjY5
OCwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAg
IE9wR2V0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
cmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBw
cm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3Qo
ZWNtYU1vZGUoKSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjcxNyw2ICsyNzI4LDE4
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChS
ZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7Cisg
ICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1
dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgpKSk7CisgICAg
cmV0dXJuIHZhbHVlOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBy
aXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpCit7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChl
Y21hTW9kZSgpKSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46
OmVtaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNGIxZWZiODlkNjA4N2E0YmYwMzk1YTYxYTJi
YmNjYmZiYzE1NTBlNS4uNzc0MjUzMTU0MmU0MTRkYjgzYjk0MDU1NzY5MWNjY2QzNTk1MWU2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtODEwLDExICs4MTAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlW
YWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50
ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCog
dmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lk
IGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJF
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAxYWZjMmU0YmJjYTJmYmQ5NmZmYjIyNjM0NzEwNjAxZDRlNTcyYWY0
Li5iOWM3MjljMTI0ZjBmMDViNzdlN2JlZjQ3NDFmZjFkOTU2ZjViY2IwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01
NDQsMTEgKzU0NCwzMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3QoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUoKSwgaG9tZU9iamVjdCk7CiB9CiAKK3ZvaWQgUHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzY29wZSkKK3sKKyAgICAvLyBXYWxrIHRoZSBs
aXN0IGFuZCBkZWNsYXJlIGFueSBQcml2YXRlIHByb3BlcnR5IG5hbWVzIChlLmcuIGAjZm9vYCkg
aW4gdGhlIHByb3ZpZGVkIHNjb3BlLgorICAgIGZvciAoUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRo
aXM7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgY29uc3QgUHJvcGVydHlOb2RlJiBub2Rl
ID0gKnAtPm1fbm9kZTsKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQ
cml2YXRlKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5
bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAwKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN5bWJvbCA9IGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdl
dCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmd1
bWVudHMsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIERlYnVnZ2FibGVDYWxs
OjpObyk7CisKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgq
bm9kZS5uYW1lKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3Bl
LCB2YXIsIHN5bWJvbC5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9u
TW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9CisKIFJlZ2lz
dGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90
b3R5cGUsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7
Ci0gICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUg
cHJvcGVydGllcy4KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKICAgICBSZWdpc3Rl
cklEKiBkc3QgPSBudWxscHRyOworCisgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBo
YW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KICAgICBmb3IgKDsgcCAmJiAocC0+bV9u
b2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkgewog
ICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90
b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCkBAIC03MTAsNiArNzI5LDkgQEAgUmVnaXN0ZXJJ
RCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQ
cm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmos
IFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBhcmUgaGFuZGxl
ZCBpbiB0aGUgc3ludGhldGljIGluc3RhbmNlRmllbGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90
IGhlcmUuCisgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUp
KTsKKwogICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZ2VuZXJhdG9yLnNob3VsZFNl
dEZ1bmN0aW9uTmFtZShub2RlLm1fYXNzaWduKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wZXJ0eU5hbWU7CkBAIC04NDAsMTYgKzg2Miw2NiBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cgogICAgIH0KIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKGJh
c2VJc1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5l
cmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOwot
ICAgIH0gZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0
LmdldCgpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBlbWl0
R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSk7
CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdC5nZXQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQogCitSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJ
RD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUg
c3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUu
Z2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFt
ZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAg
ICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5l
bnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBi
YXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJRCog
QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1ZShn
ZW5lcmF0b3IsIGRzdCwgYmFzZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURv
dE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlz
VmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBp
biBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFs
dWUpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAg
aWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJl
VGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIHRoaXNW
YWx1ZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZSwgbV9pZGVudCwgdmFsdWUpOworfQorCitSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3Is
IGJhc2UsIHZhbHVlLCB0aGlzVmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQXJndW1lbnRMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBSZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMTczNCwxMSArMTgwNiw5IEBA
IFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE9wdGlv
bmFsQ2hlY2soY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7CiAgICAgfQogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGlmIChiYXNlSXNTdXBlcikgewot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJCYXNlID0gZW1pdFN1cGVyQmFzZUZvckNh
bGxlZShnZW5lcmF0b3IpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24u
Z2V0KCksIHN1cGVyQmFzZS5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9p
ZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlv
bi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CisKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNh
bGxlZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKTsKKyAgICBlbWl0
R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZ1bmN0aW9uLmdldCgpLCBiYXNlLmdldCgpKTsK
IAogICAgIGlmIChpc09wdGlvbmFsQ2hhaW5CYXNlKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
T3B0aW9uYWxDaGVjayhmdW5jdGlvbi5nZXQoKSk7CkBAIC0yMTExLDYgKzIxODEsMjIgQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGJhc2VOb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFj
Y2Vzc29yLT5kaXZvdEVuZCgpKTsKKworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTmFt
ZSgpKSB7CisgICAgICAgIEFTU0VSVCghYmFzZUlzU3VwZXIpOworICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdl
dCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhn
ZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1f
b3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0
ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZh
bHVlLmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKQEAg
LTIzMzQsNiArMjQyMCwyMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5k
aXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2
YWx1ZTsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBB
U1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwg
c2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIHZhbHVl
ID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgp
LCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZh
bHVlLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0Lmdl
dCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlm
IChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkgewogICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0
b3IuZW5zdXJlVGhpcygpOwpAQCAtMzE3NiwxMSArMzI3Nyw3IEBAIFJlZ2lzdGVySUQqIEFzc2ln
bkRvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9k
ZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/
IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
cmVzdWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9k
ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
dGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZv
cndhcmRSZXN1bHQuZ2V0KCkpOworICAgIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2Uu
Z2V0KCksIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUoZm9yd2FyZFJlc3VsdC5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKIH0KQEAgLTMx
OTIsMjMgKzMyODksMTUgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2Us
IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3Vi
ZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7Ci0gICAgaWYg
KG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOwotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwg
bV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2Vu
ZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNW
YWx1ZSk7CisKICAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFz
c2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVl
LmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhS
ZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsK
IAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1fYmFzZS0+aXNT
dXBlck5vZGUoKSkKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0
KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAgICBlbHNlCi0g
ICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1
cGRhdGVkVmFsdWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXQgPSBlbWl0UHV0UHJvcGVy
dHkoZ2VuZXJhdG9yLCBiYXNlLmdldCgpLCB1cGRhdGVkVmFsdWUsIHRoaXNWYWx1ZSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmV0LmdldCgpOwogfQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURv
dE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2NzEsNiArNDc2
MCwxNyBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxE
ZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5TmFtZS5nZXQo
KSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9w
ZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlIHwg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3NpdGlvbik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0
ZU5hbWU6IHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCptX2lk
ZW50KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRl
IEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24o
KSwgcG9zaXRpb24oKSArIG1faWRlbnQtPmxlbmd0aCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFt
ZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdERlZmluZVByaXZhdGVGaWVsZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVy
KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7CiAgICAg
ICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMK
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMz
MApAQCAtNDY4MSw3ICs0NzgxLDcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJDb21wdXRlZCBuYW1lcyBtdXN0IGJlIHN0
b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyAxKTsKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1l
LmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRpb24s
IG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CkBAIC00NzczLDYgKzQ4NzMsOCBAQCBS
ZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3Rv
dHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CiAKICAgICBpZiAo
bV9jbGFzc0VsZW1lbnRzKSB7CisgICAgICAgIG1fY2xhc3NFbGVtZW50cy0+ZW1pdERlY2xhcmVQ
cml2YXRlRmllbGROYW1lcyhnZW5lcmF0b3IsIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCkpOwor
CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gaW5zdGFuY2VGaWVsZExvY2F0aW9uczsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVDbGFzc0VsZW1lbnRzKG1fY2xhc3NFbGVtZW50
cywgY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgaW5zdGFuY2VGaWVsZExvY2F0
aW9ucyk7CiAgICAgICAgIGlmICghaW5zdGFuY2VGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggZjA0MGQ4ZDM5MWU2ODM3MTc2ZGYwMjA1MTBiMmE3YWE4ZmRjMmYwNC4uM2E0YmYxNWE2NWY2
OWIwZGEzNGE1YzQzNjFlOTA1NzA3MDZjMWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5j
bHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTEyNjUsNiArMTI2NiwxOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0ZWNv
ZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Cit9CisKK3RlbXBsYXRlPD4K
K0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBieXRlY29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpOworfQorCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJnZXRh
YmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChieXRl
Y29kZUluZGV4KTsKQEAgLTgyMzUsNyArODI0OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRl
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAg
ICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVl
LCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBieXRlY29kZS5tX2VjbWFN
b2RlKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRp
Zmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgs
IGVjbWFNb2RlKGJ5dGVjb2RlKSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJ
ZCkgewpAQCAtODI0Niw3ICs4MjU5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRy
KTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9H
cmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7
CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGly
ZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oZWNtYU1v
ZGUoYnl0ZWNvZGUpKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFu
ZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQg
c3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBh
MWFlM2UzYzlmY2UxNjg4M2EyODBjODE2OWU0ZmJiYjE2OWE3NjExLi4xMjEyZDQwN2I0ZmNjNjc4
ZjMyYzY3YjM3NDYxMmY5ZjdkNjg3ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTgsNiArMjk4LDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEkKIAogICAgIGNhc2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJh
dG9yX2ZyYW1lX2Vudmlyb25tZW50OgorICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZTogLy8g
RklYTUU6IG9wX2dldF9wcml2YXRlX25hbWUgd2lsbCBuZWVkIERGRy9GVEwgc3VwcG9ydCB0byBz
aGlwIGNsYXNzIGZpZWxkcy4KICAgICBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAg
Y2FzZSBsbGludF9ldmFsX3Byb2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfbW9kdWxlX3Byb2dyYW1f
cHJvbG9ndWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDQxNjc4MjhiYjdjMjg4Zjc4YmRmNDRhMmY2NjZmNzEwYjE0MDM5NzEuLjA4
MTY2NzJkZTg3YzVhZTBiNTdmZjMzMmI5NTlkNTIyNzU2ZTMwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDM3MSw3ICsxNDM3
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNl
ZFJlZ2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRL
aW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
MTZkZmNhMjNjNDg0YTIxNTk4NzFiNWM5NTE1MDEwYjQ4OGQzMGEzNS4uMjE1NDBkOTViMTQ0MWE1
OWYyOTkxODAxMzk4ZjQyMDE2YTkyNTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDIwNCw3ICs0MjA0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpw
YXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
bm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgppbmRleCA5NGRlMzhjYjcxNjc4YWQ4NmFiYWM2YjdjNjI4NzljMTZiMTBj
ODMxLi5kOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQxLDYgKzE0MSw3IEBAIG1vZHVsZSBE
U0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmgKaW5kZXggOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0
OS4uOTZjMTlhMTdiZGMyYTdkMTBmMTVmOWJjYTM5MDIxNjIxYzk5ZGI4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3Jv
KE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KSBcCisgICAgbWFjcm8oT3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUpIFwKKyAgICBt
YWNybyhPcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSkg
XAogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJl
cGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCAyNjQ4NTRjNjY1ZWNkZmRiMGQ5Y2UxZTRiMDdmN2UzY2Jk
ZmJjMjcwLi41MTYwODMwNzlmZTgzOTgyNzA5ODMxNDE2NzE3OWMzODQxZjIxZWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yOTIsNiArMjkyLDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXNoX3dpdGhfc2Nv
cGUpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQog
ICAgICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX3dpdGhfdGhpcykKKyAgICAgICAgREVG
SU5FX1NMT1dfT1AoZ2V0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0
X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X3ZhbF93aXRo
X3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5n
X2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNDAwZWU2MzRk
MzFiNzE3ZDk5N2MxYmMyODRiYzA4YmUxMzM5NDk3OS4uMjc1NTdiM2IwNjc4ZDc5NDM1ZmU5NThk
ZDc4MDU3NTEwZGNlZWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00MDEsNyArNDAx
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAg
ICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CiAKLSAgICAgICAgLy8gSWRlbnRpZmllciBj
aGVjayBoZWxwZXIgZm9yIFB1dEJ5VmFsLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
KyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOworCisgICAgICAgIC8vIERldGVybWluZXMg
dGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworCisgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sg
aGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFs
SWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggNTQ4NTgzOTBlZmI3YjM2YjRmOGU5ZWY4ZmNl
Y2YxOGMwOWU0MjBiMy4uMjM2ODMwNDVmMWZkMWY2YWE0NWU2MWQ2Mzg5YWVmMWZjMjgyMDFlNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDExIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAg
RUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoCi0gICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQotICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1
dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAg
ICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5k
KQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9
CkBAIC0xNTIsNiArMTUyLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgeworICAg
ICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFN
b2RlLmlzU3RyaWN0KCkpOworICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAg
fQorCiAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAobV9wdXRL
aW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggOTc2ZjcxYmJhYWM5MWQ5M2U2MDcwNjc3OTZjNmM1
MjRlMDQ5ZDVmZC4uNzMyOWQ2YjczODE0ZDZjNGJhNTUyYTU4OTNlNzJiMDIxZTZhNTEyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1
dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJT
ZXQuaCIKIApAQCAtMTMwLDExICsxMzEsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKKyAgICAgICAg
LCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkK
ICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwg
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKICAgICAKICAgICB2b2lkIGdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0Myw2ICsxNDUsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAgUHV0S2lu
ZCBtX3B1dEtpbmQ7CisgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CmluZGV4IDliNmMwNTI0OGJhMjkyOTZmOTllZDM3NmZiOTQ4MjhmYmM5MzNjYmYuLmQ1M2U2OTc3
ZDM5ZDc1OWU2NzQxMmZkOWFkMWI5ZTY3ODJiOTdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCkBAIC02ODYsNiArNjg2LDM2IEBAIEFMV0FZU19JTkxJTkUgQmluYXJ5
QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQog
ICAgIHJldHVybiBhcml0aFByb2ZpbGU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wPgorQUxX
QVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlKE9wIG9wKQoreworICAgIHJldHVybiBv
cC5tX2VjbWFNb2RlOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJ
VDo6ZWNtYU1vZGU8T3BQdXRCeUlkPihPcFB1dEJ5SWQgb3ApCit7CisgICAgcmV0dXJuIG9wLm1f
ZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9k
ZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCit7
CisgICAgcmV0dXJuIG9wLm1fZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgT3A+CitQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChPcCkKK3sKKyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsKK30KKwor
dGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9w
KQoreworICAgIHJldHVybiBvcC5tX2ZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggM2E0MWU3NjJlYzhkODNj
YzQyYWNlMWQxM2IyZDQ3OTYyYjQ2NzU3NS4uM2RlODQyNTNiYzJmZTEyMWRjZTM1MTEwNjMwYzVl
MzAyNGMyM2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC02OTcsNiArNjk3LDExNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAg
ICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3Ry
dWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKK30gLy8g
ZXh0ZXJuICJDIgorCit1c2luZyBQdXRQcml2YXRlRmllbGRDYWxsYmFjayA9IHN0ZDo6ZnVuY3Rp
b248dm9pZChWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSosIFB1dFByb3BlcnR5U2xvdCYsIGNv
bnN0IElkZW50aWZpZXImKT47CitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dFByaXZhdGVG
aWVsZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sg
PSBQdXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRl
TmFtZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Cisg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwor
CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2Nr
LT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHB1dFNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNr
KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxs
YmFjaygpKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVy
LnVpZCgpKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworCisgICAgUHV0UHJvcGVydHlTbG90
IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsK
KyAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBpZGVudCwg
dmFsdWUsIHB1dFNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKHZtLCBjb2RlQmxvY2ssIG9s
ZFN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitleHRlcm4gIkMiIHsKKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qg
cmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIGRlZmluZVByaXZh
dGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmll
ciwgdmFsdWUpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmlu
ZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0Jp
dHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworCisg
ICAgZGVmaW5lUHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9i
amVjdCwgaWRlbnRpZmllciwgdmFsdWUsIFs9XShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0
LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOwor
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOworCisgICAgICAgIGlmIChz
dHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBp
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpz
dHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICB9KTsKK30KKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3
Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworCisg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVs
ZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFs
dWUpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7
CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZp
ZXIpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwg
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBb
Jl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkRmll
bGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNs
b3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vz
c1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpKTsKKworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZt
LCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBh
dGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0
dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFB1
dCk7CisgICAgfSk7Cit9CisKIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1
ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKaW5kZXggOWVhM2NiZDkzNGViNDczNjk3MWQ2ZjllMWIyN2U3ODE4OGQ0
NjQxMC4uNjY3MDVlNDU5OGFmOTY3ZTA5MjA1MjY4NTgxNzU3YTk4N2JhYWY4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE4OCw2ICsxODgsMTAgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWIKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkTm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggZWE3MzFjMzAz
OTgxMWMwMjZjODU1OTljYTYwOTZiNjgyNmYzODZjMi4uY2RlM2ZkNTAxNGExNWU2NjRlYzEyYjQ4
YWU3ZWM5MDM0OTFjMzgxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFt
ZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBieXRlY29kZS5tX2VjbWFNb2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtp
bmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91
dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5j
b25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2Ug
Y29kZSBzaXplLgpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAg
ICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAg
ICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CisgICAgICAgIGVjbWFNb2RlID0gSklU
OjplY21hTW9kZShieXRlY29kZSk7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTY1
OCw4ICs2NTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUo
Ynl0ZWNvZGUpLAorICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmlu
ZGV4IGZjMmU0NGQ3OTJhYWYwNDI4ZjIzMGFlZmRmOTY2NDgzZjRlZDliOGYuLmViYzYzZDE2ZTY5
M2ZiMDU2ZWYwNmMxNmMwY2FkZjZhNzQyZjU2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDQzLDYgKzQ0Myw0
OCBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVj
b2RlLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlKQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBPcD4KK0pJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0
QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxl
SWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBz
bG93Q2FzZXMpCit7CisgICAgLy8gYmFzZTogdGFnKHJlZ1QxKSwgcGF5bG9hZChyZWdUMCkKKyAg
ICAvLyBwcm9wZXJ0eTogdGFnKHJlZ1QzKSwgcGF5bG9hZChyZWdUMikKKworICAgIFZpcnR1YWxS
ZWdpc3RlciBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1
ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7CisKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90
Q2VsbChyZWdUMykpOworICAgIGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhyZWdUMiwgcmVnVDIs
IHByb3BlcnR5TmFtZSwgc2xvd0Nhc2VzKTsKKworICAgIC8vIFdyaXRlIGJhcnJpZXIgYnJlYWtz
IHRoZSByZWdpc3RlcnMuIFNvIGFmdGVyIGlzc3VpbmcgdGhlIHdyaXRlIGJhcnJpZXIsCisgICAg
Ly8gcmVsb2FkIHRoZSByZWdpc3RlcnMuCisgICAgLy8KKyAgICAvLyBJQyBjYW4gd3JpdGUgbmV3
IFN0cnVjdHVyZSB3aXRob3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCisgICAg
Ly8gV2UgYXJlIGVtaXR0aW5nIHdyaXRlLWJhcnJpZXIgYmVmb3JlIHdyaXRpbmcgaGVyZSBidXQg
dGhpcyBpcyBPSyBzaW5jZSAzMmJpdCBKU0MgZG9lcyBub3QgaGF2ZSBjb25jdXJyZW50IEdDLgor
ICAgIC8vIEZJWE1FOiBVc2UgVW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBl
ZmZlY3RpdmVseSB0byByZWR1Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2Us
IFNob3VsZEZpbHRlckJhc2UpOworICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlLCByZWdUMCk7Cisg
ICAgZW1pdExvYWQodmFsdWUsIHJlZ1QzLCByZWdUMik7CisKKyAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFN
b2RlKGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkp
OworICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBkb25lQ2FzZXMuYXBwZW5k
KGp1bXAoKSk7CisKKyAgICBMYWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBnZW4u
c2xvd1BhdGhKdW1wKCkubGluayh0aGlzKTsKKworICAgIC8vIEpJVFB1dEJ5SWRHZW5lcmF0b3Ig
b25seSBwcmVzZXJ2ZSB0aGUgdmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2UgaGF2ZSB0
byByZWxvYWQgdGhlIHRhZy4KKyAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7CisKKyAgICBD
YWxsIGNhbGwgPSBjYWxsT3BlcmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJs
b2NrLT5nbG9iYWxPYmplY3QoKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCBy
ZWdUMiksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkp
OworICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAg
ZG9uZUNhc2VzLmFwcGVuZChqdW1wKCkpOworCisgICAgcmV0dXJuIGdlbjsKK30KKwogdm9pZCBK
SVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBi
b29sIGlzRGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9i
eV92YWxfZGlyZWN0OwpAQCAtNDU1LDcgKzQ5Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9w
dXRfYnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
CiAgICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0
ZWNvZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAg
ICAgICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CisgICAgICAgIGVjbWFNb2RlID0g
SklUOjplY21hTW9kZShieXRlY29kZSk7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAg
LTY2NCw3ICs3MDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlk
ZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9j
aywgKmlkZW50KSwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgcmVnVDEs
IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGIxN2VjNzI0YjYxZWIxMTBiNDIy
NzgzMGQyYTJkMGUyYjI2ODgyZWMuLjQ0YmJhZmEwZmI5NTg3OWI4ODMxYWJkNmEzNTA5MzA0YWFk
ODA2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTIwLDYgKzUy
MCwxMCBAQCBzdGF0aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29u
c3QgUHV0UHJvcGVydHlTbG90ICZzbG90LCBQdXRLaQogICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKSB7CiAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBE
aXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0
QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGly
ZWN0UHJpdmF0ZUZpZWxkUHV0KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlRmllbGRTdHJpY3Q7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3Ry
aWN0OwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC01MzIsNiArNTM2LDEw
IEBAIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25z
dCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkp
IHsKICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAgICAgaWYgKHB1dEtpbmQg
PT0gRGlyZWN0KQpAQCAtNjI1LDYgKzYzMyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0
cnlDYWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAg
ICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90
b3R5cGVBY2Nlc3NDaGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCBjb25kaXRpb25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGly
ZWN0KSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwdXRLaW5kICE9IERpcmVjdFByaXZh
dGVGaWVsZFB1dCAmJiBwdXRLaW5kICE9IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5n
KGdsb2JhbE9iamVjdCwgYmFzZUNlbGwsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNhY2hlU3RhdHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9u
Q2FjaGU7CkBAIC02NDIsNiArNjUxLDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZVB1dEJ5SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBp
ZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbmRpdGlvblNldCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29k
ZUJsb2NrLCBnbG9iYWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0s
IGNvZGVCbG9jaywgcHJvcGVydHlOYW1lLCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0
dXJlLCBjb25kaXRpb25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwg
c2xvdC5pc0NhY2hlYWJsZVNldHRlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDFmYzIzMjI4OTExYzg3
ZWJhZWFhYjQwYzc3NGM3MTZiY2JmNWMyZDUuLmM1MjNlOGE2MDA2ZGRjNTNkMjU5OWE0ZDI0YzZl
OTRiNTRkY2FkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF0
aXZlRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlBy
b3RvQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlNo
YWRvd0NoaWNrZW4uaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVDaGFpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKaW5kZXggMWQwNjE1YzcwMmY2MjFhMzEzMjZhZGQxMmI2NTUzZWY0MGY5ZDYzYy4uZDFm
ZDZlNjE1M2NjOGE4NTY4Y2NlZWYyNzllZmJjZjU3MDllMGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDcwLDYgKzEwNzAsNjQg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpCiAgICAgTExJTlRf
UkVUVVJOX1BST0ZJTEVEKGdldEJ5VmFsKHZtLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFz
ZVZhbHVlLCBzdWJzY3JpcHQsIGJ5dGVjb2RlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAg
ICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3By
b3BlcnR5KTsKKyAgICBBU1NFUlQoc3Vic2NyaXB0LmlzU3ltYm9sKCkpOworCisgICAgYmFzZVZh
bHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlL
ZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBBU1NF
UlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
KTsKKyAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0
LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBp
ZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNs
b3QuaXNVbnNldCgpKSB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoY29kZUJsb2NrKTsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYgKG9sZFN0
cnVjdHVyZUlEKSB7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1
Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmUqIGIgPSBiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoU3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90
b1dhdGNocG9pbnQoKS5nZXQoKSA9PSBiLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRj
aHBvaW50KCkuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFy
ZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwo
IkRldGVjdGVkIHBvbHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNl
bGwtPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgeworICAgICAg
ICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAg
ICAgICAgbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5t
X29mZnNldCA9IDA7CisKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNz
ZXNBcmVDYWNoZWFibGUoKSAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBv
aW50KCkpIHsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgLy8gIFVwZGF0ZSB0aGUgY2FjaGVkIHByaXZhdGUgc3ltYm9sCisgICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1
YnNjcmlwdC5hc0NlbGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZt
LmhlYXAud3JpdGVCYXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQoc2xvdC5nZXRWYWx1ZShnbG9iYWxP
YmplY3QsIHByb3BlcnR5KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfdmFsKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xMTExLDIwICsxMTY5LDQyIEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBK
U1ZhbHVlIHZhbHVlID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUg
PSBieXRlY29kZS5tX2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUg
PSBieXRlY29kZS5tX2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKKyAgICBib29sIGlzUHJp
dmF0ZUZpZWxkQWNjZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2Vzcygp
OwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNV
aW50MzJJbmRleCgpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwog
ICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwg
dmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXRE
aXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQog
CisgICAgaWYgKHN1YnNjcmlwdC5pc0RvdWJsZSgpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2
YXRlRmllbGRBY2Nlc3MpOworICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJz
Y3JpcHQuYXNEb3VibGUoKTsKKyAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOworICAgICAgICBpZiAoc3Vi
c2NyaXB0QXNEb3VibGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRB
c1VJbnQzMikpIHsKKyAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2Jh
bE9iamVjdCwgc3Vic2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXRE
aXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7Cisg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIERvbid0
IHB1dCB0byBhbiBvYmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1
dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAg
IGlmIChVTkxJS0VMWSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5E
KCk7CiAKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZp
ZWxkQWNjZXNzKTsKICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRl
eChwcm9wZXJ0eSkpCiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgaW5kZXgudmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdElu
ZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNl
IHsKKyAgICAgICAgaWYgKGlzUHJpdmF0ZUZpZWxkQWNjZXNzKSB7CisgICAgICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgICAgICAgICAg
aWYgKGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKKyAgICAgICAgICAgICAg
ICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
dmFsdWUsIHNsb3QpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJhc2VPYmpl
Y3QtPnB1dFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7
CisgICAgICAgICAgICBMTElOVF9FTkQoKTsgICAgCisgICAgICAgIH0KKwogICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21t
b25TbG93UGF0aHM6OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2Jq
ZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOGFkZWUxNmZiNWM5OTAwYTdiYjI4ZjQ3
MDA3NDZkNzRjMmZiZjQ3Yy4uOWE3NWY2NWNlZmFmNzllNTIwOThlNDk2ZGMxZDA0MDZiMjIyNmYx
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAg
LTcyLDYgKzcyLDcgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQp
OwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsKTsKK0xMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQppbmRleCA1N2UzOTgyYjgzOWVhZjllYTk4Y2Y0ODI5MGQ2MTQyMzIwNDRhNWE2Li4y
Y2VmYjM3Nzk3NjBhNWU4YWE0NGMwNWJkOWI3Y2M5ZDBlOTQ0MGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQpAQCAtMTUxOSw3ICsxNTE5LDYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQs
IE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQog
Ci0KIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWFjcm8gZmluaXNo
SW50R2V0QnlWYWwocmVzdWx0UGF5bG9hZCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBz
Y3JhdGNoKQpAQCAtMTU5Nyw2ICsxNTk2LDI5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0
X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAK
IGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFBy
aXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
KyAgICBtZXRhZGF0YSh0NSwgdDApCisKKyAgICAjIFNsb3cgcGF0aCBpZiB0aGUgcHJpdmF0ZSBm
aWVsZCBpcyBzdGFsZQorICAgIGdldChtX3Byb3BlcnR5LCB0MCkKKyAgICBsb2FkcCBPcEdldFBy
aXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQxCisgICAgYnBuZXEgdDEsIHQw
LCAub3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRp
IE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdl
dFByaXZhdGVOYW1lU2xvdykKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6
bV9vZmZzZXRbdDVdLCB0MgorICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQx
LCAub3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDIsIHQzLCB0MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1f
cHJvZmlsZSwgdDUsIHQwLCB0MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BHZXRQcml2YXRl
TmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVf
bmFtZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCisKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVO
YW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRh
KG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNGU1YThjMmI5ZDdhNmJhNTZkMjk2
ZWI4MjU0OTExMmEyMDQ5NWI1Zi4uZjI0MjlkZjJiZTk2ZTYxYjVlY2E1YWJiYTNlMWM4YzM4ODcy
Njg3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KQEAgLTE1NjUsNyArMTU2NSw2IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHV0X2J5X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBt
ZXRhZGF0CiAKIGVuZCkKIAotCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9w
R2V0QnlWYWwsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgIG1hY3JvIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1f
ZHN0LCBzY3JhdGNoKQpAQCAtMTY0OSw2ICsxNjQ4LDI5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1l
dGFkCiAKIGVuZCkKIAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBP
cEdldFByaXZhdGVOYW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKKyAgICBtZXRhZGF0YSh0MiwgdDApCisKKyAgICAjIFNsb3cgcGF0aCBpZiB0aGUgcHJp
dmF0ZSBmaWVsZCBpcyBzdGFsZQorICAgIGdldChtX3Byb3BlcnR5LCB0MCkKKyAgICBsb2FkcCBP
cEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0Ml0sIHQxCisgICAgYnBuZXEg
dDEsIHQwLCAub3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGdldChtX2Jhc2UsIHQwKQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0UHJpdmF0ZU5h
bWVTbG93KQorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCisgICAgbG9h
ZGkgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDJdLCB0MAorICAg
IGJpbmVxIHQwLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcEdldFBy
aXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQorICAgIGxvYWRQcm9wZXJ0eUF0
VmFyaWFibGVPZmZzZXQodDEsIHQzLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRl
TmFtZSwgbV9wcm9maWxlLCB0MiwgdDApCisgICAgcmV0dXJuKHQwKQorCisub3BHZXRQcml2YXRl
TmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVf
bmFtZSkKKyAgICBkaXNwYXRjaCgpCitlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFt
ZSwgb3Bjb2RlU3RydWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gs
IG1ldGFkYXRhLCByZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oCmluZGV4IDFhNDQ4YzI1NThmMmY1Zjk4ZmQyNjBlMmZlYzUzMDhhMzY4NWQ2ZmIuLmM0NDgx
YTk5ODU5MmMwZWY4NzJmYTI2ZTNlMzc5OWI4ZjQ4YzljMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVE
b3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
KiBwcm9wZXJ0eSwgRG90VHlwZSB0eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAg
ICB7CiAgICAgICAgIGlmIChiYXNlLT5pc1N1cGVyTm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1
cGVyUHJvcGVydHkoKTsKICAgICAgICAgCi0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9
IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJv
cGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJl
bmEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAg
ICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC02NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG5vZGUtPmlzQXNzaWdubWVudExvY2F0aW9uKCk7CiAgICAgfQogCisgICAg
Ym9vbCBpc1ByaXZhdGVMb2NhdGlvbihjb25zdCBFeHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5vZGUtPmlzUHJpdmF0ZUxvY2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9v
bCBpc09iamVjdExpdGVyYWwoY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBub2RlLT5pc09iamVjdExpdGVyYWwoKTsKQEAgLTE0MzgsMTIgKzE0NDMsMTIgQEAg
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRp
Y19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUq
IG5vZGUgPSBudWxscHRyOwogICAgIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+
aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1
YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmNhbGxQcml2YXRlTmFtZSgpKSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBj
YWxsT3JBcHBseUNoaWxkRGVwdGgpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5h
KSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
LCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNT
dXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0
IHRhdWdodCB0aGUgYnl0ZWNvZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZs
ZWN0LmFwcGx5IHlldC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA2NjguCiAgICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBz
dGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJS
ZWZsZWN0IikKLSAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0
aCk7CisgICAgICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90
LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlD
aGlsZERlcHRoKTsKICAgICB9IGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAKICAgICAg
ICAgJiYgZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Qcm9w
ZXJ0eQogICAgICAgICAmJiBhcmdzLT5tX2xpc3ROb2RlCkBAIC0xNDU2LDEwICsxNDYxLDEwIEBA
IEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uCiAgICAgICAgIC8vIDxyZXNvbHZlTm9kZT4uaGFzT3du
UHJvcGVydHkoPHJlc29sdmVOb2RlPikKICAgICAgICAgLy8gaS5lOgogICAgICAgICAvLyBvLmhh
c093blByb3BlcnR5KHApCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEhhc093
blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAg
ICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBl
KCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgfQogICAgIGlmICgh
bm9kZSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQp
OwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZv
dEVuZCgpLm9mZnNldCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CkBAIC0xNjAwLDcgKzE2MDUsNyBA
QCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3Rh
dGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obG9jKTsKIAogICAgIGlmIChvcCA9PSBPcGVyYXRv
cjo6RXF1YWwpCi0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhh
c0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMs
IGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CiAKICAgICBpZiAob3AgPT0gT3BlcmF0b3I6OkNv
YWxlc2NlRXEgfHwgb3AgPT0gT3BlcmF0b3I6Ok9yRXEgfHwgb3AgPT0gT3BlcmF0b3I6OkFuZEVx
KSB7CiAgICAgICAgIGF1dG8qIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFNob3J0Q2lyY3Vp
dFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVy
KCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKQEAg
LTE2MDgsNyArMTYxMyw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWdu
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KIAotICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQs
IGVuZCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVy
KCksIGRvdC0+dHlwZSgpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3Rh
cnQsIGVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBk
b3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggOTE3MTc4OTZlNDQ0ODViZWI3OTQwNzA4MGJl
MjZmOWIzMzk4YTllZC4uMzY0OGE0NDg0M2I3MmNlOTg1MTcxNzUzMGZmNTA2ZWM2YThiODE5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTk0NSwxMCArOTQ1LDEx
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9
PSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50
ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisKKyAgICBib29sIGlzUHJpdmF0
ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOworICAgIGJvb2wgaXNCdWlsdGluTmFtZSA9IG1fY3Vy
cmVudCA9PSAnQCcgJiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogICAgIGJvb2wgaXNXZWxs
S25vd25TeW1ib2wgPSBmYWxzZTsKLSAgICBpZiAoaXNQcml2YXRlTmFtZSkgeworICAgIGlmIChp
c0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24p
OwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdAJykgewpAQCAt
OTU2LDggKzk1NywxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGNvbnN0IExDaGFyKiBpZGVudGlm
aWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkK
KyAgICAgICAgc2hpZnQoKTsKKwogICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSB8
fCBtX2N1cnJlbnQgPT0gJ1xcJyk7CiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkp
CiAgICAgICAgIHNoaWZ0KCk7CkBAIC05NjksNyArOTc0LDggQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hh
cj46OnAKICAgICAKICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdC
dWlsdGluRnVuY3Rpb24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50
U291cmNlUHRyKCkgLSBpZGVudGlmaWVyU3RhcnQ7Ci0gICAgICAgIGlmIChtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb24gJiYgaXNQcml2YXRlTmFtZSkgeworICAgICAgICBpZGVudCA9IG1ha2VJZGVu
dGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CisgICAgICAgIGlmICht
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb24gJiYgaXNCdWlsdGluTmFtZSkgewogICAgICAgICAgICAg
aWYgKGlzV2VsbEtub3duU3ltYm9sKQogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEt
Pm1ha2VJZGVudGlmaWVyKG1fdm0sIG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
bG9va1VwV2VsbEtub3duU3ltYm9sKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCkp
OwogICAgICAgICAgICAgZWxzZQpAQCAtOTkxLDIwICs5OTcsMjEgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxM
Q2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7
CiAKLSAgICBpZiAoVU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4
ZXJGbGFncy5jb250YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlz
UHJpdmF0ZU5hbWUpIHsKKyAgICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklW
QVRFTkFNRSA6IElERU5UOworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVk
V29yZHMpKSAmJiAhaXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewog
ICAgICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUu
ZW50cnkoKmlkZW50KTsKICAgICAgICAgICAgIEFTU0VSVCgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpIHx8ICFlbnRyeSk7CiAgICAgICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAg
ICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAg
ICAgICAgICAgSlNUb2tlblR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50
cnktPmxleGVyVmFsdWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVE
X0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogSURFTlQ7CisgICAgICAgICAgICBy
ZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2Vu
IDogaWRlbnRUeXBlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAg
cmV0dXJuIGlkZW50VHlwZTsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJu
IGlkZW50VHlwZTsKIH0KIAogdGVtcGxhdGUgPD4KQEAgLTEwMjEsNyArMTAyOCwxMiBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPFVDaGFyPjo6cAogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZh
dGVOYW1lID0gbV9jdXJyZW50ID09ICcjJzsKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0
YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOworCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAg
ICAgIHNoaWZ0KCk7CisKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQoaXNT
aW5nbGVDaGFyYWN0ZXJJZGVudFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FURSht
X2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNTaW5nbGVDaGFy
YWN0ZXJJZGVudFBhcnQobV9jdXJyZW50KSkgewpAQCAtMTA0NSw2ICsxMDU3LDkgQEAgdGVtcGxh
dGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlw
ZSBMZXhlcjxVQ2hhcj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9
IG51bGxwdHI7CiAgICAgCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHJldHVybiBQ
UklWQVRFTkFNRTsKKwogICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29y
ZHMpKSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAg
IGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewpAQCAtMTA2OSw2ICsxMDg0LDE0IEBA
IEpTVG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2Fz
ZShKU1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgQVNTRVJUKG1fYnVmZmVyMTYuaXNFbXB0eSgp
KTsKICAgICBBU1NFUlQoIXRva2VuRGF0YS0+ZXNjYXBlZCk7CiAKKyAgICBhdXRvIGlkZW50Q2hh
cnNTdGFydCA9IGlkZW50aWZpZXJTdGFydDsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSAqaWRl
bnRpZmllclN0YXJ0ID09ICcjJzsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgKytp
ZGVudENoYXJzU3RhcnQ7CisKKyAgICBKU1Rva2VuVHlwZSBpZGVudFR5cGUgPSBpc1ByaXZhdGVO
YW1lID8gUFJJVkFURU5BTUUgOiBJREVOVDsKKyAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUgfHwg
aWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSk7CisKICAgICBhdXRvIGZpbGxC
dWZmZXIgPSBbJl0gKGJvb2wgaXNTdGFydCA9IGZhbHNlKSB7CiAgICAgICAgIC8vIFx1WFhYWCB1
bmljb2RlIGNoYXJhY3RlcnMgb3IgU3Vycm9nYXRlIHBhaXJzLgogICAgICAgICBpZiAoaWRlbnRp
ZmllclN0YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSkKQEAgLTEwODgsNyArMTExMSw3IEBAIEpT
VG9rZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShK
U1Rva2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRp
ZmllcikKICAgICAgICAgICAgICAgICByZWNvcmRVbmljb2RlQ29kZVBvaW50KGNoYXJhY3Rlci52
YWx1ZSgpKTsKICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIo
KTsKLSAgICAgICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5
cGU7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoVTE2X0lTX1NVUlJPR0FURShtX2N1cnJl
bnQpKTsKQEAgLTExMDQsMTAgKzExMjcsMTAgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVy
VHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWRlbnRpZmllclN0YXJ0
ID0gY3VycmVudFNvdXJjZVB0cigpOwotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJl
dHVybiBpZGVudFR5cGU7CiAgICAgfTsKIAotICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVm
ZmVyKGlkZW50aWZpZXJTdGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOworICAgIEpTVG9rZW5U
eXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50Q2hhcnNTdGFydCA9PSBjdXJyZW50U291cmNlUHRy
KCkpOwogICAgIGlmIChVTkxJS0VMWSh0eXBlICYgRXJyb3JUb2tlbkZsYWcpKQogICAgICAgICBy
ZXR1cm4gdHlwZTsKIApAQCAtMTE0MCwxMyArMTE2MywxMyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxD
aGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2Vu
RGF0YQogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGNv
bnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7
CiAgICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAg
ICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRp
Y19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYgKCh0
b2tlbiAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAgICBy
ZXR1cm4gVU5FWFBFQ1RFRF9FU0NBUEVfRVJST1JUT0s7CiAgICAgfQogCi0gICAgcmV0dXJuIElE
RU5UOworICAgIHJldHVybiBpZGVudFR5cGU7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJv
b2wgY2hhcmFjdGVyUmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3RlcikK
QEAgLTI0NzMsMTQgKzI0OTYsMjEgQEAgc3RhcnQ6CiAgICAgICAgIG1faGFzTGluZVRlcm1pbmF0
b3JCZWZvcmVUb2tlbiA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAg
ICAgICBnb3RvIHN0YXJ0OwotICAgIGNhc2UgQ2hhcmFjdGVySGFzaDoKKyAgICBjYXNlIENoYXJh
Y3Rlckhhc2g6IHsKICAgICAgICAgLy8gSGFzaGJhbmcgaXMgb25seSBwZXJtaXR0ZWQgYXQgdGhl
IHN0YXJ0IG9mIHRoZSBzb3VyY2UgdGV4dC4KLSAgICAgICAgaWYgKHBlZWsoMSkgPT0gJyEnICYm
ICFjdXJyZW50T2Zmc2V0KCkpIHsKKyAgICAgICAgYXV0byBuZXh0ID0gcGVlaygxKTsKKyAgICAg
ICAgaWYgKG5leHQgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIHNo
aWZ0KCk7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblNpbmdsZUxp
bmVDb21tZW50OwogICAgICAgICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgY291bGQgYmUg
YSB2YWxpZCBQcml2YXRlTmFtZS4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFz
c0ZpZWxkcygpICYmIChpc1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9
PSAnXFwnKSkgeworICAgICAgICAgICAgbGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9u
dEJ1aWxkS2V5d29yZHMpOworICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAgICB9
CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFyYWN0
ZXJQcml2YXRlSWRlbnRpZmllclN0YXJ0OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1
bmN0aW9uKQogICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA4ZDMyMGU3ZDk0ZTY0YTlk
NzlhYTU3MTkzNDk0OTQxODU1ZDJiYjU4Li5lN2U4NmQzNTg4ZmQ4NDhiM2NjZWY1MjFkNzQ0ZTg1
ZTBkMmU5MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaApAQCAtMzI3LDEwICszMjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCisgICAgaW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxp
bmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBEb3RUeXBlIHR5cGUpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlk
ZW50LCB0eXBlKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlw
ZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQorICAgICAgICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkK
ICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpCi0gICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQpAQCAtNDM3LDIwICs0NDEs
MjAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlw
ZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3Ms
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5l
cm1vc3RDYWxsT3JBcHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9J
bm5lcm1vc3RDYWxsT3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0
aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAg
IGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJn
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpCiAgICAgICAgICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VU
b0lubmVybW9zdENhbGxPckFwcGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSGFzT3du
UHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90
Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCkKKyAgICBpbmxpbmUgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpIYXNP
d25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RU
eXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNl
LCBpZGVudCwgdHlwZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgIHsK
ICAgICB9CiAKQEAgLTc3NywyMSArNzgxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlk
ZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhh
c0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90
Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5
cGUsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAg
IDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRo
cm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAs
IG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgICAgICAsIG1f
cmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBiY2Q5ZWY5OGJlYjRiZThlZTFlYTY0YmVlMzQ0YzEy
ODVmYjA5ZDIwLi42NGE2NmY3NjVjOGY0ZDI4NDk2ZGE5Y2U2YzQ0YWJiMDhhYTg4MWI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIGJv
b2wgUHJvcGVydHlMaXN0Tm9kZTo6aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkoY29uc3QgSWRl
bnRpZmllciYgcHJvcE5hbWUpCiBib29sIFByb3BlcnR5TGlzdE5vZGU6OnNob3VsZENyZWF0ZUxl
eGljYWxTY29wZUZvckNsYXNzKFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCiB7CiAgICAgd2hpbGUg
KGxpc3QpIHsKLSAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQo
KSkKKyAgICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQoKSB8fCBs
aXN0LT5tX25vZGUtPmlzUHJpdmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGxpc3QgPSBsaXN0LT5tX25leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCmluZGV4IDVkMGNhZWZiYWNmZWFmYmYwZDZkNDc5OGZhYjE4YzBlMTJlMDFkZDMuLmI0
ZDJhNTFjMmZhNjQ1ZTY5ZmE3NjE5MmM5MTcwMTliNzMxYWFkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKQEAgLTE4NSw2ICsxODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9ICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0Fzc2lnbm1lbnRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzTG9jYXRpb24oKTsgfQogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fzc2lnblJlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTcxOSw3ICs3MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVt
IGNsYXNzIENsYXNzRWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywg
TGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJB
cmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3Qg
eyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hv
cnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyIH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3Qg
eyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hv
cnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKICAgICAgICAgZW51bSBQ
dXRUeXBlIDogdWludDhfdCB7IFVua25vd24sIEtub3duRGlyZWN0IH07CiAKICAgICAgICAgUHJv
cGVydHlOb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5
cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczOCw2ICs3MzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVy
biBpc0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBi
b29sIGlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNz
UHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3Zl
cnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxp
Y2F0ZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAm
IFByaXZhdGU7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25zdCB7IHJldHVy
biBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9CiAgICAg
ICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlE
dXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NDgsNyArNzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWduOwotICAgICAg
ICB1bnNpZ25lZCBtX3R5cGUgOiA2OworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OwogICAg
ICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQg
bV9wdXRUeXBlIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBz
aG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwpAQCAtNzc2LDYgKzc3OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwgVmVjdG9yPEpTVGV4dFBvc2l0
aW9uPiopOwogCisgICAgICAgIHZvaWQgZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIHNjb3BlKTsKKwogICAgIHByaXZhdGU6CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QgPSBudWxscHRyKSBmaW5hbAogICAgICAgICB7CkBAIC04MjAsOSAr
ODI0LDMwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNz
aWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAg
ICBlbnVtIGNsYXNzIERvdFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSB9OworICAgIGNsYXNzIEJh
c2VEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERv
dFR5cGUpOworCisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50OyB9CisgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZU5hbWU7IH0KKworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fYmFzZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsK
KyAgICAgICAgRG90VHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIGNsYXNzIERvdEFjY2Vzc29y
Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERv
dFR5cGUpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50OyB9CkBAIC04MzEsMTAgKzg1Niw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFt
ZTsgfQogICAgICAgICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQotCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNv
bnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFNwcmVhZEV4cHJl
c3Npb25Ob2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewpAQCAtOTQ3LDkgKzk3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNz
IEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6
IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVu
dHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBvdmVycmlkZTsKQEAgLTk1Nyw4ICs5ODAsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFz
ZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRz
Tm9kZSogbV9hcmdzOwogICAgIH07CiAKQEAgLTk5NSw3ICsxMDE2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBG
dW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7Cisg
ICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRz
Tm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3Rh
bmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIGZpbmFsOwpAQCAtMTAwNCw3ICsxMDI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
CiAgICAgY2xhc3MgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0
aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAg
ICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05v
ZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5j
ZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxs
cHRyKSBmaW5hbDsKQEAgLTEwMTMsNyArMTAzNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1
bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSGFzT3duUHJvcGVydHlG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEhhc093blByb3BlcnR5RnVuY3Rpb25D
YWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxs
cHRyKSBmaW5hbDsKQEAgLTE0NzUsMjggKzE0OTYsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzIDogMTsKICAgICB9OwogCi0gICAgY2xhc3Mg
QXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVi
bGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpOworICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxw
dHIpIGZpbmFsOwogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNv
bnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0
OwogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xh
c3MgUmVhZE1vZGlmeURvdE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5v
ZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVhZE1v
ZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwog
Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBP
cGVyYXRvciBtX29wZXJhdG9yOwogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6
IDE7CkBAIC0yMjkzLDcgKzIzMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERl
ZmluZUZpZWxkTm9kZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5hbWUsIENvbXB1dGVkTmFtZSB9OworICAgICAg
ICBlbnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSwgQ29tcHV0ZWROYW1lIH07CiAg
ICAgICAgIERlZmluZUZpZWxkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyKiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZDQyYWFjMjI4OTUzODEwYmU4YmMz
ZjljNjE3M2NjNmUyMWJkODhkMC4uNjRlMmFhZjVlNTNiZmUxYTM1OGRkNmQxM2EwMzM3YTE5YjM5
Yzc3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODI2LDYg
KzgyNiw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsCiAgICAgICAgIFRyZWVFeHByZXNzaW9u
IG5vZGUgPSAwOwogICAgICAgICBkZWNsYXJhdGlvbnMrKzsKICAgICAgICAgYm9vbCBoYXNJbml0
aWFsaXplciA9IGZhbHNlOworCisgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUp
LCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSB0byBkZWNsYXJlIGEgdmFyaWFibGUiKTsKICAg
ICAgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgZmFpbElmVHJ1
ZShtYXRjaChMRVQpICYmIChkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXRE
ZWNsYXJhdGlvbiB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERl
Y2xhcmF0aW9uKSwgCiAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRl
bnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMTI4OCw2ICsxMjkw
LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRl
cm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGUKICAgICAgICAgICAgIGlmIChraW5kID09IERl
c3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoZGVz
dHJ1Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2luZE5hbWUoa2luZCkpOworICAgICAgICAgICAgaWYg
KGtpbmQgIT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKQorICAg
ICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBh
IHByaXZhdGUgbmFtZSBhcyBhICIsIGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1l
KGtpbmQpKTsKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0
ZXIgcGF0dGVybiBvciBhICcpJyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwogICAgICAgICB9CiAgICAg
ICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6
RGVzdHJ1Y3R1cmVUb0xldCB8fCBraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVy
ZVRvQ29uc3QpLCAiQ2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEg
TGV4aWNhbERlY2xhcmF0aW9uIik7CkBAIC0yOTUzLDYgKzI5NTcsMTkgQEAgcGFyc2VNZXRob2Q6
CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBw
YXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0
aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5h
bWUiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7Cisg
ICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpOworICAg
ICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CisgICAgICAgICAgICBpZGVudCA9IG1f
dG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NF
bGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3QgYmUgcHJpdmF0
ZSIpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRlciwgIkNhbm5v
dCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIEFT
U0VSVChpZGVudCk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBmYWlsSWZUcnVl
KG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1l
dGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUg
ZmllbGQgdHdpY2UiKTsKKyAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5v
ZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX3Rva2Vu
Lm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCiAgICAgICAgICAgICAgICAgZ290byBuYW1lZEtl
eXdvcmQ7CkBAIC0yOTY4LDggKzI5ODUsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBm
YWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAg
ICB9IGVsc2UgaWYgKE9wdGlvbnM6OnVzZVB1YmxpY0NsYXNzRmllbGRzKCkgJiYgIW1hdGNoKE9Q
RU5QQVJFTikgJiYgdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgcGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewogICAgICAgICAgICAgQVNTRVJUKCFp
c0dldHRlciAmJiAhaXNTZXR0ZXIpOwotICAgICAgICAgICAgaWYgKGlkZW50KQorICAgICAgICAg
ICAgaWYgKGlkZW50KSB7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVu
dCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgY2xhc3MgZmll
bGQgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElm
VHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvclByaXZhdGVGaWVsZCwgIkNh
bm5vdCBkZWNsYXJlIHByaXZhdGUgY2xhc3MgZmllbGQgbmFtZWQgJyNjb25zdHJ1Y3RvciciKTsK
KyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7
CiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEo
KS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CkBAIC0z
MDMzLDYgKzMwNTIsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tl
bkxvY2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0Us
ICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisgICAgaWYg
KE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKSB7CisgICAgICAgIC8vIEZhaWwgaWYg
dGhlcmUgYXJlIG5vIHBhcmVudCBwcml2YXRlIG5hbWUgc2NvcGVzIGFuZCBhbnkgdXNlZC1idXQt
dW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzLgorICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGNv
cHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCksICJDYW5ub3QgcmVmZXJlbmNl
IHVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcyIpOworICAgIH0KICAgICBhdXRvIGNsYXNzRXhwcmVz
c2lvbiA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3Bl
LT5maW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3Ms
IGNsYXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpO
ZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBAIC0z
MDU2LDYgKzMwNzksOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICBUcmVlRXhw
cmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9k
ZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0
Y2ggKG1fdG9rZW4ubV90eXBlKSB7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CisgICAgICAg
ICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTsKKyAgICAgICAg
ICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFNUUklORzoKICAgICAgICAgY2FzZSBJREVO
VDoKICAgICAgICAgbmFtZWRLZXl3b3JkOgpAQCAtMzA5NSw2ICszMTIxLDkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5zdGFuY2UKICAgICAgICAgaWYgKGNvbnN1bWUoRVFVQUwpKQogICAgICAgICAgICAg
aW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogCisgICAg
ICAgIGlmICh0eXBlID09IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWUpCisgICAg
ICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKKwogICAg
ICAgICBUcmVlU3RhdGVtZW50IGRlZmluZUZpZWxkID0gY29udGV4dC5jcmVhdGVEZWZpbmVGaWVs
ZChmaWVsZExvY2F0aW9uLCBpZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUpOwogICAgICAgICBjb250
ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgZGVmaW5lRmllbGQpOwogICAgIH0K
QEAgLTQ3OTgsNiArNDgyNywyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkQ2FsbE9yQXBw
bHlEZXB0aChQYXJzZXJUeXBlKiwgVk0mLCBPcHRpb25hbDx0eXBlbmFtZSBQYQogewogfQogCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgorYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6dXNl
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKG1fbGV4ZXIt
PmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAo
YXV0byBtYXliZUN1cnJlbnQgPSBmaW5kUHJpdmF0ZU5hbWVTY29wZSgpKSB7CisgICAgICAgIFNj
b3BlUmVmIGN1cnJlbnQgPSBtYXliZUN1cnJlbnQudmFsdWUoKTsKKyAgICAgICAgaWYgKCFjdXJy
ZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICAgICAgY3VycmVudC0+dXNlUHJp
dmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VNZW1iZXJFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewpAQCAtNDk5OSw4ICs1
MDQ0LDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgbV9wYXJz
ZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgSlNU
ZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAg
ICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtl
eXdvcmRzIHwgTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CisgICAgICAgICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAg
ICAgICAgICAgICBhdXRvIHR5cGUgPSBEb3RUeXBlOjpOYW1lOworICAgICAgICAgICAgICAgIGlm
IChtYXRjaChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50
KTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShiYXNlSXNTdXBlciwgIkNhbm5vdCBh
Y2Nlc3MgcHJpdmF0ZSBuYW1lcyBmcm9tIHN1cGVyIik7CisgICAgICAgICAgICAgICAgICAgIGlm
IChVTkxJS0VMWShjdXJyZW50U2NvcGUoKS0+ZXZhbENvbnRleHRUeXBlKCkgPT0gRXZhbENvbnRl
eHRUeXBlOjpJbnN0YW5jZUZpZWxkRXZhbENvbnRleHQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aGFzUHJpdmF0ZU5hbWUoKmlk
ZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIGZpZWxkICciLCBpZGVu
dC0+aW1wbCgpLCAiJyIpOworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNl
KHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0ZSBuYW1lcyBv
dXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFz
dFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgp
LT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0g
RG90VHlwZTo6UHJpdmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90eXBl
ID0gSURFTlQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNoT3JGYWls
KElERU5ULCAiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hhaW5C
YXNlID8gIic/LiciIDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwg
ZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOworICAg
ICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9u
LCBiYXNlLCBpZGVudCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tl
bkVuZFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShiYXNlSXNTdXBl
ciAmJiBjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3Vw
ZXJQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxOTUsNiArNTI1Myw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChjb250ZXh0
LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkgJyIs
IG1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUi
KTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJpdmF0ZUxvY2F0
aW9uKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFyc2VyU3RhdGUu
bGFzdFByaXZhdGVOYW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFr
ZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0
YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBkZWZhdWx0OgpAQCAtNTI3MSw3ICs1MzMwLDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+IHZvaWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4
dChXCiAgICAgY2FzZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAgICAgICAgb3V0
LnByaW50KCJJbnZhbGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAg
ICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2VuKCkpOworICAg
ICAgICByZXR1cm47CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6CiAgICAgICAg
IG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNTRiMzk3MzA5ZWEyZmNjZjM3
MzFmYmU5OThkYWI1OTljOWJiZTAxNi4uMWY1ZDkzMmMzZjU3NWViMjA1NTc0MDRlNTY0MTg3ZmJm
NzViOTY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yOTAsNiAr
MjkwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNHZW5lcmF0b3JCb3VuZGFyeSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNHZW5lcmF0b3JCb3VuZGFyeTsgfQogICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb247IH0KICAgICBib29sIGlzQXN5bmNG
dW5jdGlvbkJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFy
eTsgfQorICAgIGJvb2wgaXNQcml2YXRlTmFtZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9pc0Ns
YXNzU2NvcGU7IH0KICAgICBib29sIGlzQ2xhc3NTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXND
bGFzc1Njb3BlOyB9CiAKICAgICBib29sIGhhc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzQXJndW1lbnRzOyB9CkBAIC0zMDksNiArMzEwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
bGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zID0gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIHNldElz
UHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBp
c1ByaXZhdGVOYW1lU2NvcGUgaXMgYW4gYWxpYXMgZm9yIGlzQ2xhc3NTY29wZSAtLS0gVGhpcyBp
cyBwb3RlbnRpYWxseSBtaXNsZWFkaW5nLAorICAgICAgICAvLyBwYXJ0aWN1bGFybHkgd2hlbiBw
YXJzaW5nIGRpcmVjdCBldmFsIGNvZGUgd2hpY2ggb2NjdXJzIHdpdGhpbiBhIGNsYXNzLgorICAg
ICAgICBzZXRJc0NsYXNzU2NvcGUoKTsKKyAgICB9CisKICAgICB2b2lkIHNldElzQ2xhc3NTY29w
ZSgpCiAgICAgewogICAgICAgICBtX2lzQ2xhc3NTY29wZSA9IHRydWU7CkBAIC00NzUsNyArNDgz
LDQ0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMu
Y29udGFpbnMoaWRlbnQuZ2V0KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9s
ZXhpY2FsVmFyaWFibGVzLmhhc1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lk
IGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8oU2NvcGUmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgbV9sZXhpY2FsVmFyaWFibGVzLmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8ob3RoZXIu
bV9sZXhpY2FsVmFyaWFibGVzKTsKKyAgICB9CisKKyAgICBib29sIGhhc1VzZWRCdXRVbmRlY2xh
cmVkUHJpdmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2xleGljYWxWYXJp
YWJsZXMucHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVu
dHJ5IDogbV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHVzZVByaXZhdGVO
YW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxs
b3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQ
cml2YXRlTmFtZShpZGVudCk7CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRl
Y2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUoaWRl
bnQpOworICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVz
dWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhh
c0RlY2xhcmVkUGFyYW1ldGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGhhc0RlY2xhcmVkUGFyYW1ldGVyKGlkZW50LmltcGwoKSk7CkBAIC05MTAsNyAr
OTU1LDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQ
YXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJF
cnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0
LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24g
PSBXVEY6Om51bGxvcHQsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29u
c3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFs
PGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVs
bG9wdCwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxh
c3RUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0K
QEAgLTExODMsNiArMTIyOCw0NCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gU2NvcGVSZWYo
Jm1fc2NvcGVTdGFjaywgaSk7CiAgICAgfQogCisgICAgT3B0aW9uYWw8U2NvcGVSZWY+IGZpbmRQ
cml2YXRlTmFtZVNjb3BlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6
ZSgpKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAg
ICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQor
ICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlmIChtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRl
TmFtZVNjb3BlKCkpCisgICAgICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywg
aSk7CisKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBTY29wZVJl
ZiBwcml2YXRlTmFtZVNjb3BlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2su
c2l6ZSgpKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwor
ICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgp
KQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2tbaV0uaXNQ
cml2YXRlTmFtZVNjb3BlKCkpOworICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFj
aywgaSk7CisgICAgfQorCisgICAgYm9vbCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0
ZXJTY29wZSgpCisgICAgeworICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gcHJpdmF0ZU5hbWVT
Y29wZSgpOworICAgICAgICB1bnNpZ25lZCBpID0gY3VycmVudC5pbmRleCgpIC0gMTsKKyAgICAg
ICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAg
ICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICByZXR1cm4gIWN1
cnJlbnQtPmhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCk7CisKKyAgICAgICAgY3Vy
cmVudC0+Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhtX3Njb3BlU3RhY2tbaV0pOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBTY29wZVJlZiBjbG9zZXN0UGFyZW50T3Jk
aW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBp
ID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CkBAIC0xNDYyLDYgKzE1NDUsMTYgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hBbmRVcGRhdGUoSlNUb2tlblR5cGUg
ZXhwZWN0ZWQsIGNvbnN0IEpTVG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgaWYgKG1hdGNo
KGV4cGVjdGVkKSkgeworICAgICAgICAgICAgbV90b2tlbiA9IHRva2VuOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQog
ICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaENvbnRleHR1YWxLZXl3b3JkKGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAgICAgewpAQCAtMTcxNSw2ICsxODA4LDggQEAgcHJp
dmF0ZToKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBi
b29sIGlzU2ltcGxlQXNzaWdubWVudFRhcmdldChUcmVlQnVpbGRlciYsIFRyZWVFeHByZXNzaW9u
KTsKIAorICAgIEFMV0FZU19JTkxJTkUgYm9vbCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlm
aWVyKik7CisKICAgICBBTFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5U
eXBlKTsKICAgICBib29sIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgCkBAIC0xODA5
LDYgKzE5MDQsNyBAQCBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblBhcnNlUGhhc2UgZnVuY3Rp
b25QYXJzZVBoYXNlIHsgRnVuY3Rpb25QYXJzZVBoYXNlOjpCb2R5IH07CiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIGxhc3RJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBsYXN0RnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBsYXN0UHJpdmF0ZU5hbWUgeyBudWxscHRyIH07CiAgICAgICAgIGJvb2wgYWxs
b3dBd2FpdCB7IHRydWUgfTsKICAgICAgICAgYm9vbCBpc1BhcnNpbmdDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXIgeyBmYWxzZSB9OwogICAgIH07CkBAIC0xOTU5LDcgKzIwNTUsNyBAQCBwcml2YXRlOgog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5v
ZGU+Ci1zdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
KFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3Qg
VmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKK3N0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3Im
IGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5j
dGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmly
b25tZW50KiB2YXJpYWJsZXNVbmRlclREWiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiog
aW5zdGFuY2VGaWVsZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcg
ZXJyTXNnOwpAQCAtMTk3NCw2ICsyMDcwLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAg
ICAgQVNTRVJUKG1fc291cmNlLT5zdGFydENvbHVtbigpID4gT3JkaW5hbE51bWJlcjo6YmVmb3Jl
Rmlyc3QoKSk7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBtX3NvdXJjZS0+c3RhcnRDb2x1
bW4oKS56ZXJvQmFzZWRJbnQoKTsKIAorICAgIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkg
JiYgdmFyaWFibGVzVW5kZXJURFogJiYgdmFyaWFibGVzVW5kZXJURFotPnByaXZhdGVOYW1lc1Np
emUoKSkgeworICAgICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SXNQcml2YXRlTmFtZVNjb3BlKCk7
CisgICAgICAgIHZhcmlhYmxlc1VuZGVyVERaLT5jb3B5UHJpdmF0ZU5hbWVzVG8oY3VycmVudFNj
b3BlKCktPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgfQorCiAgICAgYXV0byBwYXJzZVJlc3Vs
dCA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVu
Y3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgaW5zdGFuY2VGaWVsZExvY2F0
aW9ucyk7CiAKICAgICBpbnQgbGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKQEAg
LTIwNTgsNiArMjE1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAg
ICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRU
eXBlOjpOb25lLAogICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29u
dGV4dFR5cGU6Ok5vbmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRh
ID0gbnVsbHB0ciwKKyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRl
clREWiA9IG51bGxwdHIsCiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFu
Y2VGaWVsZExvY2F0aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVu
Y3Rpb24gPSBmYWxzZSkKIHsKQEAgLTIwNzAsNyArMjE3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0
OwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAgICAg
ICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENv
bnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNF
dmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRh
LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWRO
b2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwg
V1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0g
cGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6
OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRM
b2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAg
ICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRp
bk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTIwODMsNyArMjE4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQ
YXJzZWROb2RlPiBwYXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3Jz
IHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhl
cjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2Ny
aXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRG
b3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2Vk
Tm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+
KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNp
bmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwg
aW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQ
YXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+
KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6
Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAg
ICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRp
b25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5k
ZXggZGUwZWJlYWY4NWZkNzEyMzcxN2Y4NzcxMTI3ZjcxOTIzZmZlNjc0OC4uN2IzYzFlYzNiN2Y2
YTZiMTFiZmM0NWY0YmM5MWQwNDgxMmY0Y2QyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlw
ZSB7CiAgICAgRE9VQkxFLAogICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFN
RSwKICAgICBTVFJJTkcsCiAgICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBhYWIwYjc0ZGFhODkwNjQ0
NjgwYmNiZDJmMDg4ZWFiZGNhOTNkZDA2Li40M2Y1YTkyZWM3NmJiNjViODc2ZDg1ODdkMTk0NDEy
YTJhMDczOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwg
UmVzb2x2ZUV4cHIsIEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRF
eHByLAogICAgICAgICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBP
YmplY3RMaXRlcmFsRXhwciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVy
RXhwciwgSW1wb3J0RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAg
ICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRp
b25hbENoYWluLAorICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHBy
LCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29u
ZGl0aW9uYWxFeHByLCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRl
RXhwciwgQXJyYXlMaXRlcmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0
ZXIsCiAgICAgICAgIEFycmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291
cmNlRWxlbWVudHNSZXN1bHQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyBy
ZXR1cm4gQm9vbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlw
ZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vz
cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmll
ciosIERvdFR5cGUgdHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBl
OjpQcml2YXRlTmFtZSA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJy
OjpoYXNFcnJvcihZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJp
bmcoKSkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdF
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdF
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyBy
ZXR1cm4gTmV3RXhwcjsgfQpAQCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0
eXBlID09IFJlc29sdmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRF
eHByOworICAgICAgICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4
cHIgfHwgdHlwZSA9PSBQcml2YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAg
IH0KKworICAgIGJvb2wgaXNQcml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAg
IGJvb2wgaXNBc3NpZ25tZW50TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmlu
ZGV4IDhlNjkxNTFjN2I2Y2IzMTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRj
NjYzY2E3MDJmNzdkNDc3NDA2OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52
aXJvbm1lbnQ6Om9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sK
KyAgICBtX21hcCA9IG90aGVyLm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBv
dGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAg
ICBpZiAob3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVu
aXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOwor
ICAgIHJldHVybiAqdGhpczsKK30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFy
aWFibGVBc0NhcHR1cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlm
aWVyKTsKQEAgLTgwLDYgKzkwLDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZh
cmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXAp
OwogICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1
cmVkOworICAgIG1fcmFyZURhdGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBW
YXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFj
dFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZl
cnl0aGluZ0NhcHR1cmVkKCkpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5n
SW1wbCosIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAg
IHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBz
b3J0ZWRFbnRyaWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBh
aXIua2V5LmdldCgpLCBwYWlyLnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUz
MjY5ZTc1ZGY2ZjVmZGJlYTE5OTJjNTIuLjE3N2Y4ODE1YmMzYTM3ZTRlYWQ2YmQ2MDFhY2NmNGZh
YzAxM2YyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00
Miw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNQYXJhbWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsg
fQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc1ByaXZhdGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXND
YXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAg
cHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMg
fD0gSXNGdW5jdGlvbjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigp
IHsgbV9iaXRzIHw9IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
U2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFt
ZSgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAg
cHJpdmF0ZToKICAgICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAg
SXNGdW5jdGlvbiA9IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAg
ICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xv
cHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1l
ID0gMSA8PCAxMCwKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04
MywxNSArODgsNTUgQEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMg
OiBIYXNoVHJhaXRzPFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVO
YW1lRW50cnkgeworcHVibGljOgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRz
ID0gMCkgeyBtX2JpdHMgPSB0cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Vz
ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElz
RGVjbGFyZWQ7IH0KKworICAgIHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAg
IH0KKworICAgIGVudW0gVHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8
IDAsCisgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAg
ICB1aW50MTZfdCBtX2JpdHMgeyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhh
c2hUcmFpdHMgOiBIYXNoVHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29u
c3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVu
dmlyb25tZW50IHsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2Vk
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1l
RW50cnlIYXNoVHJhaXRzPiBQcml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZp
cm9ubWVudCgpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52
aXJvbm1lbnQmJiBvdGhlcikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25t
ZW50JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAg
ICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9
IGRlZmF1bHQ7CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52
aXJvbm1lbnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdU
Rk1vdmUob3RoZXIubV9tYXApKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3Ro
ZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUo
b3RoZXIubV9yYXJlRGF0YSkpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50
KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVy
Lm1fbWFwKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBX
VEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3Jh
cmVEYXRhKSA6IG51bGxwdHIpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50
JiBvcGVyYXRvcj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxX
QVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsg
fQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5l
bmQoKTsgfQpAQCAtOTksNyArMTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAg
IEFMV0FZU19JTkxJTkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVz
dWx0IGFkZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRp
Zmllci5pbXBsKCkpOyB9Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9Cisg
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAu
c2l6ZSgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRh
aW5zKGlkZW50aWZpZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1v
dmUoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21h
cC5maW5kKGlkZW50aWZpZXIpOyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAg
IGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNp
emUoKTsgfQogCisgICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFu
Z2U8UHJpdmF0ZU5hbWVzOjppdGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRk
UmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHJldHVybiBkZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpIHsgdXNlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFk
ZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZh
dGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsK
KyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAg
ICBlbnRyeS5zZXRJc1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsK
KyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRk
KGlkZW50aWZpZXIsIGVudHJ5KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
YXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAg
ICAgIG1ldGEuc2V0SXNVc2VkKCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAg
ICAgICAgICAgIGZpbmQoaWRlbnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNv
bnN0CisgICAgeworICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBn
dWFyZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAg
ICAgICAgQVNTRVJUKHByaXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFr
ZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dW5zaWduZWQgcHJpdmF0ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1f
cmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIu
aW1wbCgpKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1l
c1RvKFZhcmlhYmxlRW52aXJvbm1lbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW90aGVyLm1f
cmFyZURhdGEpCisgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVl
PFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICBpZiAocHJpdmF0ZU5h
bWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5h
bWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiBl
bnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpKQorICAgICAgICAgICAgICAgICAgICBvdGhlci5tX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29w
eVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29u
c3QgeworICAgICAgICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQg
dXNlcyBvZiBQcml2YXRlTmFtZXMgZnJvbSBhbgorICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFt
ZUVudmlyb25tZW50IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKKyAg
ICAgICAgLy8gZWFybGllciBpbiB0aGUgc291cmNlIGNvZGUgdGhhbiBpdCBpcyBkZWZpbmVkLgor
ICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChh
dXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnku
dmFsdWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgb3V0ZXIuZ2V0T3JBZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpLnNldElz
VXNlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFJh
cmVEYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAg
ICAgIFJhcmVEYXRhKCkgeyB9CisgICAgICAgIFJhcmVEYXRhKFJhcmVEYXRhJiYgb3RoZXIpCisg
ICAgICAgICAgICA6IG1fcHJpdmF0ZU5hbWVzKFdURk1vdmUob3RoZXIubV9wcml2YXRlTmFtZXMp
KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEm
KSA9IGRlZmF1bHQ7CisgICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEm
KSA9IGRlZmF1bHQ7CisgICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICB9
OworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50
OwogCiAgICAgTWFwIG1fbWFwOwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCB7IGZh
bHNlIH07CisKKyAgICBQcml2YXRlTmFtZUVudHJ5JiBnZXRPckFkZFByaXZhdGVOYW1lKFVuaXF1
ZWRTdHJpbmdJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAg
ICAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YT4oKTsKKworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuYWRkKGltcGwsIFByaXZhdGVOYW1lRW50cnkoMCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICB9
CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IG1f
cmFyZURhdGE7CiB9OwogCiBjbGFzcyBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNjAxZDAx
OWRmOTNmOGYyZjhjYzZjMWY1OTFhOTQxNTQ4ZGMwN2ZjYi4uNWVjZTZkYTE2YjA2MDczMjk1YTRh
NmI2NjgxYjllZmU1ODRkNmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NhY2hlZFR5cGVzLmNwcApAQCAtODU2LDYgKzg1NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGVuY29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQorCisg
ICAgU291cmNlVHlwZTxUPiogZGVjb2RlQXNQdHIoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOworICAgICAgICBy
ZXR1cm4gdGhpcy0+dGVtcGxhdGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKTsKKyAgICB9
CiB9OwogCiBjbGFzcyBDYWNoZWRTaW1wbGVKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiB7CkBAIC0xMDAzLDIzICsxMDA5LDQ1IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiB9Owog
CitjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9p
ZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFy
ZURhdGEmIHJhcmVEYXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVu
Y29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURh
dGEpIGNvbnN0CisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2Rlciwg
cmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRI
YXNoTWFwPENhY2hlZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmlu
Z0ltcGwsIFdURjo6UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVO
YW1lRW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4+LCBQcml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7Cit9
OworCiBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVj
dDxWYXJpYWJsZUVudmlyb25tZW50PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KQogICAgIHsKICAgICAg
ICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwog
ICAgICAgICBtX21hcC5lbmNvZGUoZW5jb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgbV9yYXJl
RGF0YS5lbmNvZGUoZW5jb2RlciwgZW52Lm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAg
IHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikg
Y29uc3QKICAgICB7CiAgICAgICAgIGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gbV9pc0V2
ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICAgICAgbV9tYXAuZGVjb2RlKGRlY29kZXIsIGVudi5tX21h
cCk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVu
di5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVE
YXRhPigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICplbnYubV9y
YXJlRGF0YSk7CisgICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRXZl
cnl0aGluZ0NhcHR1cmVkOwogICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVu
aXF1ZWRTdHJpbmdJbXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8
VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gbV9tYXA7CisgICAgQ2FjaGVkUHRyPENhY2hlZFZh
cmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hl
ZENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0
VmFyaWFibGVFbnZpcm9ubWVudD4gewpAQCAtMTE0Nyw2ICsxMTc1LDIyIEBAIHByaXZhdGU6CiAg
ICAgaW50cHRyX3QgbV9iaXRzOwogfTsKIAorY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0
YSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+
IHsKK3B1YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1i
b2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBt
X3ByaXZhdGVOYW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOwor
ICAgIH0KKworICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN5bWJvbFRhYmxlOjpT
eW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJp
dmF0ZU5hbWVzLmRlY29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAg
fQorCitwcml2YXRlOgorICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1
ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwog
Y2xhc3MgQ2FjaGVkU3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxl
PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3lt
Ym9sVGFibGUmIHN5bWJvbFRhYmxlKQpAQCAtMTE1Nyw2ICsxMjAxLDcgQEAgcHVibGljOgogICAg
ICAgICBtX25lc3RlZExleGljYWxTY29wZSA9IHN5bWJvbFRhYmxlLm1fbmVzdGVkTGV4aWNhbFNj
b3BlOwogICAgICAgICBtX3Njb3BlVHlwZSA9IHN5bWJvbFRhYmxlLm1fc2NvcGVUeXBlOwogICAg
ICAgICBtX2FyZ3VtZW50cy5lbmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9hcmd1bWVudHMu
Z2V0KCkpOworICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5t
X3JhcmVEYXRhLmdldCgpKTsKICAgICB9CiAKICAgICBTeW1ib2xUYWJsZSogZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpIGNvbnN0CkBAIC0xMTcwLDYgKzEyMTUsMTEgQEAgcHVibGljOgogICAgICAg
ICBTY29wZWRBcmd1bWVudHNUYWJsZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50
cy5kZWNvZGUoZGVjb2Rlcik7CiAgICAgICAgIGlmIChzY29wZWRBcmd1bWVudHNUYWJsZSkKICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX2FyZ3VtZW50cy5zZXQoZGVjb2Rlci52bSgpLCBzeW1i
b2xUYWJsZSwgc2NvcGVkQXJndW1lbnRzVGFibGUpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEu
aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSA9IFdURjo6
bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAg
ICAgIG1fcmFyZURhdGEtPmRlY29kZShkZWNvZGVyLCAqc3ltYm9sVGFibGUtPm1fcmFyZURhdGEp
OworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KIApAQCAt
MTE4MCw2ICsxMjMwLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxT
Y29wZSA6IDE7CiAgICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOwogICAgIENhY2hlZFB0cjxD
YWNoZWRTY29wZWRBcmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CisgICAgQ2FjaGVkUHRyPENh
Y2hlZFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRK
U1ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5k
ZXggYjRiNzE2MzM3MzRlM2NhZDk5NTdlN2NkZmRjZGM3MzMyZGU4OWVjMy4uYWZkY2M5MDI5MTM3
M2Y1MGQwNTcwZTM4YzhkOTM1YTBhYmZjOWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFVubGlua2VkQ29kZUJsb2Nr
VHlwZSogZ2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VD
b2RlJiBzCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2Nr
VHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0
aW9uID0gZXhlY3V0YWJsZSAmJiBleGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24o
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5v
ZGU+KAotICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1v
ZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5r
ZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBl
dmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bik7CisgICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJv
ciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2
YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJURFosIG51bGxwdHIsIGlzSW5z
aWRlT3JkaW5hcnlGdW5jdGlvbik7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmNwcAppbmRleCA5YTMwMGU3MzY3ODg5MmIwNTQ2ODkwNWVlZTZhNjQwMWM5
OTk1ODYzLi4zNTQ0MTVmOTUyOGFkYmI5YzJlZDVlMTVjMzUyNTcwMDU1NzYwMzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
CkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBJTklUSUFMSVpFX0tF
WVdPUkQobmFtZSkgLCBuYW1lIyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNu
YW1lKSkKICNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2
YXRlTmFtZShtX2J1aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5J
VElBTElaRV9TWU1CT0wobmFtZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUj
I1N5bWJvbCgpKQorI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRShuYW1lKSAs
IG5hbWUjI1ByaXZhdGVGaWVsZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiIyIgI25hbWUp
KQogCiBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIDog
bnVsbElkZW50aWZpZXIoKQpAQCAtNDMsNiArNDQsNyBAQCBDb21tb25JZGVudGlmaWVyczo6Q29t
bW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9L
RVlXT1JEKElOSVRJQUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VB
Q0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9T
WU1CT0wpCisgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSU5J
VElBTElaRV9QUklWQVRFX0ZJRUxEX05BTUUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDhkYmM2ZDdhYzE4N2I3
MTlkMDQ1MjY1NzAyODA5NjE2MjI5ZDU4ZGMuLjg1NThiYWI5MGNlNWQ4YmIzZGQxMDhlMDg0NWY4
YTUyOTRmNDVmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMjA5LDYgKzIwOSw5IEBACiAgICAgbWFjcm8od3JpdGFibGUp
IFwKICAgICBtYWNybyh5ZWFyKQogCisjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFD
SF9QUklWQVRFX0ZJRUxEKG1hY3JvKSBcCisgICAgbWFjcm8oY29uc3RydWN0b3IpCisKICNkZWZp
bmUgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNy
byhhd2FpdCkgXAogICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0zMjMsNiArMzI2LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9X
RUxMX0tOT1dOX1NZTUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9X
Tl9TWU1CT0xfR0xPQkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9X
RUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwKIAorI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJF
X1BSSVZBVEVfRklFTERfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0
ZUZpZWxkOworICAgICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVM
RChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMKQorI3VuZGVmIEpT
Q19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwKKwogICAgICAgICAvLyBD
YWxsZXJzIG9mIHRoaXMgbWV0aG9kIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpZGVudGlmaWVycyBn
aXZlbiB0byB0aGlzIG1ldGhvZCAKICAgICAgICAgLy8gc3Vydml2ZSB0aGUgbGlmZXRpbWUgb2Yg
Q29tbW9uSWRlbnRpZmllcnMgYW5kIHJlbGF0ZWQgVk0uCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgYXBwZW5kRXh0ZXJuYWxOYW1lKGNvbnN0IElkZW50aWZpZXImIHB1YmxpY05hbWUs
IGNvbnN0IElkZW50aWZpZXImIHByaXZhdGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGEzOWMxMzc1NzU2ZmNkNTlm
MjY0NWIwMDgxNGE2MGE4NjhmYjE5YWMuLmU2ZDdhOTZlZTkyZTQzOGZjOWMwYWQwZDkxOGQ4YmM4
ZjY1YzY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcApAQCAtMTMzMSw2ICsxMzMxLDI4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVl
LmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRv
IGJ5dGVjb2RlID0gcGMtPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBHRVRfQyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IEdFVF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBBU1NF
UlQoc3Vic2NyaXB0LmlzU3ltYm9sKCkpOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RD
b2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRv
IHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsK
KworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBhc09iamVjdChiYXNlVmFsdWUpLT5n
ZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CisKKyAgICBSRVRVUk5fUFJPRklMRUQoc2xvdC5nZXRWYWx1ZShnbG9iYWxP
YmplY3QsIHByb3BlcnR5KSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWRfd2l0aF90aGlzKQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGJlMzc0YTBlNjI2ZjJkZjgzMzBiYWM0
OTIzODk2MDgxYzRhYTQzOWQuLmE3NmJmM2VhYmU0YTBmNWU0NDc1MGY3MTY1MDM5N2RjZGQ5ODZk
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCkBAIC0yNzUsNiArMjc1LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfYXN5bmNfZ2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y3JlYXRlX3Jlc3QpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRf
d2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93
aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9u
YW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhp
cyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlz
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcAppbmRleCA4YzljYTAzNDc2MDQ5NmIwYTZhZWFmMGY4MjZmYjM2NDY2M2RjMGQ3Li40MTRl
N2JkZjc3YWI0ZmM3NjRiNTY1ZGY2ZjFiZDRhMGQ2NGIzMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI0LDYgKzMy
NCwxNiBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fu
bm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIpOwogfQogCitKU09iamVjdCogY3Jl
YXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygi
Q2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7Cit9CisKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRl
TmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCByZWRlZmluZSBl
eGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhp
bmcpOworfQorCiBFeGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9i
YWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuaAppbmRleCBlOWE1MjMxZmM1NjRiMDdkZDM5ZDFjYWMxNDY5MDk1YTNkYmQ0MTJj
Li5lMWI3ZTAyMTE4ZDQ4YjVmNTQ0ODc0NWJkMzY0YTJlOTM5OTczYjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC01Myw2ICs1
Myw4IEBAIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFz
SW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xvCiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0
cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVO
b3RBRnVuY3Rpb25FcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNy
ZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmKTsKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0ds
b2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2Vh
OGY4NGJjYjkyNzg3YWY3MGU4M2FhZGUyM2YwNDM3NWNiMDg5ZS4uNmJhZGM2NzA4NmU3YzJhNTlk
MjcwZmM4NmQzMTJhM2RlMDU4ZjU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjk0LDYgKzI5NCwxMiBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsTwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKSkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY3JlYXRlUHJpdmF0ZVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1w
bDo6Y3JlYXRlTnVsbFN5bWJvbCgpLmdldCgpKSk7Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAog
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKQEAgLTEyMjUsNiAr
MTIzMSwxMSBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0
cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5pdC5zZXQo
SlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQu
b3duZXIpLCAwLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KSk7CiAgICAgICAg
IH0pOwogCisgICAgLy8gUHJpdmF0ZVN5bWJvbHMgLyBQcml2YXRlTmFtZXMKKyAgICBtX2xpbmtU
aW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjcmVh
dGVQcml2YXRlU3ltYm9sKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+
JiBpbml0KSB7CisgICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52
bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVh
dGVQcml2YXRlU3ltYm9sKSk7CisgICAgICAgIH0pOworCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KSAmJiBFTkFCTEUoV0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkKICAgICAvLyBXZWJBc3NlbWJs
eSBTdHJlYW1pbmcgQVBJCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oTGlua1RpbWVDb25zdGFudDo6d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJu
YWwpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDJmZDZkOTc0OWQxYzZi
YzAyNWUzZjRhZjRkNDFmNzg0YzQ4OTNkNTYuLmNmMzNkMjZhOTM0MTkyNmRjM2IyNzI2MzRhMzcz
ZWIxNGYyODZiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApA
QCAtMTgwLDYgKzE4MCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gYmVpbmcgcmV0dXJuZWQuIE9uY2Ug
dGhpcyBpcyBmaXhlZCB3ZSBzaG91bGQgbWlncmF0ZSBjb2RlICYgcmVtb3ZlIHRoaXMgbWV0aG9k
LgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAorICAg
IHN0YXRpYyBib29sIGdldFByaXZhdGVGaWVsZFNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVj
dCosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgaW5saW5lIGJvb2wgZ2V0UHJp
dmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
KyAgICBpbmxpbmUgdm9pZCBwdXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0
eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIGlubGluZSB2b2lkIGRlZmlu
ZVByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0
UHJvcGVydHlTbG90Jik7CisKICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0aCgpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkK
QEAgLTE0NDQsNiArMTQ0OSw3OCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmRvUHV0
UHJvcGVydHlTZWN1cml0eUNoZWNrKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplYwogewogfQogCitK
U09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsK
K0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0
Kik7CisKK0FMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdChK
U09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgQVNTRVJUKHByb3Bl
cnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpOworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVj
dCk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7CisK
KyAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgIGlmIChvZmZz
ZXQgPT0gaW52YWxpZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNWYWx1
ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7CisgICAgQVNTRVJUKHZhbHVlKTsK
KyAgICBpZiAodmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUu
YXNDZWxsKCk7CisgICAgICAgIEpTVHlwZSB0eXBlID0gY2VsbC0+dHlwZSgpOworICAgICAgICBV
TlVTRURfUEFSQU0oY2VsbCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSAhPSBH
ZXR0ZXJTZXR0ZXJUeXBlICYmIHR5cGUgIT0gQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSk7CisgICAg
ICAgIC8vIEZJWE1FOiBGb3Igbm93LCBwcml2YXRlIGZpZWxkcyBkbyBub3Qgc3VwcG9ydCBnZXR0
ZXIvc2V0dGVyIGZpZWxkcy4gTGF0ZXIgb24sIHdlIHdpbGwgbmVlZCB0byBmaWxsIGluIGFjY2Vz
c29yIG1ldGFkYXRhIGhlcmUsCisgICAgICAgIC8vIGFzIGluIEpTT2JqZWN0OjpnZXRPd25Ob25J
bmRleFByb3BlcnR5U2xvdCgpCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTQ0MzUKKyAgICB9CisKKyAgICBzbG90LnNldFZhbHVlKG9iamVjdCwg
YXR0cmlidXRlcywgdmFsdWUsIG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGlu
ZSBib29sIEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIGlmICghSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNs
b3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFt
ZUVycm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IGZhbHNlKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdHJ1ZSk7Cit9CisKK2lubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBwdXRTbG90KQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7Cisg
ICAgaWYgKCFKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3Qs
IHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAg
RVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFz
ZSgpOworICAgIHB1dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9
CisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpkZWZpbmVQcml2YXRlRmllbGQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90KQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2Jh
bE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpIYXNQcm9wZXJ0eSk7CisgICAgaWYgKEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRo
aXMsIGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICB0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVy
cm9yKGdsb2JhbE9iamVjdCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHZv
aWQoKSk7CisgICAgfQorICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsK
KworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwg
dmFsdWUsIHB1dFNsb3QpOworfQorCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBm
dW5jdGlvbiB0aGlzIGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5j
ZSB0aGlzIGlzIGZ1bmN0aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAogdGVtcGxhdGU8
Ym9vbCBjaGVja051bGxTdHJ1Y3R1cmU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuY3BwCmluZGV4IDFmZTdkNjcyOWQyOTc1ZmFhZjlhMjMxYjNlZDE1NmUyOGIwNzU2ZWQu
LjBlYjUyNzhmNDMyZTRhNDVjYjkwYWZjZDRhMzMwODEwNjhkZmU0NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zMzcsNiArMzM3LDEwIEBAIHZvaWQg
SlNTY29wZTo6Y29sbGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwg
VmFyaWFibGVFbnZpcm9ubWVuCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3lt
Ym9sVGFibGUtPm1fbG9jayk7CiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+
ZW5kKGxvY2tlciksIGl0ZXIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikKICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKKyAgICAgICAg
aWYgKHN5bWJvbFRhYmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgZm9yIChh
dXRvIG5hbWUgOiBzeW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICAgICAg
cmVzdWx0LnVzZVByaXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgfQogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYjZmZjM5
MTdjNzdmM2Q3YzdlYzFhOGVkOTFkMGNkYjUwMjQ2ZTdmMy4uNTU3NzFkZGRmNzBiYmM2NDJmMjQ1
NTQzN2RkZmQ0ZjFkNWQ0OTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oCkBAIC01MDksNiArNTA5LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVB1YmxpY0NsYXNz
RmllbGRzLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFu
ZCBwdWJsaWMgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgdXNl
UmFuZG9taXppbmdFeGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgIkZv
ciB0aGUgYXJtNjQgRXhlY3V0YWJsZUFsbG9jYXRvciwgaWYgdHJ1ZSwgc2VsZWN0IHdoaWNoIHJl
Z2lvbiB0byB1c2UgcmFuZG9tbHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nIHRoYXQganVt
cCBpc2xhbmRzIHdvcmsuIikgXAogICAgIHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxP
YmplY3QsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlvbnMg
dG8gZW5hYmxlL2Rpc2FibGUgYm90aCB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBzdXBl
ciBzYW1wbGVyIikgXAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwg
Tm9ybWFsLCAiSWYgdHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRh
IGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2Ugewog
ICAgIFNhbWVPcHRpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5jcHAKaW5kZXggY2JhYjQ2Y2U1NDU0ZTIzZjM0ODJlYmRiYzBiNjljYTI2OTU2N2ZmNS4u
MTY0Y2E2ZDQzMTBlNmJiMzhlNjQ3ZTJmNmJlMmY5ZjdkOWYzMjY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTgxLDYgKzE4MSwxMSBA
QCBTeW1ib2xUYWJsZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC0+bV9yYXJlRGF0YS0+bV91bmlxdWVUeXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZh
bHVlKTsKICAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1l
IDogbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5t
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
eW1ib2xUYWJsZS5oCmluZGV4IGUyMzRkMzE0YzY5ZWQyZDExMTMyMzkxNGJhMjdkM2Q5MzE1NTI2
NzYuLjMxZjgxZmFlMDJmYjIwMWQzMjE4YmIwZmI0YzUyZDIyMWY0Y2Q2NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIldhdGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTQ1MCw2ICs0NTAsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1
ZVR5cGVTZXRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxT
eW1ib2xUYWJsZUVudHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVT
ZXQ7CisgICAgdHlwZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVT
ZXQ6Oml0ZXJhdG9yPiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCkBAIC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2Vy
LCBrZXksIHN0ZDo6Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBi
b29sIGhhc1ByaXZhdGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRl
TmFtZUl0ZXJhdG9yUmFuZ2UgcHJpdmF0ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBv
ZiB0aGUgSXRlcmF0b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFp
bHVyZXMgaW4gY2hlY2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVz
KCkpOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAg
IH0KKworICAgIHZvaWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8
U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoa2V5KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4K
ICAgICB2b2lkIHNldChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1w
bCoga2V5LCBFbnRyeSYmIGVudHJ5KQogICAgIHsKQEAgLTcyOSwxOCArNzQ5LDIxIEBAIHByaXZh
dGU6CiAgICAgU2NvcGVPZmZzZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRh
YmxlIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3Vz
ZXNOb25TdHJpY3RFdmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6
IDE7IC8vIE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5
cGUgOiAzOyAvLyBTY29wZVR5cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVE
YXRhIHsKICAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBV
bmlxdWVJRE1hcCBtX3VuaXF1ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1f
b2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5
cGVTZXRNYXA7CiAgICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwor
ICAgICAgICBQcml2YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRl
OgorICAgIHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1f
bmVzdGVkTGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAg
ICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFN5bWJvbFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJp
ZXI8U2NvcGVkQXJndW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBjZTUzMjlhOGY4N2E2MjE4ODk3
NjhjOWQ2ZTdjMjk5ZTQxMTgxZDgyLi5jZWE2NDgxOTY2NWI4YTk0NDg3NjBjMmE4NzM1YmY5Mjkw
ZjA5Yjk5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA1LTI4ICBDYWl0bGluIFBvdHRlciAgPGNhaXRw
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xh
c3MgZmllbGRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBFeHBhbmRzIHVwb24gdGhlIGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEg
bnVtYmVyIG9mIHByaXZhdGUKKyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9mLWxpbmUu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94
eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1v
Zi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
cHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanM6
CisgICAgICAgICogc3RyZXNzL2dldC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0
eS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZh
dGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2
YXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA1
LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGhhc093blBy
b3BlcnR5IGluc2lkZSBzdHJ1Y3R1cmUgcHJvcGVydHkgZm9yLWluIGxvb3Agc2hvdWxkIHVzZSBh
biBvcGNvZGUgbGlrZSBoYXNfc3RydWN0dXJlX3Byb3BlcnR5IGJ1dCBmb3IgaGFzT3duUHJvcGVy
dHkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1
bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rp
b24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODhhMTE2M2UxNjdlZDBkNmM1ZjY3NjU2ZDAxYjM0ZDg4Y2I3NGYy
ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LWFzLWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAg
aWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisK
KyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCits
ZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDJhNGY0MzU0Zjg5N2YxMTM3NDA4NzEyNjA0NmM2ZjFkZmQzZTdlOQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1i
eXRlY29kZS5qcwpAQCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VQ
cml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAg
aWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsg
IiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNmID0gMzsKKworICAgIG1l
dGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgYyA9IG5l
dyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjUzZjZiMjMxMDdkZGFhMmI0NWJjM2YwNThlYWJmMTFjZjAxOTNhCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1v
Zi1saW5lLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5j
dGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2Up
CisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRv
IGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGVxdWFscyhhLCBiKSB7Cisg
ICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAh
PT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7
YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFy
ZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJv
cGVydGllcyB0byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxp
bmUgcHJvcGVydHkgc3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAv
LyBNZXRob2RzCisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisg
ICAgJHtBcnJheSgyMDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5q
b2luKCIiKX0KKyAgfQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0
ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QuZnJlZXplKHRoaXMpLCA0Mik7
CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc0Zyb3plbih0aGlzKSwgIk9iamVjdC5pc0Zy
b3plbih0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsg
fQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAg
bGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0
LmVxdWFscyhjLngxNTAgPT09IDE1MCk7CisgIGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFs
cyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkp
OworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQyY2MwZmY5MmQ2
YmFjOWM4NGQ5MDY5NDM0ZjNiNzdkN2RmNWIyMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcwpAQCAtMCwwICsxLDQzIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNz
ZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAi
IikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsK
KyAgfSwgeworICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYm
IGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisK
K2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9
CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNl
IHsKKyAgI2kgPSAoT2JqZWN0LmZyZWV6ZSh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2Vy
dChPYmplY3QuaXNGcm96ZW4odGhpcyksICJPYmplY3QuaXNGcm96ZW4odGhpcykiKSwgdGhpcy4j
aSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4j
aSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVG
aWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGMueCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFs
cyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkp
OworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MWY3MThk
OTc0MjcwYWM4YTE5ZTVmN2JmMDUyMDBkZWI5Mzc2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDM5
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitm
dW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7
CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3Qg
bWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAg
IGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIg
KyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlC
YXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlz
LCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAg
ICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5k
cyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVy
biB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1l
dGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fz
c2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDg2
MjE2MDFkNWRlMzRhNDI4MzQ2ZDUxY2NmODIyZmJmNTYwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCww
ICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQor
CitsZXQga2xhc3NTb3VyY2UgPSBgCit2YXIgQyA9IGNsYXNzIHsKKyAgICBhc3NlcnRPdXRPZkxp
bmVWYWx1ZSgpIHsKKyAgICAgICAgYXNzZXJ0KHRoaXMuI2YyMDAsICJmb28iKTsKKyAgICB9Citg
OworCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwOyBpKyspIHsKKyAgICBrbGFzc1NvdXJjZSAr
PSAiICAgICNmIiArIGkgKyAiO1xuIjsKK30KKwora2xhc3NTb3VyY2UgKz0gIiAgICAjZjIwMCA9
IFwiZm9vXCI7XG59IjsKKworZXZhbChrbGFzc1NvdXJjZSk7CisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMjsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMuYXNzZXJ0T3V0T2ZMaW5l
VmFsdWUoKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUyZGI4YjE2YWUwZDVjYjdmM2Y1NTg1MjdlNDAwZWI1MjJjMWIzNjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50
LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSw1MiBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVj
dC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBp
ZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNz
YWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAg
ZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFs
c2UsIGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEg
PT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisg
ICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUg
JHtifWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZh
bCBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0
byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVy
dHkgc3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2Rz
CisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJh
eSgyMDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0K
KyAgfQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBl
eHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QucHJldmVudEV4dGVuc2lvbnModGhpcyksIDQy
KTsKKyAgI2Fzc2VydCA9IChhc3NlcnQuZmFsc2UoT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSwg
Ik9iamVjdC5pc0V4dGVuc2libGUodGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsg
cmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rp
b24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVu
c2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54MTUwID09PSAxNTApOworICBjLngxNTAgPSAwLjE7
CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVx
dWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgx
KTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1l
eHRlbnNpb25zLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVu
dC1leHRlbnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNjA5NzI3ODE0ZmM2MDVlMTA0YzY2NGQ2ZTNl
NjBlMmQ0YzVjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9
IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsK
KyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
JHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0s
IHsKKyAgZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkK
KyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8g
YmUgZmFsc2UsIGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAg
aWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0g
YikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0g
dG8gYmUgJHtifWApOworICB9Cit9KTsKKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkg
eworICAgIHRoaXMueCA9IDE7CisgIH0KK30KKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2
ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QucHJldmVudEV4dGVu
c2lvbnModGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQuZmFsc2UoT2JqZWN0LmlzRXh0
ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5pc0V4dGVuc2libGUodGhpcykiKSwgdGhpcy4jaSArIDEp
OworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7
IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGMueCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdl
dCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQor
bm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43NjFiMzBlNjJlMjgzOWFkNDc1MjMxZjM3Y2E0ZGZjNTExNjEwZDU0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGlu
ZS5qcwpAQCAtMCwwICsxLDUyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24g
YXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0
cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBmYWxzZShleHByLCBtZXNzYWdlID0g
IiIpIHsKKyAgICBpZiAoZXhwciA9PSB0cnVlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSBmYWxzZSwgYnV0IHdhcyAke2V4cHJ9YCkK
KyAgfSwKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBi
ID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCisv
LyBUaGUgYmFzZSBjbGFzcyBpcyBkZWNsYXJlZCBpbiBldmFsIHNwZWNpZmljYWxseSBzbyB0aGF0
IGl0IGNhbiBhZGQgZW5vdWdoCisvLyBwcm9wZXJ0aWVzIHRvIHRoZSBjbGFzcyB0byBzdG9yZSBw
cml2YXRlIGZpZWxkcyBpbiBvdXQtb2YtbGluZSBwcm9wZXJ0eSBzdG9yYWdlLgorbGV0IEJhc2Ug
PSBldmFsKGAoY2xhc3MgQmFzZSB7CisgIC8vIE1ldGhvZHMKKyAgY29uc3RydWN0b3IoKSB7Cisg
ICAgLy8gRGVmaW5lIHByb3BlcnRpZXMKKyAgICAke0FycmF5KDIwMCkubWFwKChfLCBpKSA9PiBg
ICB0aGlzLngke2l9ID0gJHtpfTtcbmApLmpvaW4oIiIpfQorICB9Cit9KWApOworCitjbGFzcyBQ
cml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0g
KE9iamVjdC5zZWFsKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc1Nl
YWxlZCh0aGlzKSwgIk9iamVjdC5pc1NlYWxlZCh0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAg
Z2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQor
CitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2
ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09IDE1MCk7CisgIGMueDE1
MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBh
c3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7
Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRl
c3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1z
ZWFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wODNlN2FiMzVkN2MxNGE2Yzc2OTEyNjI2Y2ZkMTI4MTdjNWEwYjA5Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcwpA
QCAtMCwwICsxLDQzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmll
bGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0
KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhy
b3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBi
dXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09
PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAg
ICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7
Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0
aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVu
c2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LnNlYWwodGhpcyksIDQyKTsKKyAg
I2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0LmlzU2VhbGVkKHRoaXMpLCAiT2JqZWN0LmlzU2VhbGVk
KHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9Cisg
IHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQg
YyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAwLjE7
CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVx
dWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgx
KTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwu
anMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mOTc4ODA1N2IxYmY0OTU1MGEwZThmM2Q5OGE5NDFhODM3Y2YxMWMzCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwu
anMKQEAgLTAsMCArMSwxNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz0xIiwgIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVz
c2FnZSk7Cit9CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihpKSA9PiBp
LiNiIik7CisKKyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fzc2VydChp
bnN0LmEoaW5zdCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3Ry
ZXNzLWluc3RhbmNlLmpzCmluZGV4IGU1MTYyOTlhNzkyYzYzODRiODQyYzY5N2Y0MWZjZWQ3ZjVj
ZmZmY2YuLjUwNjlhN2RhNWExNTVkY2MwNjA0ZTQ2MzJiOTBlODMwOTM5ZmU4MzYgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKKysrIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAtMSwxMSAr
MSwxNSBAQAotLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUi
KQorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUiLCAiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCiAKIGNsYXNzIEEgewogICAgIGEgPSAwOwogICAg
IGIgPSAxOworICAgICNjID0gMDsKKyAgICAjZCA9IDE7CiAgICAgZSA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIDA7IH07CisgICAgI2YgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDE7IH07CiAgICAgWyJn
Il0gPSAwOwogICAgIGggPSBldmFsKCJ0cnVlIik7CisgICAgI2kgPSBldmFsKCJmYWxzZSIpOwog
fQogCiBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9nZXQtcHJpdmF0ZS1maWVsZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRl
LWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNjMzNjJmYWE2M2U0MDU2MjVkMWZlY2VjZTk5YmNkMjY2
YjllYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1maWVs
ZC5qcwpAQCAtMCwwICsxLDI5IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKwor
Ly8gR2V0QnlWYWxEaXJlY3Qgc2hvdWxkIHRocm93IHdoZW4gdGhlIHJlY2VpdmVyIGRvZXMgbm90
IGhhdmUgdGhlIHJlcXVlc3RlZCBwcml2YXRlIHByb3BlcnR5CitsZXQgaSwgdGhyZXcgPSBmYWxz
ZTsKK2NsYXNzIEMgeworICAgICN4ID0gaTsKKyAgICBjb25zdHJ1Y3RvcigpIHsgaWYgKGkgPT09
IDMwKSByZXR1cm4geyBbU3ltYm9sLnRvU3RyaW5nVGFnXTogIndpdGhvdXQgI3gifTsgfQorICAg
IHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2JqLiN4OyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJp
bmdUYWddKCkgeyByZXR1cm4gIndpdGggI3giOyB9Cit9CisKK3RyeSB7CisgICAgZm9yIChpID0g
MDsgaSA8IDUwOyArK2kpIHsKKyAgICAgICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgbGV0IHJl
c3VsdCA9IEMueChjKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gaSkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54KCR7Y30pIHRvIGJlICR7aX0sIGJ1dCBmb3VuZCAk
e3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAg
IGlmIChpICE9PSAzMCB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAg
dGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRz
LmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg0MmNmMTJiNjRhMTY0MzAyZWQyN2Y1YjkxZTA3NTQ0NzFlMTE3ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQt
cHJpdmF0ZS1maWVsZHMuanMKQEAgLTAsMCArMSw5MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IChhLCBlKSA9PiB7CisgICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAg
fSwKKworICAgIHRocm93czogKGV4cGVjdGVkRXhjZXB0aW9uLCBmdW5jdG9yLCBtKSA9PiB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXhjZXB0aW9uKSkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7CisgICAgICAgIH0KKyAgICB9Cit9Owor
CisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAg
CisgICAgICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8/LiNmaWVs
ZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNj
ZXNzKGMpLCAndGVzdCcpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKHVuZGVm
aW5lZCksIHVuZGVmaW5lZCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MobnVs
bCksIHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgp
ID0+IHsKKyAgICAgICAgQy5hY2Nlc3Moe30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2
YXRlIGZpZWxkIHNob3VsZCB0aHJvdyIpOworfSkoKTsKKworLy8gQ2hhaW5lZCBjYXNlCisoKCkg
PT4geworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAg
ICAgIHN0YXRpYyBjaGFpbmVkQWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvLnByaXZh
dGU/LiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAg
bGV0IG8gPSB7cHJpdmF0ZTogY307CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkr
KykgeworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2VzcyhvKSwgJ3Rlc3Qn
KTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNoYWluZWRBY2Nlc3Moe30pLCB1bmRlZmlu
ZWQpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2Vzcyh7cHJpdmF0ZTog
bnVsbH0pLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgICAgIG8ucHJpdmF0ZSA9IHt9OworICAgICAgICBDLmNoYWluZWRBY2Nl
c3Mobyk7CisgICAgfSwgIk9iamVjdCB3aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRocm93
Iik7Cit9KSgpOworCisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisK
KyAgICAgICAgc2V0RmllbGQodikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAg
ICAgICB9CisgICAgCisgICAgICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgcmV0
dXJuIG8uI2ZpZWxkPy5wcm9wZXJ0eTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0g
bmV3IEM7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBj
LnNldEZpZWxkKHtwcm9wZXJ0eTogJ3Rlc3QnfSk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUo
Qy5hY2Nlc3MoYyksICd0ZXN0Jyk7CisKKyAgICAgICAgYy5zZXRGaWVsZCh1bmRlZmluZWQpOwor
ICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCB1bmRlZmluZWQpOworCisgICAg
ICAgIGMuc2V0RmllbGQobnVsbCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3Mo
YyksIHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgp
ID0+IHsKKyAgICAgICAgQy5hY2Nlc3Moe30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2
YXRlIGZpZWxkIHNob3VsZCB0aHJvdyIpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTlkOGUyMTkyM2YyMDI0ZDAyMjAyZjNhMmUxNmJiNDllMWY5NWIzZAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0
ZWQtcHJvcGVydHkuanMKQEAgLTAsMCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVB1YmxpY0NsYXNzRmllbGRzPTEiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xl
dCBhc3NlcnQgPSB7CisgICAgdGhyb3dzOiAoZXhwZWN0ZWRFcnJvciwgZnVuY3RvcikgPT4gewor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0
ZWRFcnJvci5uYW1lICsgIiBidXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjbGFzcyBCYXNl
IHsKKyAgICAgICAgW3t9LiN4XSA9IDE7IAorICAgICAgICAjeCA9ICJmb28iOworICAgIH0KK30p
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2
YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45MzEzNTQ2ODY5MjdmMzZjZWQ5YTk5YWVlNzQ0OTFkOGY3ZjIzMzc0Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0
ZS5qcwpAQCAtMCwwICsxLDM0IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKSAtLSBDdXJyZW50bHksIGVhZ2VyIEpJVCBpcyBub3Qgc3Vw
cG9ydGVkIGZvciBwcml2YXRlIGZpZWxkIGFjY2Vzcy4KKy8vQCBydW5EZWZhdWx0KCItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8v
IFByaXZhdGVGaWVsZCAiQ3JlYXRlIiBhY2Nlc3Mgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8g
YSBub24tZXhpc3RlbnQgUHJpdmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7
CitjbGFzcyBDIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGkgPCAyOSA/
IHRoaXMgOiBjOworICAgIH0KK30KKworY2xhc3MgQ0MgZXh0ZW5kcyBDIHsKKyAgICAjeCA9IGkr
KzsKKyAgICB4KCkgeyByZXR1cm4gdGhpcy4jeDsgfQorfQorCitjID0gbmV3IENDOwordHJ5IHsK
KyAgICBmb3IgKGxldCBqID0gMTsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IHggPSBuZXcg
Q0M7CisgICAgICAgIGlmICh4LngoKSAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgeC54KCkgdG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7eC54KCl9YCk7CisgICAg
fQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwg
ZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQor
fQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9y
LCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQt
YnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzODY1M2RkMjIyMTdkMWQx
NmU3MDY3ZDhhZDI0NTk4YzQ1OGNjODgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vIFRP
RE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpIC0tIEN1
cnJlbnRseSwgZWFnZXIgSklUIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgZmllbGQgYWNj
ZXNzLgorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1
bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gUHJpdmF0ZUZpZWxkICJQdXQiIGFjY2VzcyBz
aG91bGQgdGhyb3cgaWYgd3JpdGluZyB0byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xl
dCBjLCBpID0gMCwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICN4OworICAgIGNvbnN0
cnVjdG9yKCkgeyByZXR1cm4gaSA8IDMwID8gdGhpcyA6IHsgW1N5bWJvbC50b1N0cmluZ1RhZ106
ICJ3aXRob3V0ICN4IiB9OyB9CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBvYmouI3ggPSBp
Kys7IH0KKyAgICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCIg
fQorfQorCit0cnkgeworICAgIGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAg
ICBsZXQgb2JqID0gbmV3IEM7CisgICAgICAgIGxldCByZXN1bHQgPSBDLngob2JqKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgQy54KCR7b2JqfSkgdG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0K
K30gY2F0Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgLy8gcnZhbCBvZiBBc3NpZ25t
ZW50RXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYmVmb3JlIFByaXZhdGVGaWVsZEZpbmQoI3gsIGxy
ZWYpIGlzIHBlcmZvcm1lZCwKKyAgICAvLyB0aHVzIGBpYCBoYXMgYWxyZWFkeSBiZWVuIGluY3Jl
bWVudGVkLgorICAgIGlmIChpICE9PSAzMSB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3Ip
IHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDdiZWQwNjQ0YWIyNThkNWQxMDQ4NTEwOGYyYzU4ZmM2
ODgyNDkxMzMuLjgzYmY2N2U5MmNhMjc2NDI0ZmMwOWFlZDM1MDMwN2UwMTZlNDQxZjUgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKQEAgLTYsNiArNiw3IEBAIGZsYWdzOgogICBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdDogdXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwog
ICBjbGFzcy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxkcworICBjbGFzcy1maWVs
ZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCiBza2lwOgogICBmZWF0dXJlczoKICAg
ICAtIFNoYXJlZEFycmF5QnVmZmVyCkBAIC0xNCw3ICsxNSw2IEBAIHNraXA6CiAgICAgIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAt
bG9va2JlaGluZAogCi0gICAgLSBjbGFzcy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0
aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xh
c3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400469</attachid>
            <date>2020-05-28 09:05:44 -0700</date>
            <delta_ts>2020-05-28 12:38:09 -0700</delta_ts>
            <desc>Patch v21</desc>
            <filename>bug-206431-20200528120544.patch</filename>
            <type>text/plain</type>
            <size>198310</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Nzc2YmJhZDIyODFkZTJmYjlmZDc4MGIwZjc5MDllZjgwNWI1ZDJlLi4yMGY1YzUyOTI1ODQxYmNl
NTBjOWE5YjJjMGNjNGJmNGQwMzE5OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjkgQEAKKzIwMjAtMDUtMjggIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X3ByaXZhdGVfbmFtZSksIG9uZSBjaGFuZ2VkIG9wY29k
ZSAob3BfcHV0X2J5X3ZhbF9kaXJlY3QpLgorICAgICAgICAgICAgLSBBIG1ldGhvZCBmb3IgY3Jl
YXRpbmcgU3ltYm9sIG9iamVjdHMgd2l0aCBhIG51bGwgUHJpdmF0ZVN5bWJvbEltcGwgaXMgZXhw
b3NlZCBhcyBhCisgICAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgKEBjcmVhdGVQcml2YXRl
U3ltYm9sKS4KKyAgICAgICAgICAgIC0gTnVsbCBQcml2YXRlIFN5bWJvbHMgYXJlIHN0b3JlZCBi
eSBuYW1lIChub3QgYSB2YWxpZCBpZGVudGlmaWVyKSBpbiBhIEpTU2NvcGUsIGFuZAorICAgICAg
ICAgICAgICBhcmUgbG9hZGVkIGZyb20gdGhlIG91dGVyIHNjb3BlIHdoZW5ldmVyIHRoZXkgYXJl
IHVzZWQgYnkgdGhlIG1vZGlmaWVkIG9wY29kZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgdG8g
b3BfcHV0X2J5X3ZhbF9kaXJlY3QgaW5jbHVkZSBhIG5ldyBieXRlY29kZSBvcGVyYW5kIChQdXRC
eVZhbEZsYWdzKSB3aGljaCBhcmUKKyAgICAgICAgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IG92ZXJ3cml0aW5nIG9yIGRlZmluaW5nIGEgbmV3IHByaXZhdGUgZmllbGQuIFNwZWNpZmljYWxs
eSwgd2hlbiBpdAorICAgICAgICBjb21lcyB0byBwcml2YXRlIGZpZWxkIGFjY2Vzc2VzLCBpdCdz
IG5lY2Vzc2FyeSB0byB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcgYSBmaWVsZAor
ICAgICAgICB3aGljaCBkb2VzIG5vdCBleGlzdCwgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGRlZmlu
ZSBhIHByaXZhdGUgZmllbGQgd2hpY2ggaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBkZWZpbmVk
LgorCisgICAgICAgIER1cmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIGNsYXNzIGV4cHJlc3Npb24s
IGJlZm9yZSB0aGUgY2xhc3MgZWxlbWVudCBsaXN0IGlzIGV2YWx1YXRlZCAoaW4gY2FzZQorICAg
ICAgICBhbnkgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgZXhwcmVzc2lvbnMgcmVmZXIgdG8gYSBu
ZXcgcHJpdmF0ZSBmaWVsZCksIGEgbmV3IFByaXZhdGVTeW1ib2wgaXMKKyAgICAgICAgY3JlYXRl
ZCBmb3IgZWFjaCBpbmRpdmlkdWFsIHByaXZhdGUgZmllbGQgbmFtZSwgYW5kIHN0b3JlZCBpbiB0
aGUgY2xhc3MgbGV4aWNhbCBzY29wZS4KKworICAgICAgICBQcml2YXRlIGZpZWxkIG5hbWVzIGFy
ZSBsb2FkZWQgZnJvbSBzY29wZSBiZWZvcmUgdGhlaXIgdXNlLiBUaGlzIHByZXZlbnRzIG11bHRp
cGxlIGV2YWx1YXRpb25zCisgICAgICAgIG9mIHRoZSBzYW1lIGNsYXNzIHNvdXJjZSBmcm9tIGFj
Y2Vzc2luZyBlYWNoIG90aGVyJ3MgcHJpdmF0ZSBmaWVsZHMsIGJlY2F1c2UgdGhlIHZhbHVlcyBv
ZiB0aGUKKyAgICAgICAgc3ltYm9scyBsb2FkZWQgZnJvbSB0aGUgY2xhc3Mgc2NvcGUgd291bGQg
YmUgZGlzdGluY3QuIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHByb3Bvc2FsIHRleHQsCisgICAg
ICAgIGFuZCBpcyB0aGUga2V5IHJlYXNvbiB3aHkgd2UgdXNlIEJ5VmFsIGxvb2t1cHMgcmF0aGVy
IHRoYW4gQnlJZCBsb29rdXBzLgorCisgICAgICAgIFRvIGlsbHVzdHJhdGUsIHR5cGljYWwgcHJp
dmF0ZSBmaWVsZCBhY2Nlc3Mgd2lsbCBsb29rIGxpa2U6CisKKyAgICAgICAgPEZpZWxkIFJlYWRz
PgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAi
I3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJv
bD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFBy
b3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBnZXRfcHJpdmF0ZV9uYW1l
ICAgPHZhbHVlPT4sIDxyZWNlaXZlciAtLS0gcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4KKwor
ICAgICAgICA8RmllbGQgV3JpdGVzPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3Bl
PT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRf
ZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhy
b3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAg
ICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3lt
Ym9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWU+CisKKyAgICAgICAgPEZpZWxkIERl
ZmluaXRpb24+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRT
Y29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAg
ICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8
R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92
YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+
LCA8UHV0QnlWYWxQcml2YXRlTmFtZXxQdXRCeVZhbFRocm93SWZFeGlzdHM+CisKKyAgICAgICAg
VGhlIGZlYXR1cmUgaXMgY3VycmVudGx5IGhpZGRlbiBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBK
U0M6Ok9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxG
bGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
UHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNEaXJlY3Qg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjplY21hTW9kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFjY2VzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkUHV0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpQdXRCeVZhbEZsYWdzKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJp
YWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlBy
ZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRz
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAg
ICAgKEpTQzo6ZGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9p
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9w
cmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVP
cHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlE
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChK
U0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJU
eXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
bGV4V2l0aG91dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlm
eURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2Nv
cGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4
cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkJh
c2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6dHlwZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dCk6CisgICAgICAgICog
cGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNQcml2YXRlTmFtZVNjb3Bl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzUHJpdmF0ZU5hbWVTY29wZSk6Cisg
ICAgICAgIChKU0M6OlNjb3BlOjpoYXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlNjb3Bl
Ojpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhh
c1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZmluZFByaXZhdGVOYW1lU2NvcGUpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI6OnByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjptYXRjaEFuZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyVG9rZW5zLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVy
YXRvcj0pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAg
ICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVOYW1lRW50cnk6OnNldElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50
cnk6OnNldElzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1l
bnQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVByaXZhdGVOYW1lc1RvIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNU
byBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhOjpS
YXJlRGF0YSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmdldE9yQWRkUHJp
dmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRPcHRpb25hbDo6ZGVjb2RlQXNQdHIgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6ZW5jb2RlKToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxl
OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVy
czo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVk
ZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgICog
cnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1
cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoK
KwogMjAyMC0wNS0yOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
R2FyZGVuaW5nOiBBZGQgYW4gYXNzZXJ0Tm9FeGNlcHRpb24oKSB0byBwbGFjYXRlIHRoZSBleGNl
cHRpb24gY2hlY2tlciBhbmQgZ3JlZW4gdGhlIGJvdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggOTFhNmUzYTFiMDQwZTBhZWZlY2Q5MzUzMjdmZGFkNmU5MjEzMzlkNC4u
YThmNmRjOWYyYzcyMDBmOGNhYzRhMmQxZDI0YTVmZWQ2ZDVlOGFiMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTQwLDYgKzU0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYnl0ZWNvZGUvT3BlcmFuZHMuaAogICAg
IGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKICAgICBieXRlY29kZS9QdXRCeUlkRmxhZ3Mu
aAorICAgIGJ5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuaAogICAgIGJ5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAogICAgIGJ5dGVjb2RlL1N1cGVyU2Ft
cGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzZTgyMGVhZjM4MGNkYzdj
YzRlNDBhOGNjZjMxZmQzZGExNWJmNGQuLjFlMmU0MTE4NjdiZjU5ZWUxZDZlOTUzZmE2NTQ4ZWU2
YTUyN2Q2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDYgKzEyNTAs
NyBAQAogCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODAxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJKSVQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NjcwNEI4ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODExMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0
QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAv
KiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2ODkxNkIwMTU1
RjI4NjMwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVO
YW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODY4OTIxQzIxRjlDMENCNzAwMTE1OUY2IC8qIEpTQmlnSW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MjFDMTFGOUMwQ0I3MDAxMTU5RjYgLyog
SlNCaWdJbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njk3NkU1QTFGQTM3NThB
MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQxMTQsNiArNDExNSw4IEBACiAJCTg2NzA0QjgxMTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFlhcnJQYXJzZXIuaDsgcGF0aCA9IHlhcnIvWWFyclBhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NjcwNEI4MjEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gWWFyclBhdHRlcm4u
Y3BwOyBwYXRoID0geWFyci9ZYXJyUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NzA0QjgzMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBZYXJyUGF0dGVybi5oOyBwYXRoID0geWFyci9ZYXJy
UGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNjIzNDY0NTBC
MDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXRCeVZhbEZsYWdz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZG
MyAvKiBQdXRCeVZhbEZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEYxQjE0MzI4QkI5MDBCMDhE
NDIgLyogREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgcGF0aCA9IGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4
ODBGNEMxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHBh
dGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFtZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlTmFtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtODQwMCw2ICs4NDAzLDggQEAKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4
NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICovLAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCisJCQkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8q
IFB1dEJ5VmFsRmxhZ3MuY3BwICovLAorCQkJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtp
bmQuaCAqLywKIAkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNl
cy5jcHAgKi8sCiAJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVz
ZXMuaCAqLywKQEAgLTEwMTQ4LDYgKzEwMTUzLDcgQEAKIAkJCQkwRjE1Q0QyMzFCQTVGOTg2MDAz
MUZGRDMgLyogUHV0QnlJZEZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNDE0Q0E3
REQ5MDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5M0I0
QUExOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQ0Q0QzIxNUYxQTYwNzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5RkM4QzUxNEUxQjYwNDAwRDUyQUUwIC8qIFB1dEtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0N0I4NDYzMEU2REU2QjEwMDQ3NzVBNCAvKiBQdXRQcm9w
ZXJ0eVNsb3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4
IDJlOTVmYjVmOGQzOGIxZTI5YzUxM2I2ZmMwYzgyNWJlZDVkMGIyNDIuLjZjYWU0ZDRiZTA4MWZj
MmY0NTBkOTUxYWRlZWE3NzEyYzAxYmJkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQK
QEAgLTI2OCw2ICsyNjgsNyBAQCBieXRlY29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0
ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmNwcAorYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKIGJ5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAog
Ynl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMmNmNjE5ZDI4ZGUzNjU1MWM0MGJlMjQyZmI0OTQ3
ZmZhOGI0MmFlMy4uNzQ1NDg4YmVkYTA0MWVhNzlhOTNjMTVmNDdlOGY0YzQyNjM5OWE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMTY5
LDcgKzE2OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdlYkFzc2VtYmx5Q29tcGls
ZVN0cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8od2ViQXNzZW1ibHlJbnN0YW50aWF0ZVN0
cmVhbWluZ0ludGVybmFsKSBcCiAgICAgbWFjcm8oaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyKSBc
Ci0gICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlvbikgCisgICAgbWFjcm8oaGFzT3duUHJv
cGVydHlGdW5jdGlvbikgXAorICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpCiAKIG5hbWVz
cGFjZSBTeW1ib2xzIHsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTKG5h
bWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBs
IG5hbWUjI1N5bWJvbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0LnJiCmluZGV4IDBiZDZhMDdmZmIwZTMxNzk1ZjE0NmJhNDg1NDFhYmM1ZTU4ZTJiZTgu
LmQzZTY3OGI1MmQzM2MzZWQ2OWNmY2ZjYWY4MzM0N2ZmZGQyNWExOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAtNDksNiArNDksNyBA
QCB0eXBlcyBbCiAgICAgOlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLAogICAgIDpQcm9wZXJ0eU9m
ZnNldCwKICAgICA6UHV0QnlJZEZsYWdzLAorICAgIDpQdXRCeVZhbEZsYWdzLAogICAgIDpSZXNv
bHZlVHlwZSwKICAgICA6U3RydWN0dXJlLAogICAgIDpTdHJ1Y3R1cmVJRCwKQEAgLTU1MCw2ICs1
NTEsMTkgQEAgb3AgOmdldF9ieV92YWwsCiAgICAgICAgIHNlZW5JZGVudGlmaWVyczogR2V0QnlW
YWxIaXN0b3J5LAogICAgIH0KIAorb3AgOmdldF9wcml2YXRlX25hbWUsCisgICAgYXJnczogewor
ICAgICAgICBkc3Q6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lz
dGVyLAorICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAorICAgIH0sCisgICAgbWV0
YWRhdGE6IHsKKyAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAorICAgICAgICBzdHJ1Y3R1
cmVJRDogU3RydWN0dXJlSUQsCisgICAgICAgIG9mZnNldDogdW5zaWduZWQsCisgICAgICAgIHBy
b3BlcnR5OiBXcml0ZUJhcnJpZXJbSlNDZWxsXSwKKyAgICB9CisKIG9wIDpwdXRfYnlfdmFsLAog
ICAgIGFyZ3M6IHsKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lzdGVyLApAQCAtNTc1LDcgKzU4
OSw3IEBAIG9wIDpwdXRfYnlfdmFsX2RpcmVjdCwKICAgICAgICAgYmFzZTogVmlydHVhbFJlZ2lz
dGVyLAogICAgICAgICBwcm9wZXJ0eTogVmlydHVhbFJlZ2lzdGVyLAogICAgICAgICB2YWx1ZTog
VmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBlY21hTW9kZTogRUNNQU1vZGUsCisgICAgICAgIGZs
YWdzOiBQdXRCeVZhbEZsYWdzLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKICAgICAgICAgYXJy
YXlQcm9maWxlOiBBcnJheVByb2ZpbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcAppbmRleCBhMzE5MGYyZGQ1ZDNiNmQyZmRiY2VmOGUw
MjBmZWIzY2ZjNzU4NTA0Li5iMGYyZTgwMmQ3MjdjN2Y4ZTMyOTRjMTU1YjkxY2IyYzhkYmU5ZTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5jcHAKQEAgLTIxMyw2ICsyMTMsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVJbmRl
eEltcGwoVmlydHVhbFJlZ2lzdGVyIHNjb3BlUmVnaXN0ZXIsIGNvbnN0IEluc3RydQogICAgIFVT
RVMoT3BFbnVtZXJhdG9yU3RydWN0dXJlUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVT
RVMoT3BFbnVtZXJhdG9yR2VuZXJpY1BuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VT
KE9wR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5KQorICAgIFVTRVMoT3BHZXRQcml2YXRlTmFtZSwg
YmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcEluQnlWYWwsIGJhc2UsIHByb3BlcnR5KQogICAg
IFVTRVMoT3BPdmVycmlkZXNIYXNJbnN0YW5jZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlVmFs
dWUpCiAgICAgVVNFUyhPcEluc3RhbmNlb2YsIHZhbHVlLCBwcm90b3R5cGUpCkBAIC00MjgsNiAr
NDI5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlSW5kZXhJbXBsKHVuc2lnbmVkIG51
bVZhcnMsIGNvbnN0IEluc3RydWN0aW9uKiBpbnN0cnUKICAgICBERUZTKE9wSW5zdGFuY2VvZiwg
ZHN0KQogICAgIERFRlMoT3BJbnN0YW5jZW9mQ3VzdG9tLCBkc3QpCiAgICAgREVGUyhPcEdldEJ5
VmFsLCBkc3QpCisgICAgREVGUyhPcEdldFByaXZhdGVOYW1lLCBkc3QpCiAgICAgREVGUyhPcFR5
cGVvZiwgZHN0KQogICAgIERFRlMoT3BJZGVudGl0eVdpdGhQcm9maWxlLCBzcmNEc3QpCiAgICAg
REVGUyhPcElzRW1wdHksIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNWE5Mzg0MDczMTY2MDdkMmYxNmVlNmQ2ZjA3YzE2NDViY2M1Nzhm
NS4uM2QwZTU3NmJiZjQ2ZTlkM2E0Y2FlNmRkMGQzMWU3NzI3N2IzOTIxYyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTEyNTEsNiArMTI1MSwx
OSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CiAgICAgICAgIH0pOwogCisgICAgICAgIG1fbWV0
YWRhdGEtPmZvckVhY2g8T3BHZXRQcml2YXRlTmFtZT4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewor
ICAgICAgICAgICAgSlNDZWxsKiBwcm9wZXJ0eSA9IG1ldGFkYXRhLm1fcHJvcGVydHkuZ2V0KCk7
CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0
dXJlSUQ7CisKKyAgICAgICAgICAgIGlmICgoIXByb3BlcnR5IHx8IHZtLmhlYXAuaXNNYXJrZWQo
cHJvcGVydHkpKSAmJiAoIXN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5z
dHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KHN0cnVjdHVyZUlEKSkpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2xlYXJpbmcgTExJbnQgcHJpdmF0ZSBwcm9wZXJ0eSBhY2Nlc3MuIik7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0
ID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuY2xlYXIoKTsKKyAgICAgICAg
fSk7CisKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcFB1dEJ5SWQ+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9vbGRTdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG5ld1N0cnVj
dHVyZUlEID0gbWV0YWRhdGEubV9uZXdTdHJ1Y3R1cmVJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRml0cy5oCmluZGV4IDBkOTU3MDkyNmFiMTQ3Mzc4ZWMzMTcyODM4ZGIyMzU4ODJkYjdi
Y2QuLjM5ZmVlMGE2NjlhMjgyNjU4NWEyYTQ5MjJhMzgyYmY2YjhhMGFhZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk9w
Y29kZVNpemUuaCIKICNpbmNsdWRlICJQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5oIgogI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRl
ICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGVPclNjb3BlRGVwdGguaCIKICNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKQEAgLTI1Niw2ICsyNTcsNDcgQEAgc3RydWN0IEZp
dHM8UHV0QnlJZEZsYWdzLCBzaXplPiB7CiAgICAgICAgIHJldHVybiBpc0RpcmVjdCA/IFB1dEJ5
SWRGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2RlKSA6IFB1dEJ5SWRGbGFnczo6Y3JlYXRlKGVj
bWFNb2RlKTsKICAgICB9CiB9OworCit0ZW1wbGF0ZTxPcGNvZGVTaXplIHNpemU+CitzdHJ1Y3Qg
Rml0czxQdXRCeVZhbEZsYWdzLCBzaXplPiB7CisgICAgdXNpbmcgVGFyZ2V0VHlwZSA9IHR5cGVu
YW1lIFR5cGVCeVNpemU8c2l6ZT46OnVuc2lnbmVkVHlwZTsKKworICAgIC8vIFB1dEJ5VmFsRmxh
Z3MgaXMgMiBib29sZWFucyBhbmQgYSAyIGJpdCBlbnVtLCBlbmNvZGVkIGFzOgorICAgIC8vICAg
ICAgICAgIGlzU3RyaWN0CisgICAgLy8gICAgICAgICAgICAgdgorICAgIC8vICAgICAwMDAwfDAw
fDB8MCA8IGlzRGlyZWN0CisgICAgLy8gICAgICAgICAgIF4KKyAgICAvLyAgICBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kIHswID0gTm9uZSwgMSA9IFB1dCwgMiA9IENyZWF0ZSB9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQgc19pc0RpcmVjdEJpdCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBp
bnQgc19pc1N0cmljdEJpdCA9IDI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRl
RmllbGRBY2Nlc3NLaW5kTWFzayA9IDEyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0ID0gMjsKKworICAgIHN0YXRpYyBib29sIGNoZWNrKFB1
dEJ5VmFsRmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBz
dGF0aWMgVGFyZ2V0VHlwZSBjb252ZXJ0KFB1dEJ5VmFsRmxhZ3MgZmxhZ3MpCisgICAgeworICAg
ICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuaXNEaXJlY3Qo
KSk7CisgICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkpOworICAgICAgICBhdXRvIHByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkp
OworICAgICAgICByZXR1cm4gKHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgPDwgc19wcml2YXRlRmll
bGRBY2Nlc3NLaW5kU2hpZnQpIHwgKGlzU3RyaWN0IDw8IDEpIHwgaXNEaXJlY3Q7CisgICAgfQor
CisgICAgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY29udmVydChUYXJnZXRUeXBlIGdwaSkKKyAgICB7
CisgICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBzX2lzRGly
ZWN0Qml0KTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAm
IHNfaXNTdHJpY3RCaXQpOworICAgICAgICBhdXRvIGFjY2VzcyA9IHN0YXRpY19jYXN0PFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ+KChncGkgJiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRNYXNrKSA+
PiBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCk7CisgICAgICAgIGF1dG8gZWNtYU1vZGUg
PSBpc1N0cmljdCA/IEVDTUFNb2RlOjpzdHJpY3QoKSA6IEVDTUFNb2RlOjpzbG9wcHkoKTsKKyAg
ICAgICAgcmV0dXJuIGFjY2VzcyA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lID8KKyAg
ICAgICAgICAgIGlzRGlyZWN0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVjbWFNb2Rl
KSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZShlY21hTW9kZSkgOgorICAgICAgICAgICAgYWNjZXNz
ID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1
dFByaXZhdGVGaWVsZChlY21hTW9kZSkgOiBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2
YXRlRmllbGQoZWNtYU1vZGUpOworICAgIH0KK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEUsIE9w
Y29kZVNpemUgc2l6ZT4KIHN0cnVjdCBGaXRzPEUsIHNpemUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c2l6
ZW9mKEUpICE9IHNpemUgJiYgc3RkOjppc19lbnVtPEU+Ojp2YWx1ZSwgc3RkOjp0cnVlX3R5cGU+
PiA6IHB1YmxpYyBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+IHsKICAgICB1
c2luZyBCYXNlID0gRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCmluZGV4
IGU0ZGM5NWNiMGEyNjk5NTE2NmUwNjZmNGU1ZGI1ZDU3ZTc2OGIxZDAuLjFiMDcwMGRmNjc1NWMy
YzU2N2ZiODU3OTFlMDZlZWNjNDJlYTBlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaApAQCAtMTA1LDYgKzEwNSw3IEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgIHYoYXBwbHlGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYo
Y2FsbEZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uLCBu
dWxscHRyKSBcCisgICAgdihjcmVhdGVQcml2YXRlU3ltYm9sLCBudWxscHRyKSBcCiAKIAogI2Rl
ZmluZSBERUNMQVJFX0xJTktfVElNRV9DT05TVEFOVChuYW1lLCBjb2RlKSBuYW1lLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ4ZTkwZmQwN2QwZDM3MTMwMjJkZGQ4OWU5NjY1NjNiMDVmNjQwYTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQ
cmludGVyLmg+CisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1N0
cmluZ1ByaW50U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgUHV0QnlWYWxGbGFn
cyBmbGFncykKK3sKKyAgICBDb21tYVByaW50ZXIgY29tbWEoInwiKTsKKyAgICBpZiAoZmxhZ3Mu
aXNEaXJlY3QoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiRGlyZWN0Iik7CisgICAgaWYg
KGZsYWdzLmlzUHJpdmF0ZUZpZWxkUHV0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIlBy
aXZhdGVGaWVsZCtQdXQiKTsKKyAgICBpZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxkK0FkZCIpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxG
bGFncy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY1ZmZkNzk3ZjY1ODc4NzljMGMzMjE1OWM5NjUwMjgyODJhMzlm
Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEln
YWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlN0cnVjdHVyZUlEVGFibGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2VudW0gY2xhc3MgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA6IHVpbnQ4X3Qgewor
ICAgIE5vbmUsCisgICAgUHV0LAorICAgIENyZWF0ZSwKK307CisKK2NsYXNzIFB1dEJ5VmFsRmxh
Z3MgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGUo
RUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhm
YWxzZSwgZWNtYU1vZGUpOworICAgIH0KKworICAgIC8vIEEgZGlyZWN0IHB1dF9ieV9pZCBtZWFu
cyB0aGF0IHdlIHN0b3JlIHRoZSBwcm9wZXJ0eSB3aXRob3V0IGNoZWNraW5nIGlmIHRoZQorICAg
IC8vIHByb3RvdHlwZSBjaGFpbiBoYXMgYSBzZXR0ZXIuCisgICAgY29uc3RleHByIHN0YXRpYyBQ
dXRCeVZhbEZsYWdzIGNyZWF0ZURpcmVjdChFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKHRydWUsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICBj
b25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKEVD
TUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZVB1dFByaXZhdGVGaWVsZChFQ01BTW9k
ZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQ6OlB1dCwgZWNtYU1vZGUpOworICAgIH0KKworICAgIGJvb2wgaXNEaXJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2lzRGlyZWN0OyB9CisgICAgRUNNQU1vZGUgZWNtYU1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2VjbWFNb2RlOyB9CisgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2VzcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpO
b25lOyB9CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZFB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQ7IH0KKyAg
ICBib29sIGlzUHJpdmF0ZUZpZWxkQWRkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZTsgfQorCitwcml2YXRl
OgorCisgICAgY29uc3RleHByIFB1dEJ5VmFsRmxhZ3MoYm9vbCBpc0RpcmVjdCwgRUNNQU1vZGUg
ZWNtYU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdChpc0RpcmVjdCkKKyAgICAgICAgLCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkKKyAgICAg
ICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdGV4cHIg
UHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRBY2Nlc3NLaW5kIGFjY2VzcywgRUNNQU1vZGUgZWNt
YU1vZGUpCisgICAgICAgIDogbV9pc0RpcmVjdCh0cnVlKQorICAgICAgICAsIG1fcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZChhY2Nlc3MpCisgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAg
ICB7CisgICAgfQorCisgICAgYm9vbCBtX2lzRGlyZWN0OworICAgIFByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kOworICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFBy
aW50U3RyZWFtOworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OlB1dEJ5
VmFsRmxhZ3MpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0S2luZC5oCmluZGV4IDYxMTI3OWY2MDlhMDg1ODlhZGNlOTFjMmE1YzhhZjY0ODA4
MGM0YzYuLmY5MGQ1MjlkMmFlYmIzY2Q5NWM4YjQ1N2I2NDhiNWY3NGI4ZmIxM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaApAQCAtMjcsNiArMjcsNiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QgfTsKK2Vu
dW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGlyZWN0LCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUs
IERpcmVjdFByaXZhdGVGaWVsZFB1dCB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCmluZGV4IGJjZjdkM2FkODVlYjFmY2ZkNDFmYjdmODkxMDIyZWI5Yjdm
ZDdkNTcuLjQ2MWQ5ZmFkZDQ4YjM1YmM5NGVkZDYxMGI3Mzg3Y2VhOTAyYzE0ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIEFT
U0VSVChpc0Z1bmN0aW9uUGFyc2VNb2RlKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSk7CiAgICAg
VmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9IGV4ZWN1dGFi
bGUtPmluc3RhbmNlRmllbGRMb2NhdGlvbnMoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rp
b25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAgICAgIHZtLCBzb3Vy
Y2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1v
ZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwg
ZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBl
OjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpOworICAgICAgICB2bSwgc291cmNlLCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5N
b2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhl
Y3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBu
dWxscHRyLCBudWxscHRyLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGlmICghZnVu
Y3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IGE4MDU1MDhiZjczN2UxMTQ1MjE1ZjVhMjU3ZjFmMmM2NjU3MjA5MTMuLmVjOGRiNzc0
ZTllYzU5OGYyODZmYjU0NzM1ZTI3ZWQyMDc0ZWVlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0x
ODkyLDYgKzE4OTIsMTEgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhp
Y2FsVmFyaWFibGVzKGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGwKIAogICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBuZXdFbnRyeSh2YXJPZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihlbnRyeS52YWx1ZS5pc0NvbnN0KCkgPyBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgOiBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6Tm9uZSkpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZChO
b0xvY2tpbmdOZWNlc3NhcnksIGVudHJ5LmtleS5nZXQoKSwgbmV3RW50cnkpOworCisgICAgICAg
ICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4g
YSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjYzCisgICAg
ICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICAgICAgICAg
IHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI2OTMsOSArMjY5
OCwxNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RHZXRCeVZhbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAg
IE9wR2V0UHJpdmF0ZU5hbWU6OmVtaXQodGhpcywgZHN0LCBiYXNlLCBwcm9wZXJ0eSk7CisgICAg
cmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpCiB7Ci0gICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBw
cm9wZXJ0eSwgdmFsdWUsIGVjbWFNb2RlKCkpOworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQo
dGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3Qo
ZWNtYU1vZGUoKSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjcxNyw2ICsyNzI4LDE4
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0SW50ZXJuYWxGaWVsZChS
ZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7Cisg
ICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1
dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChlY21hTW9kZSgpKSk7CisgICAg
cmV0dXJuIHZhbHVlOworfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBy
aXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpCit7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZVB1dFByaXZhdGVGaWVsZChl
Y21hTW9kZSgpKSk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQogewogICAgIE9wU3VwZXJTYW1wbGVyQmVnaW46
OmVtaXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNGIxZWZiODlkNjA4N2E0YmYwMzk1YTYxYTJi
YmNjYmZiYzE1NTBlNS4uNzc0MjUzMTU0MmU0MTRkYjgzYjk0MDU1NzY5MWNjY2QzNTk1MWU2OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtODEwLDExICs4MTAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlW
YWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgdW5zaWduZWQgaW5kZXgpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0SW50
ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVnaXN0ZXJJRCog
dmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKIAogICAgICAgICB2b2lk
IGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJF
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCAxYWZjMmU0YmJjYTJmYmQ5NmZmYjIyNjM0NzEwNjAxZDRlNTcyYWY0
Li5iOWM3MjljMTI0ZjBmMDViNzdlN2JlZjQ3NDFmZjFkOTU2ZjViY2IwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01
NDQsMTEgKzU0NCwzMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZW1pdFB1dEhvbWVPYmplY3QoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZgogICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChmdW5jdGlvbiwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5ob21lT2JqZWN0UHJpdmF0ZU5hbWUoKSwgaG9tZU9iamVjdCk7CiB9CiAKK3ZvaWQgUHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzY29wZSkKK3sKKyAgICAvLyBXYWxrIHRoZSBs
aXN0IGFuZCBkZWNsYXJlIGFueSBQcml2YXRlIHByb3BlcnR5IG5hbWVzIChlLmcuIGAjZm9vYCkg
aW4gdGhlIHByb3ZpZGVkIHNjb3BlLgorICAgIGZvciAoUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRo
aXM7IHA7IHAgPSBwLT5tX25leHQpIHsKKyAgICAgICAgY29uc3QgUHJvcGVydHlOb2RlJiBub2Rl
ID0gKnAtPm1fbm9kZTsKKyAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQ
cml2YXRlKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY3JlYXRlUHJpdmF0ZVN5
bWJvbCA9IGdlbmVyYXRvci5tb3ZlTGlua1RpbWVDb25zdGFudChudWxscHRyLCBMaW5rVGltZUNv
bnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKTsKKworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBhcmd1bWVudHMoZ2VuZXJhdG9yLCBudWxscHRyLCAwKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZChhcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN5bWJvbCA9IGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihudWxscHRyLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdl
dCgpKSwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmd1
bWVudHMsIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIERlYnVnZ2FibGVDYWxs
OjpObyk7CisKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgq
bm9kZS5uYW1lKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKHNjb3Bl
LCB2YXIsIHN5bWJvbC5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9u
TW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9CisKIFJlZ2lz
dGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90
b3R5cGUsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7
Ci0gICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFsdWUg
cHJvcGVydGllcy4KICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKICAgICBSZWdpc3Rl
cklEKiBkc3QgPSBudWxscHRyOworCisgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBo
YW5kbGVzIHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KICAgICBmb3IgKDsgcCAmJiAocC0+bV9u
b2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkgewog
ICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90
b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCkBAIC03MTAsNiArNzI5LDkgQEAgUmVnaXN0ZXJJ
RCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3RhbnRQ
cm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBuZXdPYmos
IFByb3BlcnR5Tm9kZSYgbm9kZSkKIHsKKyAgICAvLyBQcml2YXRlIGZpZWxkcyBhcmUgaGFuZGxl
ZCBpbiB0aGUgc3ludGhldGljIGluc3RhbmNlRmllbGRJbml0aWFsaXplciBmdW5jdGlvbiwgbm90
IGhlcmUuCisgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUp
KTsKKwogICAgIGJvb2wgc2hvdWxkU2V0RnVuY3Rpb25OYW1lID0gZ2VuZXJhdG9yLnNob3VsZFNl
dEZ1bmN0aW9uTmFtZShub2RlLm1fYXNzaWduKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9wZXJ0eU5hbWU7CkBAIC04NDAsMTYgKzg2Miw2NiBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nv
ck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cgogICAgIH0KIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKGJh
c2VJc1N1cGVyKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5l
cmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
ZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOwot
ICAgIH0gZWxzZQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0
LmdldCgpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQgPSBlbWl0
R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSk7
CisKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdC5nZXQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQogCitSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJ
RD4mIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUg
c3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUu
Z2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRlTmFt
ZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAg
ICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5l
bnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBi
YXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJRCog
QmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1ZShn
ZW5lcmF0b3IsIGRzdCwgYmFzZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFzZURv
dE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlz
VmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBp
biBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFs
dWUpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAg
aWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJl
VGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIHRoaXNW
YWx1ZS5nZXQoKSwgbV9pZGVudCwgdmFsdWUpOworICAgIH0KKworICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZSwgbV9pZGVudCwgdmFsdWUpOworfQorCitSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3Is
IGJhc2UsIHZhbHVlLCB0aGlzVmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQXJndW1lbnRMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBSZWdpc3RlcklEKiBBcmd1bWVudExpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMTczNCwxMSArMTgwNiw5IEBA
IFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE9wdGlv
bmFsQ2hlY2soY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSk7CiAgICAgfQogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGlmIChiYXNlSXNTdXBlcikgewot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJCYXNlID0gZW1pdFN1cGVyQmFzZUZvckNh
bGxlZShnZW5lcmF0b3IpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24u
Z2V0KCksIHN1cGVyQmFzZS5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9p
ZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlv
bi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CisKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNh
bGxlZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKTsKKyAgICBlbWl0
R2V0UHJvcGVydHlWYWx1ZShnZW5lcmF0b3IsIGZ1bmN0aW9uLmdldCgpLCBiYXNlLmdldCgpKTsK
IAogICAgIGlmIChpc09wdGlvbmFsQ2hhaW5CYXNlKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
T3B0aW9uYWxDaGVjayhmdW5jdGlvbi5nZXQoKSk7CkBAIC0yMTExLDYgKzIxODEsMjIgQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJh
dG9yLmVtaXROb2RlKGJhc2VOb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGRvdEFj
Y2Vzc29yLT5kaXZvdEVuZCgpKTsKKworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTmFt
ZSgpKSB7CisgICAgICAgIEFTU0VSVCghYmFzZUlzU3VwZXIpOworICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdl
dCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhn
ZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1f
b3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0
ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZh
bHVlLmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKQEAg
LTIzMzQsNiArMjQyMCwyMSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGdlbmVyYXRv
ci5lbWl0RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5k
aXZvdFN0YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiB2
YWx1ZTsKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBB
U1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwg
c2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIHZhbHVl
ID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgp
LCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZh
bHVlLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
aXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0Lmdl
dCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlm
IChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkgewogICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0
b3IuZW5zdXJlVGhpcygpOwpAQCAtMzE3NiwxMSArMzI3Nyw3IEBAIFJlZ2lzdGVySUQqIEFzc2ln
bkRvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklECiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9k
ZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/
IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
cmVzdWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsKLSAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9k
ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwg
dGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZv
cndhcmRSZXN1bHQuZ2V0KCkpOworICAgIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3IsIGJhc2Uu
Z2V0KCksIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUoZm9yd2FyZFJlc3VsdC5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKIH0KQEAgLTMx
OTIsMjMgKzMyODksMTUgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX2Jhc2Us
IG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikpOwogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3Vi
ZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7Ci0gICAgaWYg
KG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOwotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwg
bV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2Vu
ZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNW
YWx1ZSk7CisKICAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFz
c2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVl
LmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRUeXBlcyhS
ZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9yKCkpKTsK
IAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1fYmFzZS0+aXNT
dXBlck5vZGUoKSkKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0
KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAgICBlbHNlCi0g
ICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1
cGRhdGVkVmFsdWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXQgPSBlbWl0UHV0UHJvcGVy
dHkoZ2VuZXJhdG9yLCBiYXNlLmdldCgpLCB1cGRhdGVkVmFsdWUsIHRoaXNWYWx1ZSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmV0LmdldCgpOwogfQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURv
dE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2NzEsNiArNDc2
MCwxNyBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxE
ZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5TmFtZS5nZXQo
KSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9w
ZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRhYmxlIHwg
Qnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3NpdGlvbik7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0
ZU5hbWU6IHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCptX2lk
ZW50KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRl
IEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24o
KSwgcG9zaXRpb24oKSArIG1faWRlbnQtPmxlbmd0aCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFt
ZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdERlZmluZVByaXZhdGVGaWVsZChnZW5lcmF0b3IudGhpc1JlZ2lzdGVy
KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7CiAgICAg
ICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBmaWVsZHMK
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODMz
MApAQCAtNDY4MSw3ICs0NzgxLDcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJDb21wdXRlZCBuYW1lcyBtdXN0IGJlIHN0
b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyAxKTsKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwog
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1l
LmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9zaXRpb24s
IG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CkBAIC00NzczLDYgKzQ4NzMsOCBAQCBS
ZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmluZVByb3Bl
cnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCksIHByb3Rv
dHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CiAKICAgICBpZiAo
bV9jbGFzc0VsZW1lbnRzKSB7CisgICAgICAgIG1fY2xhc3NFbGVtZW50cy0+ZW1pdERlY2xhcmVQ
cml2YXRlRmllbGROYW1lcyhnZW5lcmF0b3IsIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVyKCkpOwor
CiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gaW5zdGFuY2VGaWVsZExvY2F0aW9uczsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVDbGFzc0VsZW1lbnRzKG1fY2xhc3NFbGVtZW50
cywgY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgaW5zdGFuY2VGaWVsZExvY2F0
aW9ucyk7CiAgICAgICAgIGlmICghaW5zdGFuY2VGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5k
ZXggZjA0MGQ4ZDM5MWU2ODM3MTc2ZGYwMjA1MTBiMmE3YWE4ZmRjMmYwNC4uM2E0YmYxNWE2NWY2
OWIwZGEzNGE1YzQzNjFlOTA1NzA3MDZjMWFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5j
bHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTEyNjUsNiArMTI2NiwxOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUgYnl0ZWNv
ZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Cit9CisKK3RlbXBsYXRlPD4K
K0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRC
eVZhbERpcmVjdCBieXRlY29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpOworfQorCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVUYXJnZXRh
YmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VSVChieXRl
Y29kZUluZGV4KTsKQEAgLTgyMzUsNyArODI0OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRl
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAgICAgICAg
ICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVl
LCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBieXRlY29kZS5tX2VjbWFN
b2RlKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRp
Zmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgs
IGVjbWFNb2RlKGJ5dGVjb2RlKSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFzUHV0QnlJ
ZCkgewpAQCAtODI0Niw3ICs4MjU5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUKICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChudWxscHRy
KTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRkVmFyQXJn
Q2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAgYWRkVG9H
cmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRCeVZhbCwg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFNb2RlKSk7
CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGly
ZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oZWNtYU1v
ZGUoYnl0ZWNvZGUpKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5VmFsIGFu
ZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVyIGV4aXQg
c3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBh
MWFlM2UzYzlmY2UxNjg4M2EyODBjODE2OWU0ZmJiYjE2OWE3NjExLi4xMjEyZDQwN2I0ZmNjNjc4
ZjMyYzY3YjM3NDYxMmY5ZjdkNjg3ZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTgsNiArMjk4LDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGNvbnN0IEkKIAogICAgIGNhc2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJh
dG9yX2ZyYW1lX2Vudmlyb25tZW50OgorICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFtZTogLy8g
RklYTUU6IG9wX2dldF9wcml2YXRlX25hbWUgd2lsbCBuZWVkIERGRy9GVEwgc3VwcG9ydCB0byBz
aGlwIGNsYXNzIGZpZWxkcy4KICAgICBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAg
Y2FzZSBsbGludF9ldmFsX3Byb2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfbW9kdWxlX3Byb2dyYW1f
cHJvbG9ndWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCmluZGV4IDQxNjc4MjhiYjdjMjg4Zjc4YmRmNDRhMmY2NjZmNzEwYjE0MDM5NzEuLjA4
MTY2NzJkZTg3YzVhZTBiNTdmZjMzMmI5NTlkNTIyNzU2ZTMwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNDM3MSw3ICsxNDM3
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBn
ZW4oCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgdXNl
ZFJlZ2lzdGVycywgaWRlbnRpZmllciwKICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5
KGJhc2VHUFIpLCB2YWx1ZVJlZ3MsCi0gICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRL
aW5kKTsKKyAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1dEtpbmQsIFByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ6Ok5vbmUpOwogCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXgg
MTZkZmNhMjNjNDg0YTIxNTk4NzFiNWM5NTE1MDEwYjQ4OGQzMGEzNS4uMjE1NDBkOTViMTQ0MWE1
OWYyOTkxODAxMzk4ZjQyMDE2YTkyNTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDIwNCw3ICs0MjA0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgaml0LmNvZGVCbG9jaygpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGNhbGxTaXRlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy51bmF2YWlsYWJsZVJl
Z2lzdGVycygpLCBpZGVudGlmaWVyLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBHUFJJbmZvOjpw
YXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyLCBlY21hTW9kZSwKLSAgICAgICAgICAgICAgICAgICAg
bm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKTsKIAogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci0+Z2VuZXJhdGVGYXN0UGF0aChqaXQpOwogICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6TGFiZWwgZG9uZSA9IGppdC5sYWJlbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdG9yL0RTTC5yYgppbmRleCA5NGRlMzhjYjcxNjc4YWQ4NmFiYWM2YjdjNjI4NzljMTZiMTBj
ODMxLi5kOTY1ODViMTA1Nzc4ZTdkNTAxNWIwYjZjN2M3NWNjY2EyMDU5ZjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYgpAQCAtMTQxLDYgKzE0MSw3IEBAIG1vZHVsZSBE
U0wKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlRvVGhpc1N0YXR1cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9JQ1N0YXRzLmgKaW5kZXggOTA0MGRmMzgyMDc2NGVkZjhkNTE2MTFmODYwZmM0ZDQyNjU2YzE0
OS4uOTZjMTlhMTdiZGMyYTdkMTBmMTVmOWJjYTM5MDIxNjIxYzk5ZGI4MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgbWFjcm8oT3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3Jv
KE9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RCdWlsZExpc3QpIFwKICAgICBtYWNybyhPcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0QnVpbGRMaXN0KSBcCisgICAgbWFjcm8oT3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUpIFwKKyAgICBt
YWNybyhPcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSkg
XAogICAgIG1hY3JvKFB1dEJ5SWRBZGRBY2Nlc3NDYXNlKSBcCiAgICAgbWFjcm8oUHV0QnlJZFJl
cGxhY2VXaXRoSnVtcCkgXAogICAgIG1hY3JvKFB1dEJ5SWRTZWxmUGF0Y2gpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCAyNjQ4NTRjNjY1ZWNkZmRiMGQ5Y2UxZTRiMDdmN2UzY2Jk
ZmJjMjcwLi41MTYwODMwNzlmZTgzOTgyNzA5ODMxNDE2NzE3OWMzODQxZjIxZWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yOTIsNiArMjkyLDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXNoX3dpdGhfc2Nv
cGUpCiAgICAgICAgIERFRklORV9TTE9XX09QKGNyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQog
ICAgICAgICBERUZJTkVfU0xPV19PUChnZXRfYnlfdmFsX3dpdGhfdGhpcykKKyAgICAgICAgREVG
SU5FX1NMT1dfT1AoZ2V0X3ByaXZhdGVfbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0
X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHV0X2J5X3ZhbF93aXRo
X3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHJlc29sdmVfc2NvcGVfZm9yX2hvaXN0aW5n
X2Z1bmNfZGVjbF9pbl9ldmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNDAwZWU2MzRk
MzFiNzE3ZDk5N2MxYmMyODRiYzA4YmUxMzM5NDk3OS4uMjc1NTdiM2IwNjc4ZDc5NDM1ZmU5NThk
ZDc4MDU3NTEwZGNlZWQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00MDEsNyArNDAx
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KICAg
ICAgICAgSnVtcExpc3QgZW1pdEZsb2F0VHlwZWRBcnJheVB1dEJ5VmFsKE9wLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBUeXBlZEFycmF5VHlwZSk7CiAKLSAgICAgICAgLy8gSWRlbnRpZmllciBj
aGVjayBoZWxwZXIgZm9yIFB1dEJ5VmFsLgorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4K
KyAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUoT3ApOworCisgICAgICAgIC8vIERldGVybWluZXMg
dGhlIHR5cGUgb2YgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MgZm9yIGEgYnl0ZWNvZGUuCisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wPgorICAgICAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQoT3ApOworCisgICAgICAgIC8vIElkZW50aWZpZXIgY2hlY2sg
aGVscGVyIGZvciBHZXRCeVZhbCBhbmQgUHV0QnlWYWwuCiAgICAgICAgIHZvaWQgZW1pdEJ5VmFs
SWRlbnRpZmllckNoZWNrKFJlZ2lzdGVySUQgY2VsbCwgUmVnaXN0ZXJJRCBzY3JhdGNoLCBDYWNo
ZWFibGVJZGVudGlmaWVyLCBKdW1wTGlzdCYgc2xvd0Nhc2VzKTsKIAogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPcD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHAKaW5kZXggNTQ4NTgzOTBlZmI3YjM2YjRmOGU5ZWY4ZmNl
Y2YxOGMwOWU0MjBiMy4uMjM2ODMwNDVmMWZkMWY2YWE0NWU2MWQ2Mzg5YWVmMWZjMjgyMDFlNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5jcHAKQEAgLTEzNiwxMSArMTM2LDExIEBAIHZvaWQgSklUR2V0QnlJZFdpdGhUaGlz
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiBKSVRQdXRC
eUlkR2VuZXJhdG9yOjpKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXggY2FsbFNpdGUsIGNvbnN0
IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLAogICAgIEpT
VmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgCi0gICAg
RUNNQU1vZGUgZWNtYU1vZGUsIFB1dEtpbmQgcHV0S2luZCkKLSAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoCi0gICAgICAgIGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2FsbFNpdGUsIEFjY2Vzc1R5cGU6
OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCi0gICAgLCBtX2VjbWFNb2RlKGVjbWFN
b2RlKQotICAgICwgbV9wdXRLaW5kKHB1dEtpbmQpCisgICAgRUNNQU1vZGUgZWNtYU1vZGUsIFB1
dEtpbmQgcHV0S2luZCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKQorICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBj
YWxsU2l0ZSwgQWNjZXNzVHlwZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKKyAg
ICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgICAgICAsIG1fcHV0S2luZChwdXRLaW5k
KQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKQogewogICAgIG1fc3R1YkluZm8tPnVzZWRSZWdpc3RlcnMuY2xlYXIoc2NyYXRjaCk7CiB9
CkBAIC0xNTIsNiArMTUyLDE0IEBAIHZvaWQgSklUUHV0QnlJZEdlbmVyYXRvcjo6Z2VuZXJhdGVG
YXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogCiBWX0pJVE9wZXJhdGlvbl9HU3NpSkpDIEpJ
VFB1dEJ5SWRHZW5lcmF0b3I6OnNsb3dQYXRoRnVuY3Rpb24oKQogeworICAgIGlmIChtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkgeworICAg
ICAgICBBU1NFUlQobV9wdXRLaW5kID09IERpcmVjdCk7CisgICAgICAgIEFTU0VSVChtX2VjbWFN
b2RlLmlzU3RyaWN0KCkpOworICAgICAgICBpZiAobV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kID09
IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVy
YXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemU7CisgICAg
fQorCiAgICAgaWYgKG1fZWNtYU1vZGUuaXNTdHJpY3QoKSkgewogICAgICAgICBpZiAobV9wdXRL
aW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0
U3RyaWN0T3B0aW1pemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmgKaW5kZXggOTc2ZjcxYmJhYWM5MWQ5M2U2MDcwNjc3OTZjNmM1
MjRlMDQ5ZDVmZC4uNzMyOWQ2YjczODE0ZDZjNGJhNTUyYTU4OTNlNzJiMDIxZTZhNTEyMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRv
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRl
ICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIlB1
dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJT
ZXQuaCIKIApAQCAtMTMwLDExICsxMzEsMTIgQEAgY2xhc3MgSklUUHV0QnlJZEdlbmVyYXRvciA6
IHB1YmxpYyBKSVRCeUlkR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yKCkKICAgICAgICAgOiBtX2VjbWFNb2RlKEVDTUFNb2RlOjpzdHJpY3QoKSkKKyAgICAgICAg
LCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSkK
ICAgICB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIENhbGxTaXRlSW5kZXgsIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0
ZXJzLCBDYWNoZWFibGVJZGVudGlmaWVyLCBKU1ZhbHVlUmVncyBiYXNlLAotICAgICAgICBKU1Zh
bHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5kKTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCwg
UHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2YXRlQWNjZXNzKTsKICAgICAKICAgICB2b2lkIGdl
bmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImKTsKICAgICAKQEAgLTE0Myw2ICsxNDUsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEVDTUFNb2RlIG1fZWNtYU1vZGU7CiAgICAgUHV0S2lu
ZCBtX3B1dEtpbmQ7CisgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ7CiB9OwogCiBjbGFzcyBKSVREZWxCeVZhbEdlbmVyYXRvciA6IHB1YmxpYyBKSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CmluZGV4IDliNmMwNTI0OGJhMjkyOTZmOTllZDM3NmZiOTQ4MjhmYmM5MzNjYmYuLmQ1M2U2OTc3
ZDM5ZDc1OWU2NzQxMmZkOWFkMWI5ZTY3ODJiOTdkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCkBAIC02ODYsNiArNjg2LDM2IEBAIEFMV0FZU19JTkxJTkUgQmluYXJ5
QXJpdGhQcm9maWxlIEpJVDo6Y29waWVkQXJpdGhQcm9maWxlKEJpbmFyeU9wIGJ5dGVjb2RlKQog
ICAgIHJldHVybiBhcml0aFByb2ZpbGU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIE9wPgorQUxX
QVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6OmVjbWFNb2RlKE9wIG9wKQoreworICAgIHJldHVybiBv
cC5tX2VjbWFNb2RlOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJ
VDo6ZWNtYU1vZGU8T3BQdXRCeUlkPihPcFB1dEJ5SWQgb3ApCit7CisgICAgcmV0dXJuIG9wLm1f
ZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9k
ZSBKSVQ6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qgb3ApCit7
CisgICAgcmV0dXJuIG9wLm1fZmxhZ3MuZWNtYU1vZGUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgT3A+CitQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZChPcCkKK3sKKyAgICByZXR1cm4gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZTsKK30KKwor
dGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIEpJVDo6cHJp
dmF0ZUZpZWxkQWNjZXNzS2luZDxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9w
KQoreworICAgIHJldHVybiBvcC5tX2ZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggM2E0MWU3NjJlYzhkODNj
YzQyYWNlMWQxM2IyZDQ3OTYyYjQ2NzU3NS4uM2RlODQyNTNiYzJmZTEyMWRjZTM1MTEwNjMwYzVl
MzAyNGMyM2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC02OTcsNiArNjk3LDExNyBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAg
ICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgc3Ry
dWN0dXJlLCBpZGVudGlmaWVyLCBzbG90LCAqc3R1YkluZm8sIERpcmVjdCk7CiB9CiAKK30gLy8g
ZXh0ZXJuICJDIgorCit1c2luZyBQdXRQcml2YXRlRmllbGRDYWxsYmFjayA9IHN0ZDo6ZnVuY3Rp
b248dm9pZChWTSYsIENvZGVCbG9jayosIFN0cnVjdHVyZSosIFB1dFByb3BlcnR5U2xvdCYsIGNv
bnN0IElkZW50aWZpZXImKT47CitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHB1dFByaXZhdGVG
aWVsZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
LCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sg
PSBQdXRQcml2YXRlRmllbGRDYWxsYmFjaygpKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKHZtLCBpZGVudGlmaWVyLnVpZCgpKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRl
TmFtZSgpKTsKKworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVl
KTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Cisg
ICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOwor
CisgICAgUHV0UHJvcGVydHlTbG90IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2Nr
LT5wdXRCeUlkQ29udGV4dCgpKTsKKyAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBpZGVudCwgdmFsdWUsIHB1dFNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNr
KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyLCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBQdXRQcml2YXRlRmllbGRDYWxsYmFjayYgY2FsbGJhY2sgPSBQdXRQcml2YXRlRmllbGRDYWxs
YmFjaygpKQoreworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVudGlmaWVy
LnVpZCgpKTsKKyAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CisgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUodm0pOworCisgICAgUHV0UHJvcGVydHlTbG90
IHB1dFNsb3QoYmFzZU9iamVjdCwgdHJ1ZSwgY29kZUJsb2NrLT5wdXRCeUlkQ29udGV4dCgpKTsK
KyAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBpZGVudCwg
dmFsdWUsIHB1dFNsb3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisKKyAgICBpZiAoY2FsbGJhY2spCisgICAgICAgIGNhbGxiYWNrKHZtLCBjb2RlQmxvY2ssIG9s
ZFN0cnVjdHVyZSwgcHV0U2xvdCwgaWRlbnQpOworfQorCitleHRlcm4gIkMiIHsKKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3Qg
cmF3Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwor
CisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmll
cjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIGRlZmluZVByaXZh
dGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmll
ciwgdmFsdWUpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmlu
ZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpCit7CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2Up
OworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgQ2FjaGVhYmxlSWRl
bnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0Jp
dHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0g
c3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworCisg
ICAgZGVmaW5lUHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9i
amVjdCwgaWRlbnRpZmllciwgdmFsdWUsIFs9XShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
LCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0
LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOwor
CisgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOworCisgICAgICAgIGlmIChz
dHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnkodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBp
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29k
ZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpz
dHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKKyAgICB9KTsKK30KKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3
Q2FjaGVhYmxlSWRlbnRpZmllcikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworCisg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6
Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRpZmllcik7CisgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKworICAgIHB1dFByaXZhdGVGaWVs
ZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFs
dWUpOworfQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpCit7
CisgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKKworICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENh
Y2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZp
ZXIpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+
KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKworICAgIHB1dFByaXZhdGVGaWVsZCh2bSwg
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVlLCBb
Jl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUs
IFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsKKyAg
ICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkRmll
bGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNs
b3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKworICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vz
c1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFj
Y2Vzc1R5cGUpKTsKKworICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZt
LCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllcikpCisgICAgICAgICAgICByZXBh
dGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0
dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZFB1
dCk7CisgICAgfSk7Cit9CisKIHN0YXRpYyB2b2lkIHB1dEJ5VmFsKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCwgSlNWYWx1
ZSB2YWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8sIEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmgKaW5kZXggOWVhM2NiZDkzNGViNDczNjk3MWQ2ZjllMWIyN2U3ODE4OGQ0
NjQxMC4uNjY3MDVlNDU5OGFmOTY3ZTA5MjA1MjY4NTgxNzU3YTk4N2JhYWY4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTE4OCw2ICsxODgsMTAgQEAg
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRpbWl6ZShKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZVN0dWIKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkTm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgQnlWYWxJbmZvKiwgRUNNQU1vZGUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggZWE3MzFjMzAz
OTgxMWMwMjZjODU1OTljYTYwOTZiNjgyNmYzODZjMi4uYjljZDFiZmQ2NDJlOWFhNmUxZDVmNDE5
MTM2ODE3MGNmNzhlODVhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9y
IEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtp
bmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5k
ZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFt
ZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1Qy
LCBieXRlY29kZS5tX2VjbWFNb2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MocmVn
VDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9kZShieXRlY29kZSksIHB1dEtp
bmQsIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgLy8gSUMgY2FuIHdyaXRlIG5ldyBTdHJ1Y3R1cmUgd2l0aG91
dCB3cml0ZS1iYXJyaWVyIGlmIGEgYmFzZSBpcyBjZWxsLgogICAgIC8vIEZJWE1FOiBVc2UgVW5j
b25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1Y2Ug
Y29kZSBzaXplLgpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRf
YnlfdmFsKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAg
ICAgICAgIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNv
ZGUubV9wcm9wZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAg
ICBlY21hTW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CisgICAgICAgIGVjbWFNb2RlID0gSklU
OjplY21hTW9kZShieXRlY29kZSk7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTY1
OCw4ICs2NTgsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJ
bmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21JZGVudGlmaWVy
T3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKLSAgICAgICAgSlNWYWx1ZVJl
Z3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCksCi0gICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAg
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUo
Ynl0ZWNvZGUpLAorICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoYnl0ZWNvZGUpKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0
aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTEzMTcs
NyArMTMxNyw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2Fj
aGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAotICAgICAgICBKU1ZhbHVlUmVnczo6
cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgYnl0
ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2Fk
T25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBlY21hTW9kZShi
eXRlY29kZSksIHB1dEtpbmQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAg
ICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGZjMmU0NGQ3OTJhYWYw
NDI4ZjIzMGFlZmRmOTY2NDgzZjRlZDliOGYuLmViYzYzZDE2ZTY5M2ZiMDU2ZWYwNmMxNmMwY2Fk
ZjZhNzQyZjU2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcApAQCAtNDQzLDYgKzQ0Myw0OCBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEFycmF5U3RvcmFnZVB1dEJ5VmFsKE9wIGJ5dGVjb2RlLCBQYXRjaGFibGVKdW1w
JiBiYWRUeXBlKQogICAgIHJldHVybiBzbG93Q2FzZXM7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBPcD4KK0pJVFB1dEJ5SWRHZW5lcmF0b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQo
T3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0S2luZCwgQ2FjaGVhYmxlSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIEp1bXBMaXN0JiBkb25lQ2FzZXMsIEp1bXBMaXN0JiBzbG93Q2FzZXMpCit7CisgICAg
Ly8gYmFzZTogdGFnKHJlZ1QxKSwgcGF5bG9hZChyZWdUMCkKKyAgICAvLyBwcm9wZXJ0eTogdGFn
KHJlZ1QzKSwgcGF5bG9hZChyZWdUMikKKworICAgIFZpcnR1YWxSZWdpc3RlciBiYXNlID0gYnl0
ZWNvZGUubV9iYXNlOworICAgIFZpcnR1YWxSZWdpc3RlciB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFs
dWU7CisKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmTm90Q2VsbChyZWdUMykpOworICAg
IGVtaXRCeVZhbElkZW50aWZpZXJDaGVjayhyZWdUMiwgcmVnVDIsIHByb3BlcnR5TmFtZSwgc2xv
d0Nhc2VzKTsKKworICAgIC8vIFdyaXRlIGJhcnJpZXIgYnJlYWtzIHRoZSByZWdpc3RlcnMuIFNv
IGFmdGVyIGlzc3VpbmcgdGhlIHdyaXRlIGJhcnJpZXIsCisgICAgLy8gcmVsb2FkIHRoZSByZWdp
c3RlcnMuCisgICAgLy8KKyAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRob3V0
IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCisgICAgLy8gV2UgYXJlIGVtaXR0aW5n
IHdyaXRlLWJhcnJpZXIgYmVmb3JlIHdyaXRpbmcgaGVyZSBidXQgdGhpcyBpcyBPSyBzaW5jZSAz
MmJpdCBKU0MgZG9lcyBub3QgaGF2ZSBjb25jdXJyZW50IEdDLgorICAgIC8vIEZJWE1FOiBVc2Ug
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciBpbiBCYXNlbGluZSBlZmZlY3RpdmVseSB0byByZWR1
Y2UgY29kZSBzaXplLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDkzOTUKKyAgICBlbWl0V3JpdGVCYXJyaWVyKGJhc2UsIFNob3VsZEZpbHRlckJhc2Up
OworICAgIGVtaXRMb2FkUGF5bG9hZChiYXNlLCByZWdUMCk7CisgICAgZW1pdExvYWQodmFsdWUs
IHJlZ1QzLCByZWdUMik7CisKKyAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdlbigKKyAgICAgICAg
bV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4KSwgQ2FsbFNpdGVJbmRleCht
X2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCks
IHByb3BlcnR5TmFtZSwKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0
S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOworICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKKyAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CisKKyAgICBM
YWJlbCBjb2xkUGF0aEJlZ2luID0gbGFiZWwoKTsKKyAgICBnZW4uc2xvd1BhdGhKdW1wKCkubGlu
ayh0aGlzKTsKKworICAgIC8vIEpJVFB1dEJ5SWRHZW5lcmF0b3Igb25seSBwcmVzZXJ2ZSB0aGUg
dmFsdWUgYW5kIHRoZSBiYXNlJ3MgcGF5bG9hZCwgd2UgaGF2ZSB0byByZWxvYWQgdGhlIHRhZy4K
KyAgICBlbWl0TG9hZFRhZyhiYXNlLCByZWdUMSk7CisKKyAgICBDYWxsIGNhbGwgPSBjYWxsT3Bl
cmF0aW9uKGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIHByb3BlcnR5TmFtZS5yYXdCaXRzKCkpOworICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgY2FsbCk7CisgICAgZG9uZUNhc2VzLmFwcGVuZChq
dW1wKCkpOworCisgICAgcmV0dXJuIGdlbjsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBib29sIGlzRGlyZWN0ID0gY3Vy
cmVudEluc3RydWN0aW9uLT5vcGNvZGVJRCgpID09IG9wX3B1dF9ieV92YWxfZGlyZWN0OwpAQCAt
NDU1LDcgKzQ5Nyw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNvbnN0IElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIGJhc2UgPSBi
eXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9wZXJ0eTsK
ICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9kZSA9IGJ5
dGVjb2RlLm1fZWNtYU1vZGU7CisgICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9kZShieXRl
Y29kZSk7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTY2NCw3ICs3MDYsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZy
b21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwKICAgICAg
ICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJl
Z1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0
ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmllbGRBY2Nl
c3NLaW5kOjpOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAg
ICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCmluZGV4IGIxN2VjNzI0YjYxZWIxMTBiNDIyNzgzMGQyYTJkMGUyYjI2ODgy
ZWMuLjQ0YmJhZmEwZmI5NTg3OWI4ODMxYWJkNmEzNTA5MzA0YWFkODA2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTIwLDYgKzUyMCwxMCBAQCBzdGF0aWMgYXV0
byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVydHlTbG90
ICZzbG90LCBQdXRLaQogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAgICAgIGlm
IChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlk
RGlyZWN0U3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRD
cmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVG
aWVsZFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0
KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJp
Y3Q7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OwogICAgIH0KICAgICBp
ZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC01MzIsNiArNTM2LDEwIEBAIHN0YXRpYyBhdXRvIGFw
cHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3Qg
JnNsb3QsIFB1CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKHB1
dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkUHV0KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRT
dHJpY3RPcHRpbWl6ZTsKICAgICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpAQCAtNjI1
LDYgKzYzMyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3NDaGFpbjsK
ICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRpb25TZXQ7
CiAgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChwdXRLaW5kICE9IERpcmVjdFByaXZhdGVGaWVsZFB1dCAmJiBwdXRL
aW5kICE9IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CiAgICAgICAgICAgICAgICAgICAgIGF1
dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVjdCwgYmFz
ZUNlbGwsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC02NDIsNiAr
NjUxLDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJl
Y3RQcml2YXRlRmllbGRDcmVhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50
LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNldCA9IGdl
bmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJsb2NrLCBnbG9iYWxPYmpl
Y3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgbmV3
Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0sIGNvZGVCbG9jaywgcHJvcGVy
dHlOYW1lLCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0NhY2hlYWJsZVNl
dHRlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDFmYzIzMjI4OTExYzg3ZWJhZWFhYjQwYzc3NGM3MTZi
Y2JmNWMyZDUuLmM1MjNlOGE2MDA2ZGRjNTNkMjU5OWE0ZDI0YzZlOTRiNTRkY2FkYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4uaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMWQwNjE1
YzcwMmY2MjFhMzEzMjZhZGQxMmI2NTUzZWY0MGY5ZDYzYy4uZDFmZDZlNjE1M2NjOGE4NTY4Y2Nl
ZWYyNzllZmJjZjU3MDllMGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDcwLDYgKzEwNzAsNjQgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpCiAgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKGdl
dEJ5VmFsKHZtLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJzY3JpcHQs
IGJ5dGVjb2RlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJp
dmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAgICBBU1NF
UlQoc3Vic2NyaXB0LmlzU3ltYm9sKCkpOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RD
b2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2
YXRlTmFtZSgpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBhc09iamVjdChi
YXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19B
Q0NFU1NfU0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSB7Cisg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0
YS5tX3N0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7CisgICAg
ICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFs
dWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgICAgICAgICBpZiAoU3RydWN0
dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS5nZXQo
KSA9PSBiLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBv
aW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJv
dG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7
CisgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgeworICAgICAgICAgICAgLy8gU3RhcnQgb3V0
IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICAgICAgbWV0YWRhdGEubV9z
dHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisKKyAg
ICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKSAm
JiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVj
dHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
IFVwZGF0ZSB0aGUgY2FjaGVkIHByaXZhdGUgc3ltYm9sCisgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0NlbGwoKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVy
KGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBMTElO
VF9SRVRVUk5fUFJPRklMRUQoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5KSk7
Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQogewogICAg
IExMSU5UX0JFR0lOKCk7CkBAIC0xMTExLDIwICsxMTY5LDQyIEBAIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0
T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2VjbWFN
b2RlLmlzU3RyaWN0KCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5tX2ZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzID0g
Ynl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOwogICAgIGlmIChPcHRpb25h
bDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgpKSB7Cisg
ICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNlT2JqZWN0
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlzU3RyaWN0
TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5v
dFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCisgICAgaWYgKHN1YnNjcmlw
dC5pc0RvdWJsZSgpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwor
ICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3VibGUoKTsK
KyAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc3Vic2NyaXB0QXNEb3VibGUpOworICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3VibGUgPT0g
c3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsKKyAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vic2NyaXB0
QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRo
cm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIERvbid0IHB1dCB0byBhbiBvYmplY3Qg
aWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkgPSBzdWJz
Y3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSh0aHJv
d1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKKyAgICBBU1NFUlQo
cHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICBp
ZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkpCiAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgudmFsdWUo
KSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQ
dXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKKyAgICAgICAgaWYgKGlz
UHJpdmF0ZUZpZWxkQWNjZXNzKSB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgICAgICAgICAgaWYgKGJ5dGVjb2RlLm1fZmxh
Z3MuaXNQcml2YXRlRmllbGRBZGQoKSkKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5kZWZp
bmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICBMTElO
VF9FTkQoKTsgICAgCisgICAgICAgIH0KKwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6OnB1dERp
cmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmgKaW5kZXggOGFkZWUxNmZiNWM5OTAwYTdiYjI4ZjQ3MDA3NDZkNzRjMmZiZjQ3Yy4u
OWE3NWY2NWNlZmFmNzllNTIwOThlNDk2ZGMxZDA0MDZiMjIyNmYxYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTcyLDYgKzcyLDcgQEAgTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA1N2Uz
OTgyYjgzOWVhZjllYTk4Y2Y0ODI5MGQ2MTQyMzIwNDRhNWE2Li4yY2VmYjM3Nzk3NjBhNWU4YWE0
NGMwNWJkOWI3Y2M5ZDBlOTQ0MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTUxOSw3ICsxNTE5
LDYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCi0KIGxsaW50T3BXaXRoTWV0
YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwocmVzdWx0
UGF5bG9hZCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQpAQCAtMTU5Nyw2
ICsxNTk2LDI5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZh
bCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIGVuZCkKIAorbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0YSh0NSwg
dDApCisKKyAgICAjIFNsb3cgcGF0aCBpZiB0aGUgcHJpdmF0ZSBmaWVsZCBpcyBzdGFsZQorICAg
IGdldChtX3Byb3BlcnR5LCB0MCkKKyAgICBsb2FkcCBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0
YTo6bV9wcm9wZXJ0eVt0NV0sIHQxCisgICAgYnBuZXEgdDEsIHQwLCAub3BHZXRQcml2YXRlTmFt
ZVNsb3cKKworICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6
Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldFByaXZhdGVOYW1lU2xvdykK
KyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVdLCB0Mgor
ICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRQcml2YXRlTmFt
ZVNsb3cKKworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0MCwgdDEp
CisgICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUsIHQwLCB0
MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BHZXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRj
aCgpCitlbmQpCisKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwg
b3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVy
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KaW5kZXggNGU1YThjMmI5ZDdhNmJhNTZkMjk2ZWI4MjU0OTExMmEyMDQ5NWI1
Zi4uZjI0MjlkZjJiZTk2ZTYxYjVlY2E1YWJiYTNlMWM4YzM4ODcyNjg3NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
QEAgLTE1NjUsNyArMTU2NSw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5X2lkLCBP
cFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAKIGVuZCkKIAot
CiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1hY3JvIGZpbmlzaEdl
dEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQpAQCAt
MTY0OSw2ICsxNjQ4LDI5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIGVuZCkKIAorbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0
YSh0MiwgdDApCisKKyAgICAjIFNsb3cgcGF0aCBpZiB0aGUgcHJpdmF0ZSBmaWVsZCBpcyBzdGFs
ZQorICAgIGdldChtX3Byb3BlcnR5LCB0MCkKKyAgICBsb2FkcCBPcEdldFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9wcm9wZXJ0eVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIHQwLCAub3BHZXRQcml2
YXRlTmFtZVNsb3cKKworICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0UHJpdmF0ZU5hbWVTbG93KQorICAgIGxvYWRp
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCisgICAgbG9hZGkgT3BHZXRQcml2YXRlTmFt
ZTo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0MSwgLm9w
R2V0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0
YTo6bV9vZmZzZXRbdDJdLCB0MQorICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDEs
IHQzLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9maWxlLCB0
MiwgdDApCisgICAgcmV0dXJuKHQwKQorCisub3BHZXRQcml2YXRlTmFtZVNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKKyAgICBkaXNwYXRj
aCgpCitlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBv
c3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9w
Y29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDFhNDQ4YzI1
NThmMmY1Zjk4ZmQyNjBlMmZlYzUzMDhhMzY4NWQ2ZmIuLmM0NDgxYTk5ODU5MmMwZWY4NzJmYTI2
ZTNlMzc5OWI4ZjQ4YzljMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXIqIHByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgRG90VHlw
ZSB0eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAgICAgIGlmIChi
YXNlLT5pc1N1cGVyTm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJvcGVydHkoKTsKICAg
ICAgICAgCi0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOworICAgICAgICBE
b3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vzc29yTm9k
ZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsK
ICAgICB9CkBAIC02NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGUt
PmlzQXNzaWdubWVudExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVMb2Nh
dGlvbihjb25zdCBFeHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5vZGUt
PmlzUHJpdmF0ZUxvY2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09iamVjdExpdGVyYWwo
Y29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlLT5pc09i
amVjdExpdGVyYWwoKTsKQEAgLTE0MzgsMTIgKzE0NDMsMTIgQEAgRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24KICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29y
Tm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUgPSBudWxscHRyOwog
ICAgIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigpID09IG1f
dm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSB8fCBkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmNhbGxQ
cml2YXRlTmFtZSgpKSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FsbEZ1
bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxkRGVw
dGgpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkb3QtPnR5
cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNoaWxk
RGVwdGgpOwogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVu
dGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBseVB1Ymxp
Y05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
Y2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0aGUgYnl0ZWNv
ZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5IHlldC4gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NjguCiAgICAgICAg
IGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxSZXNvbHZl
Tm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikKLSAgICAgICAg
ICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2
b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAgICAgICBu
b2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRp
b24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsKICAgICB9
IGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAKICAgICAgICAgJiYgZG90LT5pZGVudGlm
aWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Qcm9wZXJ0eQogICAgICAgICAmJiBh
cmdzLT5tX2xpc3ROb2RlCkBAIC0xNDU2LDEwICsxNDYxLDEwIEBAIEV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uCiAgICAgICAgIC8vIDxyZXNvbHZlTm9kZT4uaGFzT3duUHJvcGVydHkoPHJlc29sdmVO
b2RlPikKICAgICAgICAgLy8gaS5lOgogICAgICAgICAvLyBvLmhhc093blByb3BlcnR5KHApCi0g
ICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEhhc093blByb3BlcnR5RnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAgICBub2RlID0gbmV3IChtX3Bh
cnNlckFyZW5hKSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgfQogICAgIGlmICghbm9kZSkKLSAgICAgICAgbm9k
ZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlw
ZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIG5vZGUtPnNldFN1
YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNldCk7CiAg
ICAgcmV0dXJuIG5vZGU7CiB9CkBAIC0xNjAwLDcgKzE2MDUsNyBAQCBFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlKj4obG9jKTsKIAogICAgIGlmIChvcCA9PSBPcGVyYXRvcjo6RXF1YWwpCi0gICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3Qt
PmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5h
KSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3Rh
cnQsIGVuZCk7CiAKICAgICBpZiAob3AgPT0gT3BlcmF0b3I6OkNvYWxlc2NlRXEgfHwgb3AgPT0g
T3BlcmF0b3I6Ok9yRXEgfHwgb3AgPT0gT3BlcmF0b3I6OkFuZEVxKSB7CiAgICAgICAgIGF1dG8q
IG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFNob3J0Q2lyY3VpdFJlYWRNb2RpZnlEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKQEAgLTE2MDgsNyArMTYxMyw3IEBA
IEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAot
ICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWFkTW9k
aWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwg
ZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CisgICAgUmVhZE1v
ZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBv
cCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAgICAgbm9k
ZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5kKCkub2Zm
c2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKaW5kZXggOTE3MTc4OTZlNDQ0ODViZWI3OTQwNzA4MGJlMjZmOWIzMzk4YTllZC4uMzY0
OGE0NDg0M2I3MmNlOTg1MTcxNzUzMGZmNTA2ZWM2YThiODE5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTk0NSwxMCArOTQ1LDExIEBAIHRlbXBsYXRlIDxib29s
IHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8
TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9JRl9TVFJJ
Q1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgCi0gICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb247CisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQg
PT0gJyMnOworICAgIGJvb2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcgJiYgbV9w
YXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogICAgIGJvb2wgaXNXZWxsS25vd25TeW1ib2wgPSBmYWxz
ZTsKLSAgICBpZiAoaXNQcml2YXRlTmFtZSkgeworICAgIGlmIChpc0J1aWx0aW5OYW1lKSB7CiAg
ICAgICAgIEFTU0VSVChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pOwogICAgICAgICBzaGlmdCgp
OwogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdAJykgewpAQCAtOTU2LDggKzk1NywxMiBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICAKKwogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
U291cmNlUHRyKCk7CisKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsK
KwogICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSB8fCBtX2N1cnJlbnQgPT0gJ1xc
Jyk7CiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAgIHNoaWZ0KCk7
CkBAIC05NjksNyArOTc0LDggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmll
cj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAKICAgICBp
ZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pIHsK
ICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkgLSBpZGVu
dGlmaWVyU3RhcnQ7Ci0gICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24gJiYgaXNQ
cml2YXRlTmFtZSkgeworICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJT
dGFydCwgaWRlbnRpZmllckxlbmd0aCk7CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVu
Y3Rpb24gJiYgaXNCdWlsdGluTmFtZSkgewogICAgICAgICAgICAgaWYgKGlzV2VsbEtub3duU3lt
Ym9sKQogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlmaWVyKG1f
dm0sIG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtub3duU3lt
Ym9sKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCkpOwogICAgICAgICAgICAgZWxz
ZQpAQCAtOTkxLDIwICs5OTcsMjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRp
Zmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICB9IGVs
c2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKLSAgICBpZiAoVU5MSUtF
TFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250YWlucyhM
ZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUpIHsKKyAg
ICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5UOwor
ICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZs
YWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAhaXNCdWls
dGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAg
ICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAgY29uc3Qg
SGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50KTsKICAg
ICAgICAgICAgIEFTU0VSVCgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFlbnRyeSk7
CiAgICAgICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBJREVOVDsK
KyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICAgICAgSlNUb2tlblR5
cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFsdWUoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3Ry
aWN0TW9kZSA/IHRva2VuIDogSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJF
U0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogaWRlbnRUeXBlOwogICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAog
dGVtcGxhdGUgPD4KQEAgLTEwMjEsNyArMTAyOCwxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRD
cmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6
cAogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50
ID09ICcjJzsKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJj
ZVB0cigpOworCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7CisKICAg
ICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQoaXNTaW5nbGVDaGFyYWN0ZXJJZGVu
dFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpIHx8IG1fY3Vy
cmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFBhcnQobV9j
dXJyZW50KSkgewpAQCAtMTA0NSw2ICsxMDU3LDkgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3Jl
YXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hhcj46OnAK
ICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAgICAgCisg
ICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHJldHVybiBQUklWQVRFTkFNRTsKKwogICAg
IGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhlckZsYWdz
LmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSkgewogICAgICAgICBB
U1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBt
YXhUb2tlbkxlbmd0aCkgewpAQCAtMTA2OSw2ICsxMDg0LDE0IEBAIEpTVG9rZW5UeXBlIExleGVy
PENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9r
ZW5EYXRhCiAgICAgQVNTRVJUKG1fYnVmZmVyMTYuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIXRv
a2VuRGF0YS0+ZXNjYXBlZCk7CiAKKyAgICBhdXRvIGlkZW50Q2hhcnNTdGFydCA9IGlkZW50aWZp
ZXJTdGFydDsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSAqaWRlbnRpZmllclN0YXJ0ID09ICcj
JzsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgKytpZGVudENoYXJzU3RhcnQ7CisK
KyAgICBKU1Rva2VuVHlwZSBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFURU5BTUUg
OiBJREVOVDsKKyAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUgfHwgaWRlbnRpZmllclN0YXJ0ICE9
IGN1cnJlbnRTb3VyY2VQdHIoKSk7CisKICAgICBhdXRvIGZpbGxCdWZmZXIgPSBbJl0gKGJvb2wg
aXNTdGFydCA9IGZhbHNlKSB7CiAgICAgICAgIC8vIFx1WFhYWCB1bmljb2RlIGNoYXJhY3RlcnMg
b3IgU3Vycm9nYXRlIHBhaXJzLgogICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJl
bnRTb3VyY2VQdHIoKSkKQEAgLTEwODgsNyArMTExMSw3IEBAIEpTVG9rZW5UeXBlIExleGVyPENo
YXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSogdG9rZW5E
YXRhCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAgICAgICAg
ICAgICByZWNvcmRVbmljb2RlQ29kZVBvaW50KGNoYXJhY3Rlci52YWx1ZSgpKTsKICAgICAgICAg
ICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKLSAgICAgICAgICAgIHJl
dHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgIH0KIAog
ICAgICAgICBBU1NFUlQoVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpKTsKQEAgLTExMDQsMTAg
KzExMjcsMTAgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRp
ZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgc2hpZnQoKTsKICAg
ICAgICAgc2hpZnQoKTsKICAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNvdXJjZVB0
cigpOwotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAg
ICAgfTsKIAotICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50aWZpZXJTdGFy
dCA9PSBjdXJyZW50U291cmNlUHRyKCkpOworICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVm
ZmVyKGlkZW50Q2hhcnNTdGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOwogICAgIGlmIChVTkxJ
S0VMWSh0eXBlICYgRXJyb3JUb2tlbkZsYWcpKQogICAgICAgICByZXR1cm4gdHlwZTsKIApAQCAt
MTE0MCwxMyArMTE2MywxMyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFy
c2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAgICBBU1NF
UlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlmICghZW50
cnkpCi0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gaWRlbnRU
eXBlOwogICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBl
PihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNFUlZFRF9J
Rl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gVU5FWFBFQ1RFRF9F
U0NBUEVfRVJST1JUT0s7CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJldHVybiBp
ZGVudFR5cGU7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFjdGVyUmVxdWly
ZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3RlcikKQEAgLTI0NzMsMTQgKzI0OTYs
MjEgQEAgc3RhcnQ6CiAgICAgICAgIG1faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tlbiA9IHRy
dWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0YXJ0Owot
ICAgIGNhc2UgQ2hhcmFjdGVySGFzaDoKKyAgICBjYXNlIENoYXJhY3Rlckhhc2g6IHsKICAgICAg
ICAgLy8gSGFzaGJhbmcgaXMgb25seSBwZXJtaXR0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzb3Vy
Y2UgdGV4dC4KLSAgICAgICAgaWYgKHBlZWsoMSkgPT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkp
IHsKKyAgICAgICAgYXV0byBuZXh0ID0gcGVlaygxKTsKKyAgICAgICAgaWYgKG5leHQgPT0gJyEn
ICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAg
ICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwogICAgICAg
ICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgY291bGQgYmUgYSB2YWxpZCBQcml2YXRlTmFt
ZS4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpICYmIChpc1Np
bmdsZUNoYXJhY3RlcklkZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkgeworICAgICAg
ICAgICAgbGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5d29yZHMpOwor
ICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAgIGdvdG8gaW52
YWxpZENoYXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRlbnRpZmll
clN0YXJ0OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQogICAgICAgICAg
ICAgZ290byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA4ZDMyMGU3ZDk0ZTY0YTlkNzlhYTU3MTkzNDk0OTQxODU1
ZDJiYjU4Li5lN2U4NmQzNTg4ZmQ4NDhiM2NjZWY1MjFkNzQ0ZTg1ZTBkMmU5MWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtMzI3
LDEwICszMjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CisgICAgaW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIERvdFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAgICAgICAs
IG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2Rl
OjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUpCisg
ICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgIHsK
ICAgICB9CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSog
YXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEJh
c2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBUaHJvd2Fi
bGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0gICAgICAg
ICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2Fy
Z3MoYXJncykKICAgICB7CiAgICAgfQpAQCAtNDM3LDIwICs0NDEsMjAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNO
b2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBk
aXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90
Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNO
b2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBk
aXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90
Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseShk
aXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBs
eSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwg
YXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBBcHBseUZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFw
cGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50
LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAgICwgbV9k
aXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFw
cGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNh
bGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFz
ZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUg
SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9u
Q2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50
c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAg
ICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSwgYXJn
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgIHsKICAgICB9CiAKQEAgLTc3Nywy
MSArNzgxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisg
ICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAg
ICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkK
LSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAg
ICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90
Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBv
cGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURv
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIE9wZXJhdG9yIG9wZXIs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAg
ICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50
cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cAppbmRleCBiY2Q5ZWY5OGJlYjRiZThlZTFlYTY0YmVlMzQ0YzEyODVmYjA5ZDIwLi42NGE2NmY3
NjVjOGY0ZDI4NDk2ZGE5Y2U2YzQ0YWJiMDhhYTg4MWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgUHJvcGVydHlMaXN0Tm9k
ZTo6aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcE5hbWUp
CiBib29sIFByb3BlcnR5TGlzdE5vZGU6OnNob3VsZENyZWF0ZUxleGljYWxTY29wZUZvckNsYXNz
KFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCiB7CiAgICAgd2hpbGUgKGxpc3QpIHsKLSAgICAgICAg
aWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKKyAgICAgICAgaWYgKGxp
c3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQoKSB8fCBsaXN0LT5tX25vZGUtPmlzUHJp
dmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGxpc3QgPSBsaXN0LT5t
X25leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDVkMGNh
ZWZiYWNmZWFmYmYwZDZkNDc5OGZhYjE4YzBlMTJlMDFkZDMuLmI0ZDJhNTFjMmZhNjQ1ZTY5ZmE3
NjE5MmM5MTcwMTliNzMxYWFkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
QEAgLTE4NSw2ICsxODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29s
IGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgICAg
ICAKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGlzTG9jYXRpb24oKTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNSZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0Fzc2lnblJlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTcx
OSw3ICs3MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNzRWxlbWVu
dFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9OwogICAgIGNs
YXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdl
dHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVh
ZCA9IDMyIH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9IDEsIEdl
dHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVh
ZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKICAgICAgICAgZW51bSBQdXRUeXBlIDogdWludDhfdCB7
IFVua25vd24sIEtub3duRGlyZWN0IH07CiAKICAgICAgICAgUHJvcGVydHlOb2RlKGNvbnN0IElk
ZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywg
Q2xhc3NFbGVtZW50VGFnKTsKQEAgLTczOCw2ICs3MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzUHJvcGVydHko
KSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzSW5zdGFuY2VDbGFz
c0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSAmJiAhbmVl
ZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQorICAgICAgICBi
b29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIFByaXZhdGU7IH0KICAgICAg
ICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0K
ICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xh
c3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9CiAgICAgICAgIHZvaWQgc2V0SXNPdmVy
cmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9
CkBAIC03NDgsNyArNzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKICAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWduOwotICAgICAgICB1bnNpZ25lZCBtX3R5cGUg
OiA2OworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OwogICAgICAgICB1bnNpZ25lZCBtX25l
ZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRUeXBlIDogMTsKICAg
ICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NF
bGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUg
dGhhbiB0d28gYml0cyIpOwpAQCAtNzc2LDYgKzc3OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqLCBSZWdpc3RlcklEKiwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiopOwogCisgICAgICAg
IHZvaWQgZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqIHNjb3BlKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qg
PSBudWxscHRyKSBmaW5hbAogICAgICAgICB7CkBAIC04MjAsOSArODI0LDMwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsK
IAotICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBlbnVtIGNsYXNzIERvdFR5
cGUgeyBOYW1lLCBQcml2YXRlTmFtZSB9OworICAgIGNsYXNzIEJhc2VEb3ROb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYpOworICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOworCisgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CisgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9
CisgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAg
ICBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90VHlwZTo6
UHJpdmF0ZU5hbWU7IH0KKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVydHlWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQcm9wZXJ0eShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQ
dHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQ
cm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHZhbHVlKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFz
ZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAgICAgICAgRG90VHlwZSBt
X3R5cGU7CisgICAgfTsKKworICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1Ymxp
YyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwogCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9
CkBAIC04MzEsMTAgKzg1Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIp
IGZpbmFsOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQogICAgICAgICBib29s
IGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1f
aWRlbnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFNwcmVhZEV4cHJlc3Npb25Ob2RlIGZpbmFsIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpA
QCAtOTQ3LDkgKzk3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2Ny
aXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YSB7CisgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBCYXNlRG90Tm9k
ZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKQEAgLTk1Nyw4ICs5ODAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAg
IH07CiAKQEAgLTk5NSw3ICsxMDE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
QXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6
ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxs
T3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwpAQCAt
MTAwNCw3ICsxMDI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90
IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25D
YWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9y
QXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKQEAgLTEw
MTMsNyArMTAzNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGFzT3duUHJvcGVy
dHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CisgICAgICAgIEhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKQEAgLTE0
NzUsMjggKzE0OTYsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9yaWdodEhh
c0Fzc2lnbm1lbnRzIDogMTsKICAgICB9OwogCi0gICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5h
bCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IHsKKyAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNz
aWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAg
ICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogCi0gICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1f
aWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBib29sIG1f
cmlnaHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgUmVhZE1vZGlmeURvdE5v
ZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgZmluYWwgOiBwdWJsaWMg
QmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBEb3RUeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogCi0gICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBPcGVyYXRvciBtX29wZXJhdG9y
OwogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CkBAIC0yMjkzLDcgKzIz
MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlZmluZUZpZWxkTm9kZSBmaW5h
bCA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gY2xh
c3MgVHlwZSB7IE5hbWUsIENvbXB1dGVkTmFtZSB9OworICAgICAgICBlbnVtIGNsYXNzIFR5cGUg
eyBOYW1lLCBQcml2YXRlTmFtZSwgQ29tcHV0ZWROYW1lIH07CiAgICAgICAgIERlZmluZUZpZWxk
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgRXhwcmVzc2lv
bk5vZGUqLCBUeXBlKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggZDQyYWFjMjI4OTUzODEwYmU4YmMzZjljNjE3M2NjNmUyMWJkODhk
MC4uNjRlMmFhZjVlNTNiZmUxYTM1OGRkNmQxM2EwMzM3YTE5YjM5Yzc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODI2LDYgKzgyNiw4IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVmFyaWFibGVEZWNsCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSAwOwogICAgICAg
ICBkZWNsYXJhdGlvbnMrKzsKICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IGZhbHNlOwor
CisgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHBy
aXZhdGUgbmFtZSB0byBkZWNsYXJlIGEgdmFyaWFibGUiKTsKICAgICAgICAgaWYgKG1hdGNoU3Bl
Y0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChMRVQpICYmIChk
ZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8fCBkZWNs
YXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKSwgCiAgICAg
ICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBh
IExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMTI4OCw2ICsxMjkwLDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRGUKICAgICAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpE
ZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoZGVzdHJ1Y3R1cmluZ0tpbmRUb1Zh
cmlhYmxlS2luZE5hbWUoa2luZCkpOworICAgICAgICAgICAgaWYgKGtpbmQgIT0gRGVzdHJ1Y3R1
cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSBhcyBh
ICIsIGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKICAgICAgICAg
ICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBvciBhICcp
JyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwogICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goTEVUKSAmJiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0xldCB8
fCBraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvQ29uc3QpLCAiQ2Fubm90
IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4aWNhbERlY2xhcmF0aW9u
Iik7CkBAIC0yOTUzLDYgKzI5NTcsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBmYWls
SWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBwYXJzZSBjb21wdXRlZCBwcm9w
ZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJB
Q0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CisgICAgICAgICAgICBBU1NFUlQo
T3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpOworICAgICAgICAgICAgSlNUb2tlbiB0
b2tlbiA9IG1fdG9rZW47CisgICAgICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50
OworICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMs
ICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3QgYmUgcHJpdmF0ZSIpOworICAgICAgICAgICAg
ZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRlciwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRo
b2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CisgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoQW5kVXBkYXRlKE9Q
RU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUg
bmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xh
cmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNh
dGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgZmllbGQgdHdpY2UiKTsKKyAg
ICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRU
b2tlbkZsYWcpCiAgICAgICAgICAgICAgICAgZ290byBuYW1lZEtleXdvcmQ7CkBAIC0yOTY4LDgg
KzI5ODUsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0
eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICB9IGVsc2UgaWYgKE9wdGlv
bnM6OnVzZVB1YmxpY0NsYXNzRmllbGRzKCkgJiYgIW1hdGNoKE9QRU5QQVJFTikgJiYgdGFnID09
IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZSkgewogICAgICAgICAgICAgQVNTRVJUKCFpc0dldHRlciAmJiAhaXNTZXR0
ZXIpOwotICAgICAgICAgICAgaWYgKGlkZW50KQorICAgICAgICAgICAgaWYgKGlkZW50KSB7CiAg
ICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0eU5hbWVz
LmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgY2xhc3MgZmllbGQgbmFtZWQgJ2NvbnN0cnVj
dG9yJyIpOworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJv
cGVydHlOYW1lcy5jb25zdHJ1Y3RvclByaXZhdGVGaWVsZCwgIkNhbm5vdCBkZWNsYXJlIHByaXZh
dGUgY2xhc3MgZmllbGQgbmFtZWQgJyNjb25zdHJ1Y3RvciciKTsKKyAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7CiAgICAgICAgICAgICAgICAg
aWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50
aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CkBAIC0zMDMzLDYgKzMwNTIsMTAgQEAg
cGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zm
c2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3Np
bmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZh
dGVDbGFzc0ZpZWxkcygpKSB7CisgICAgICAgIC8vIEZhaWwgaWYgdGhlcmUgYXJlIG5vIHBhcmVu
dCBwcml2YXRlIG5hbWUgc2NvcGVzIGFuZCBhbnkgdXNlZC1idXQtdW5kZWNsYXJlZCBwcml2YXRl
IG5hbWVzLgorICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGNvcHlVbmRlY2xhcmVkUHJpdmF0
ZU5hbWVzVG9PdXRlclNjb3BlKCksICJDYW5ub3QgcmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0
ZSBuYW1lcyIpOworICAgIH0KICAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRleHQuY3Jl
YXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxleGljYWxF
bnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVudHMpOwog
ICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUlu
Zm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBAIC0zMDU2LDYgKzMwNzksOSBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFBy
b3BlcnR5TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVm
aW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBl
KSB7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CisgICAgICAgICAgICB0eXBlID0gRGVmaW5l
RmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwog
ICAgICAgICBjYXNlIFNUUklORzoKICAgICAgICAgY2FzZSBJREVOVDoKICAgICAgICAgbmFtZWRL
ZXl3b3JkOgpAQCAtMzA5NSw2ICszMTIxLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAg
ICAgICAgaWYgKGNvbnN1bWUoRVFVQUwpKQogICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogCisgICAgICAgIGlmICh0eXBlID09IERl
ZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWUpCisgICAgICAgICAgICBjdXJyZW50U2Nv
cGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKKwogICAgICAgICBUcmVlU3RhdGVtZW50
IGRlZmluZUZpZWxkID0gY29udGV4dC5jcmVhdGVEZWZpbmVGaWVsZChmaWVsZExvY2F0aW9uLCBp
ZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUpOwogICAgICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVu
dChzb3VyY2VFbGVtZW50cywgZGVmaW5lRmllbGQpOwogICAgIH0KQEAgLTQ3OTgsNiArNDgyNywy
MiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkQ2FsbE9yQXBwbHlEZXB0aChQYXJzZXJUeXBl
KiwgVk0mLCBPcHRpb25hbDx0eXBlbmFtZSBQYQogewogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgorYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6dXNlUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoYXV0byBtYXliZUN1cnJlbnQg
PSBmaW5kUHJpdmF0ZU5hbWVTY29wZSgpKSB7CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBt
YXliZUN1cnJlbnQudmFsdWUoKTsKKyAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNQcml2YXRlTmFt
ZSgqaWRlbnQpKQorICAgICAgICAgICAgY3VycmVudC0+dXNlUHJpdmF0ZU5hbWUoKmlkZW50KTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9u
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewpAQCAtNDk5OSw4ICs1MDQ0LDIxIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFs
RXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gZXhwcmVz
c2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgbmV4dEV4
cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtleXdvcmRzIHwgTGV4ZXJGbGFn
czo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CisgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBhdXRvIHR5
cGUgPSBEb3RUeXBlOjpOYW1lOworICAgICAgICAgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFN
RSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgZmFpbElmVHJ1ZShiYXNlSXNTdXBlciwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBuYW1l
cyBmcm9tIHN1cGVyIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50
U2NvcGUoKS0+ZXZhbENvbnRleHRUeXBlKCkgPT0gRXZhbENvbnRleHRUeXBlOjpJbnN0YW5jZUZp
ZWxkRXZhbENvbnRleHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZG
YWxzZShjdXJyZW50U2NvcGUoKS0+aGFzUHJpdmF0ZU5hbWUoKmlkZW50KSwgIkNhbm5vdCByZWZl
cmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIGZpZWxkICciLCBpZGVudC0+aW1wbCgpLCAiJyIpOwor
ICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlk
ZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7
CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRl
bnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVu
dCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZU5h
bWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gSURFTlQ7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQg
YSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hhaW5CYXNlID8gIic/LiciIDogIicu
JyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFy
dExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBl
eHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIGJhc2Ug
PSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlw
ZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOwog
ICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShiYXNlSXNTdXBlciAmJiBjdXJyZW50U2NvcGUo
KS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rp
b25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3VwZXJQcm9wZXJ0eSgpOwogICAg
ICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxOTUsNiArNTI1Myw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5h
cnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoK
ICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChjb250ZXh0LmlzUmVzb2x2ZShleHByKSwg
IkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkgJyIsIG1fcGFyc2VyU3RhdGUubGFz
dElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJpdmF0ZUxvY2F0aW9uKGV4cHIpLCAiQ2Fubm90
IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lLT5p
bXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRp
b24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0
aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAt
NTI3MSw3ICs1MzMwLDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZvaWQgUGFy
c2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2FzZSBJTlZB
TElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkIHBy
aXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICBvdXQucHJpbnQoIlVuZXhw
ZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2VuKCkpOworICAgICAgICByZXR1cm47CisKICAg
ICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBl
Y3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggNTRiMzk3MzA5ZWEyZmNjZjM3MzFmYmU5OThkYWI1OTljOWJi
ZTAxNi4uMWY1ZDkzMmMzZjU3NWViMjA1NTc0MDRlNTY0MTg3ZmJmNzViOTY2OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaXNHZW5lcmF0b3JCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0
b3JCb3VuZGFyeTsgfQogICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9pc0FzeW5jRnVuY3Rpb247IH0KICAgICBib29sIGlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeTsgfQorICAgIGJvb2wgaXNQ
cml2YXRlTmFtZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzU2NvcGU7IH0KICAgICBi
b29sIGlzQ2xhc3NTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc1Njb3BlOyB9CiAKICAg
ICBib29sIGhhc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQXJndW1lbnRzOyB9CkBA
IC0zMDksNiArMzEwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hbGxvd3NMZXhpY2FsRGVjbGFy
YXRpb25zID0gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIHNldElzUHJpdmF0ZU5hbWVTY29wZSgp
CisgICAgeworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBpc1ByaXZhdGVOYW1lU2NvcGUg
aXMgYW4gYWxpYXMgZm9yIGlzQ2xhc3NTY29wZSAtLS0gVGhpcyBpcyBwb3RlbnRpYWxseSBtaXNs
ZWFkaW5nLAorICAgICAgICAvLyBwYXJ0aWN1bGFybHkgd2hlbiBwYXJzaW5nIGRpcmVjdCBldmFs
IGNvZGUgd2hpY2ggb2NjdXJzIHdpdGhpbiBhIGNsYXNzLgorICAgICAgICBzZXRJc0NsYXNzU2Nv
cGUoKTsKKyAgICB9CisKICAgICB2b2lkIHNldElzQ2xhc3NTY29wZSgpCiAgICAgewogICAgICAg
ICBtX2lzQ2xhc3NTY29wZSA9IHRydWU7CkBAIC00NzUsNyArNDgzLDQ0IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRlbnQuZ2V0
KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzLmhh
c1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xhcmVkUHJp
dmF0ZU5hbWVzVG8oU2NvcGUmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9sZXhpY2FsVmFyaWFi
bGVzLmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8ob3RoZXIubV9sZXhpY2FsVmFyaWFibGVz
KTsKKyAgICB9CisKKyAgICBib29sIGhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVz
U2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogbV9sZXhpY2FsVmFy
aWFibGVzLnByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVl
LmlzVXNlZCgpICYmICFlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0
aW9ucyk7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShpZGVudCk7
CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTmFtZShj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xl
eGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0
ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
bGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgICAgICBpZiAo
IWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9u
UmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc0RlY2xhcmVkUGFyYW1ldGVy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGhhc0RlY2xh
cmVkUGFyYW1ldGVyKGlkZW50LmltcGwoKSk7CkBAIC05MTAsNyArOTU1LDcgQEAgcHVibGljOgog
ICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50
aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1
bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxvcHQsIGNv
bnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNv
dXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25z
dHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiA9
IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsg
fQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNvbnN0IHsg
cmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTExODMsNiArMTIyOCw0
NCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7
CiAgICAgfQogCisgICAgT3B0aW9uYWw8U2NvcGVSZWY+IGZpbmRQcml2YXRlTmFtZVNjb3BlKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAgdW5z
aWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAh
bV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOwor
CisgICAgICAgIGlmIChtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkpCisgICAg
ICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBTY29wZVJlZiBwcml2YXRlTmFtZVNjb3Bl
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAgICAg
dW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICB3aGlsZSAoaSAm
JiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgaS0t
OworCisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkp
OworICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisgICAgfQorCisg
ICAgYm9vbCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpCisgICAgewor
ICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gcHJpdmF0ZU5hbWVTY29wZSgpOworICAgICAgICB1
bnNpZ25lZCBpID0gY3VycmVudC5pbmRleCgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1f
c2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKwor
ICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICByZXR1cm4gIWN1cnJlbnQtPmhhc1VzZWRCdXRV
bmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCk7CisKKyAgICAgICAgY3VycmVudC0+Y29weVVuZGVjbGFy
ZWRQcml2YXRlTmFtZXNUbyhtX3Njb3BlU3RhY2tbaV0pOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKICAgICBTY29wZVJlZiBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxl
eGljYWxTY29wZSgpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNp
emUoKSAtIDE7CkBAIC0xNDYyLDYgKzE1NDUsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgbWF0Y2hBbmRVcGRhdGUoSlNUb2tlblR5cGUgZXhwZWN0ZWQsIGNvbnN0IEpT
VG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgaWYgKG1hdGNoKGV4cGVjdGVkKSkgeworICAg
ICAgICAgICAgbV90b2tlbiA9IHRva2VuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBtYXRjaENvbnRleHR1YWxLZXl3b3JkKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpCiAgICAgewpAQCAtMTcxNSw2ICsxODA4LDggQEAgcHJpdmF0ZToKIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxlQXNzaWdu
bWVudFRhcmdldChUcmVlQnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAorICAgIEFMV0FZU19J
TkxJTkUgYm9vbCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyKik7CisKICAgICBBTFdB
WVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBib29sIGFs
bG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgCkBAIC0xODA5LDYgKzE5MDQsNyBAQCBwcml2
YXRlOgogICAgICAgICBGdW5jdGlvblBhcnNlUGhhc2UgZnVuY3Rpb25QYXJzZVBoYXNlIHsgRnVu
Y3Rpb25QYXJzZVBoYXNlOjpCb2R5IH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RJ
ZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0RnVu
Y3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0UHJp
dmF0ZU5hbWUgeyBudWxscHRyIH07CiAgICAgICAgIGJvb2wgYWxsb3dBd2FpdCB7IHRydWUgfTsK
ICAgICAgICAgYm9vbCBpc1BhcnNpbmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgeyBmYWxzZSB9Owog
ICAgIH07CkBAIC0xOTU5LDcgKzIwNTUsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJv
ciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25D
b25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0
aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVu
dGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29u
dGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFy
YW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNV
bmRlclREWiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0
aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwpAQCAtMTk3NCw2
ICsyMDcwLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgQVNTRVJUKG1fc291cmNl
LT5zdGFydENvbHVtbigpID4gT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSk7CiAgICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4gPSBtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKS56ZXJvQmFzZWRJbnQo
KTsKIAorICAgIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgJiYgdmFyaWFibGVzVW5kZXJU
RFogJiYgdmFyaWFibGVzVW5kZXJURFotPnByaXZhdGVOYW1lc1NpemUoKSkgeworICAgICAgICBj
dXJyZW50U2NvcGUoKS0+c2V0SXNQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHZhcmlhYmxl
c1VuZGVyVERaLT5jb3B5UHJpdmF0ZU5hbWVzVG8oY3VycmVudFNjb3BlKCktPmxleGljYWxWYXJp
YWJsZXMoKSk7CisgICAgfQorCiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5uZXIoY2Fs
bGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAgICBpbnQg
bGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKQEAgLTIwNTgsNiArMjE1OSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAogICAgIEV2
YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsCiAg
ICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwKKyAgICBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxwdHIsCiAg
ICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucyA9
IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxzZSkKIHsK
QEAgLTIwNzAsNyArMjE3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChzb3VyY2Uu
cHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAgICAgICAgUGFyc2VyPExleGVyPExD
aGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRN
b2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRv
cExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJzZWROb2Rl
PigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJy
b3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0Nv
bnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNl
ZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/
IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVs
bG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAg
ICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAg
ICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsK
QEAgLTIwODMsNyArMjE4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgK
ICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1
Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1
aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3VsZCBhbHdheXMgdXNl
IGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2Rl
LCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9u
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRl
eHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAg
ICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJz
ZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDog
UGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0
aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwg
bmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4
dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxl
c1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGUwZWJlYWY4NWZkNzEy
MzcxN2Y4NzcxMTI3ZjcxOTIzZmZlNjc0OC4uN2IzYzFlYzNiN2Y2YTZiMTFiZmM0NWY0YmM5MWQw
NDgxMmY0Y2QyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vu
cy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9VQkxFLAog
ICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJTkcsCiAg
ICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaAppbmRleCBhYWIwYjc0ZGFhODkwNjQ0NjgwYmNiZDJmMDg4ZWFiZGNh
OTNkZDA2Li40M2Y1YTkyZWM3NmJiNjViODc2ZDg1ODdkMTk0NDEyYTJhMDczOTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMsNyArNzMs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIsIEludGVn
ZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAgICBUaGlz
RXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFsRXhwciwK
ICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0RXhwciwg
QnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQcmVFeHBy
LCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAorICAgICAg
ICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRp
b25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHByLCBBc3Np
Z25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRlcmFs
RXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFycmF5
RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQs
CkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJv
b2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0K
ICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsg
cmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vz
cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUs
IGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUgdHlwZSwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZSA/IFBy
aXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25z
dCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZYXJyOjpj
aGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6IFJlZ0V4
cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5l
d0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQpA
QCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24oRXhwcmVz
c2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHBy
IHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAgICByZXR1
cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9PSBQcml2
YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJvb2wgaXNQ
cml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3NpZ25tZW50
TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFjN2I2Y2Iz
MTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdkNDc3NDA2
OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9y
PShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9IG90aGVy
Lm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIubV9yYXJl
RGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAqdGhpczsK
K30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1cmVkSWZE
ZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAg
ICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgwLDYgKzkw
LDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJvbm1lbnQm
IG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNFdmVyeXRo
aW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURh
dGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50
OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1l
bnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQK
ICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1cmVkKCkp
CiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlhYmxlRW52
aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJpZXMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDog
ZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgpLCBwYWly
LnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVmZGJlYTE5
OTJjNTIuLjE3N2Y4ODE1YmMzYTM3ZTRlYWQ2YmQ2MDFhY2NmNGZhYzAxM2YyMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBA
IC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JdGVy
YXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJhbWV0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVO
YW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRz
IHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsg
bV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlvbjsgfQog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9IElzUGFy
YW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5n
Q2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRzIHw9IElz
UHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBt
X2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAgICAgICAg
SXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9IDEgPDwg
NywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2Fu
ZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwKICAgICB9
OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUgQEAgc3Ry
dWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0
cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgeworcHVibGlj
OgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2JpdHMgPSB0
cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KKworICAg
IHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVudW0gVHJh
aXRzIDogdWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAgIElzRGVj
bGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBtX2JpdHMg
eyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJh
aXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3Ry
dWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsKIHByaXZh
dGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hU
cmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBQ
cml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0gZGVmYXVs
dDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBvdGhlcikg
PSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25t
ZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7CisgICAgVmFy
aWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFyaWFibGVF
bnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIubV9tYXAp
KQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdD
YXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJlRGF0YSkp
CisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAgICAgICAs
IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCkKKyAg
ICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlxdWU8VmFy
aWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51bGxwdHIp
CisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0oY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0
ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAtOTksNyAr
MTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFw
OjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0g
ICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6
ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1
bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZpZXIpOyB9
CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmllcik7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50aWZpZXIp
OyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVyeXRoaW5n
Q2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisgICAgdXNp
bmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVzOjpp
dGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJp
dmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHVz
ZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJpdmF0ZU5h
bWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJp
dmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIu
Z2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0byBlbnRy
eSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZh
dGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0
SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5
KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9IGdldE9y
QWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0SXNVc2Vk
KCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZpbmQoaWRl
bnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAg
ICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHByZXZlbnQg
QVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJUKHByaXZh
dGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJpdmF0ZU5h
bWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJl
RGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lc1RvKFZhcmlhYmxlRW52aXJv
bm1lbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW90aGVyLm1fcmFyZURhdGEpCisgICAgICAg
ICAgICBvdGhlci5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1l
bnQ6OlJhcmVEYXRhPigpOworICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgewor
ICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIShlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiBlbnRyeS52YWx1ZS5pc0RlY2xh
cmVkKCkpKQorICAgICAgICAgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRl
TmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgeworICAgICAgICAvLyBV
c2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2YXRlTmFt
ZXMgZnJvbSBhbgorICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50IGludG8g
YW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKKyAgICAgICAgLy8gZWFybGllciBp
biB0aGUgc291cmNlIGNvZGUgdGhhbiBpdCBpcyBkZWZpbmVkLgorICAgICAgICBpZiAocHJpdmF0
ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0
ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYg
IWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0ZXIuZ2V0
T3JBZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpLnNldElzVXNlZCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFJhcmVEYXRhIHsKKyAgICAgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFJhcmVEYXRhKCkgeyB9
CisgICAgICAgIFJhcmVEYXRhKFJhcmVEYXRhJiYgb3RoZXIpCisgICAgICAgICAgICA6IG1fcHJp
dmF0ZU5hbWVzKFdURk1vdmUob3RoZXIubV9wcml2YXRlTmFtZXMpKQorICAgICAgICB7CisgICAg
ICAgIH0KKyAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CisgICAg
ICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7CisgICAg
ICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICB9OworCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50OwogCiAgICAgTWFwIG1fbWFw
OwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCB7IGZhbHNlIH07CisKKyAgICBQcml2
YXRlTmFtZUVudHJ5JiBnZXRPckFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBs
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0
YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKwor
ICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGltcGwsIFByaXZh
dGVOYW1lRW50cnkoMCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBj
bGFzcyBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNjAxZDAxOWRmOTNmOGYyZjhjYzZjMWY1
OTFhOTQxNTQ4ZGMwN2ZjYi4uNWVjZTZkYTE2YjA2MDczMjk1YTRhNmI2NjgxYjllZmU1ODRkNmY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApA
QCAtODU2LDYgKzg1NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVu
Y29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQorCisgICAgU291cmNlVHlwZTxUPiog
ZGVjb2RlQXNQdHIoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gdGhpcy0+dGVtcGxh
dGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKTsKKyAgICB9CiB9OwogCiBjbGFzcyBDYWNo
ZWRTaW1wbGVKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlPiB7CkBAIC0xMDAzLDIzICsxMDA5LDQ1IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiB9OwogCitjbGFzcyBDYWNoZWRWYXJp
YWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVEYXRhKQor
ICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1f
cHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0CisgICAgewor
ICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9wcml2YXRl
TmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJlZlB0
cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFja2Vk
UHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElkZW50aWZp
ZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQcml2YXRl
TmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRW
YXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25t
ZW50PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgZW52KQogICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5dGhpbmdD
YXB0dXJlZCA9IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5lbmNv
ZGUoZW5jb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2Rl
ciwgZW52Lm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikgY29uc3QKICAgICB7CiAgICAg
ICAgIGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsK
ICAgICAgICAgbV9tYXAuZGVjb2RlKGRlY29kZXIsIGVudi5tX21hcCk7CisgICAgICAgIGlmICgh
bV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVudi5tX3JhcmVEYXRhID0gV1RG
OjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICplbnYubV9yYXJlRGF0YSk7CisgICAgICAg
IH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwog
ICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsLCBV
bmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0
czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFz
aFRyYWl0cz4gbV9tYXA7CisgICAgQ2FjaGVkUHRyPENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZENvbXBhY3RWYXJpYWJsZUVu
dmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVu
dD4gewpAQCAtMTE0Nyw2ICsxMTc1LDIyIEBAIHByaXZhdGU6CiAgICAgaW50cHRyX3QgbV9iaXRz
OwogfTsKIAorY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+IHsKK3B1YmxpYzoKKyAgICB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3ltYm9sVGFi
bGVSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5lbmNv
ZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAgIHZvaWQg
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRh
JiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRlY29kZShk
ZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRlOgorICAg
IENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRl
bnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkU3ltYm9s
VGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6CiAgICAg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGUmIHN5bWJvbFRh
YmxlKQpAQCAtMTE1Nyw2ICsxMjAxLDcgQEAgcHVibGljOgogICAgICAgICBtX25lc3RlZExleGlj
YWxTY29wZSA9IHN5bWJvbFRhYmxlLm1fbmVzdGVkTGV4aWNhbFNjb3BlOwogICAgICAgICBtX3Nj
b3BlVHlwZSA9IHN5bWJvbFRhYmxlLm1fc2NvcGVUeXBlOwogICAgICAgICBtX2FyZ3VtZW50cy5l
bmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9hcmd1bWVudHMuZ2V0KCkpOworICAgICAgICBt
X3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdldCgpKTsK
ICAgICB9CiAKICAgICBTeW1ib2xUYWJsZSogZGVjb2RlKERlY29kZXImIGRlY29kZXIpIGNvbnN0
CkBAIC0xMTcwLDYgKzEyMTUsMTEgQEAgcHVibGljOgogICAgICAgICBTY29wZWRBcmd1bWVudHNU
YWJsZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVjb2Rlcik7
CiAgICAgICAgIGlmIChzY29wZWRBcmd1bWVudHNUYWJsZSkKICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLT5tX2FyZ3VtZW50cy5zZXQoZGVjb2Rlci52bSgpLCBzeW1ib2xUYWJsZSwgc2NvcGVkQXJn
dW1lbnRzVGFibGUpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7CisgICAg
ICAgICAgICBzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxTeW1ib2xU
YWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPmRl
Y29kZShkZWNvZGVyLCAqc3ltYm9sVGFibGUtPm1fcmFyZURhdGEpOworICAgICAgICB9CisKICAg
ICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KIApAQCAtMTE4MCw2ICsxMjMwLDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAgICAgdW5z
aWduZWQgbV9zY29wZVR5cGUgOiAzOwogICAgIENhY2hlZFB0cjxDYWNoZWRTY29wZWRBcmd1bWVu
dHNUYWJsZT4gbV9hcmd1bWVudHM7CisgICAgQ2FjaGVkUHRyPENhY2hlZFN5bWJvbFRhYmxlUmFy
ZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYjRiNzE2MzM3MzRlM2Nh
ZDk5NTdlN2NkZmRjZGM3MzMyZGU4OWVjMy4uYWZkY2M5MDI5MTM3M2Y1MGQwNTcwZTM4YzhkOTM1
YTBhYmZjOWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCkBAIC03Niw3ICs3Niw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJhdGVVbmxp
bmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJv
b3ROb2RlOwogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZXhlY3V0YWJsZSAm
JiBleGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAgICB2bSwg
c291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0
cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6
cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51
bGxwdHIsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgICAgIHZtLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3Ry
aWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+Ojpw
YXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVs
bHB0ciwgdmFyaWFibGVzVW5kZXJURFosIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlv
bik7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApp
bmRleCA5YTMwMGU3MzY3ODg5MmIwNTQ2ODkwNWVlZTZhNjQwMWM5OTk1ODYzLi4zNTQ0MTVmOTUy
OGFkYmI5YzJlZDVlMTVjMzUyNTcwMDU1NzYwMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMCw2ICszMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkgLCBuYW1l
IyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZpbmUgSU5J
VElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1aWx0aW5O
YW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5JVElBTElaRV9TWU1CT0wobmFt
ZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQorI2RlZmlu
ZSBJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZhdGVGaWVs
ZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiIyIgI25hbWUpKQogCiBDb21tb25JZGVudGlm
aWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIDogbnVsbElkZW50aWZpZXIoKQpA
QCAtNDMsNiArNDQsNyBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0m
IHZtKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJQUxJWkVf
S0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJ
TklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCisgICAgSlNDX0NP
TU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSU5JVElBTElaRV9QUklWQVRFX0ZJ
RUxEX05BTUUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCmluZGV4IDhkYmM2ZDdhYzE4N2I3MTlkMDQ1MjY1NzAyODA5NjE2
MjI5ZDU4ZGMuLjg1NThiYWI5MGNlNWQ4YmIzZGQxMDhlMDg0NWY4YTUyOTRmNDVmNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApA
QCAtMjA5LDYgKzIwOSw5IEBACiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNybyh5ZWFy
KQogCisjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJRUxEKG1h
Y3JvKSBcCisgICAgbWFjcm8oY29uc3RydWN0b3IpCisKICNkZWZpbmUgSlNDX0NPTU1PTl9JREVO
VElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhhd2FpdCkgXAogICAgIG1h
Y3JvKGJyZWFrKSBcCkBAIC0zMjMsNiArMzI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChK
U0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMKQog
I3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZTUJPTF9H
TE9CQUwKIAorI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xP
QkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZUZpZWxkOworICAgICAgICBK
U0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChKU0NfSURFTlRJRklFUl9E
RUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xB
UkVfUFJJVkFURV9GSUVMRF9HTE9CQUwKKwogICAgICAgICAvLyBDYWxsZXJzIG9mIHRoaXMgbWV0
aG9kIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpZGVudGlmaWVycyBnaXZlbiB0byB0aGlzIG1ldGhv
ZCAKICAgICAgICAgLy8gc3Vydml2ZSB0aGUgbGlmZXRpbWUgb2YgQ29tbW9uSWRlbnRpZmllcnMg
YW5kIHJlbGF0ZWQgVk0uCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kRXh0
ZXJuYWxOYW1lKGNvbnN0IElkZW50aWZpZXImIHB1YmxpY05hbWUsIGNvbnN0IElkZW50aWZpZXIm
IHByaXZhdGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCmluZGV4IGEzOWMxMzc1NzU2ZmNkNTlmMjY0NWIwMDgxNGE2MGE4Njhm
YjE5YWMuLmU2ZDdhOTZlZTkyZTQzOGZjOWMwYWQwZDkxOGQ4YmM4ZjY1YzY4N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAt
MTMzMSw2ICsxMzMxLDI4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dp
dGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJp
dmF0ZV9uYW1lKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFz
PE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRfQyhieXRl
Y29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEdFVF9DKGJ5
dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc3Vic2NyaXB0LmlzU3lt
Ym9sKCkpOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2Ny
aXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsK
KyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93
blByb3BlcnR5KTsKKyAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAg
ICBSRVRVUk5fUFJPRklMRUQoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3BlcnR5KSk7
Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQogewog
ICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCmluZGV4IGJlMzc0YTBlNjI2ZjJkZjgzMzBiYWM0OTIzODk2MDgxYzRhYTQzOWQu
LmE3NmJmM2VhYmU0YTBmNWU0NDc1MGY3MTY1MDM5N2RjZGQ5ODZkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNzUsNiArMjc1
LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNfZ2VuZXJh
dG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3QpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA4YzljYTAz
NDc2MDQ5NmIwYTZhZWFmMGY4MjZmYjM2NDY2M2RjMGQ3Li40MTRlN2JkZjc3YWI0ZmM3NjRiNTY1
ZGY2ZjFiZDRhMGQ2NGIzMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI0LDYgKzMyNCwxNiBAQCBKU09iamVjdCog
Y3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4g
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyB1bmluaXRp
YWxpemVkIHZhcmlhYmxlLiIpOwogfQogCitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVO
YW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZh
bGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7
Cit9CisKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZp
ZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCiBFeGNlcHRp
b24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAppbmRleCBl
OWE1MjMxZmM1NjRiMDdkZDM5ZDFjYWMxNDY5MDk1YTNkYmQ0MTJjLi5lMWI3ZTAyMTE4ZDQ4YjVm
NTQ0ODc0NWJkMzY0YTJlOTM5OTczYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC01Myw2ICs1Myw4IEBAIEpTT2JqZWN0KiBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1
bmN0aW9uKEpTR2xvCiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxp
ZEdsb2JhbEFzc2lnbm1lbnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsKK0pTT2Jq
ZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOworSlNP
YmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsK
IFN0cmluZyBlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2VhOGY4NGJjYjkyNzg3YWY3MGU4
M2FhZGUyM2YwNDM3NWNiMDg5ZS4uNmJhZGM2NzA4NmU3YzJhNTlkMjcwZmM4NmQzMTJhM2RlMDU4
ZjU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcApAQCAtMjk0LDYgKzI5NCwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0YXJn
ZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
KSkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3JlYXRlUHJp
dmF0ZVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJv
bCgpLmdldCgpKSk7Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKQEAgLTEyMjUsNiArMTIzMSwxMSBAQCBjYXBpdGFs
TmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZs
YWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRl
KGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmco
KSwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KSk7CiAgICAgICAgIH0pOwogCisgICAgLy8gUHJp
dmF0ZVN5bWJvbHMgLyBQcml2YXRlTmFtZXMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3ltYm9sKV0u
aW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7CisgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3ltYm9sKSk7
CisgICAgICAgIH0pOworCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUoV0VCQVNT
RU1CTFlfU1RSRUFNSU5HX0FQSSkKICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcgQVBJCiAg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0ZXIoW10g
KGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCmluZGV4IDJmZDZkOTc0OWQxYzZiYzAyNWUzZjRhZjRkNDFmNzg0
YzQ4OTNkNTYuLmNmMzNkMjZhOTM0MTkyNmRjM2IyNzI2MzRhMzczZWIxNGYyODZiMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTgwLDYgKzE4MCwxMSBA
QCBwdWJsaWM6CiAgICAgLy8gYmVpbmcgcmV0dXJuZWQuIE9uY2UgdGhpcyBpcyBmaXhlZCB3ZSBz
aG91bGQgbWlncmF0ZSBjb2RlICYgcmVtb3ZlIHRoaXMgbWV0aG9kLgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiwgUHJv
cGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAorICAgIHN0YXRpYyBib29sIGdldFBy
aXZhdGVGaWVsZFNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90Jik7CisgICAgaW5saW5lIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkKEpTR2xvYmFs
T2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUgdm9pZCBw
dXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIGlubGluZSB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisK
ICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
IWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKQEAgLTE0NDQsNiArMTQ0OSw3
OCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmRvUHV0UHJvcGVydHlTZWN1cml0eUNo
ZWNrKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplYwogewogfQogCitKU09iamVjdCogY3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CisKK0FMV0FZU19JTkxJ
TkUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCogb2JqZWN0LCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgQVNTRVJUKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVO
YW1lKCkpOworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICB1bnNpZ25lZCBhdHRy
aWJ1dGVzOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNl
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+
Z2V0RGlyZWN0KG9mZnNldCk7CisgICAgQVNTRVJUKHZhbHVlKTsKKyAgICBpZiAodmFsdWUuaXND
ZWxsKCkpIHsKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7CisgICAgICAg
IEpTVHlwZSB0eXBlID0gY2VsbC0+dHlwZSgpOworICAgICAgICBVTlVTRURfUEFSQU0oY2VsbCk7
CisgICAgICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSAhPSBHZXR0ZXJTZXR0ZXJUeXBlICYm
IHR5cGUgIT0gQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSk7CisgICAgICAgIC8vIEZJWE1FOiBGb3Ig
bm93LCBwcml2YXRlIGZpZWxkcyBkbyBub3Qgc3VwcG9ydCBnZXR0ZXIvc2V0dGVyIGZpZWxkcy4g
TGF0ZXIgb24sIHdlIHdpbGwgbmVlZCB0byBmaWxsIGluIGFjY2Vzc29yIG1ldGFkYXRhIGhlcmUs
CisgICAgICAgIC8vIGFzIGluIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5U2xvdCgp
CisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0
MzUKKyAgICB9CisKKyAgICBzbG90LnNldFZhbHVlKG9iamVjdCwgYXR0cmlidXRlcywgdmFsdWUs
IG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIEpTT2JqZWN0Ojpn
ZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9IGdldFZN
KGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGlmICghSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVj
dCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNlKTsKKyAgICB9Cisg
ICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgdHJ1ZSk7Cit9CisKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRQcml2
YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90KQoreworICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3BlcnR5U2xv
dDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgaWYgKCFKU09iamVjdDo6
Z2V0UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xv
dCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
SW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1dERpcmVj
dCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9CisKK2lubGluZSB2b2lkIEpT
T2JqZWN0OjpkZWZpbmVQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90
JiBwdXRTbG90KQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7Cisg
ICAgaWYgKEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMsIGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9iamVjdCkp
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorICAg
IEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3BlLnJlbGVh
c2UoKTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFNsb3QpOwor
fQorCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdl
IGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1bmN0aW9u
IHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAogdGVtcGxhdGU8Ym9vbCBjaGVja051bGxTdHJ1
Y3R1cmU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IDFm
ZTdkNjcyOWQyOTc1ZmFhZjlhMjMxYjNlZDE1NmUyOGIwNzU2ZWQuLjBlYjUyNzhmNDMyZTRhNDVj
YjkwYWZjZDRhMzMwODEwNjhkZmU0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuY3BwCkBAIC0zMzcsNiArMzM3LDEwIEBAIHZvaWQgSlNTY29wZTo6Y29sbGVjdENs
b3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVmFyaWFibGVFbnZpcm9ubWVu
CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7
CiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKGxvY2tlciksIGl0ZXIg
PSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAg
ICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKKyAgICAgICAgaWYgKHN5bWJvbFRhYmxlLT5o
YXNQcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBzeW1ib2xU
YWJsZS0+cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVByaXZhdGVO
YW1lKG5hbWUpOyAgICAKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYjZmZjM5MTdjNzdmM2Q3YzdlYzFhOGVk
OTFkMGNkYjUwMjQ2ZTdmMy4uNTU3NzFkZGRmNzBiYmM2NDJmMjQ1NTQzN2RkZmQ0ZjFkNWQ0OTIy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01
MDksNiArNTA5LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdB
cGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVB1YmxpY0NsYXNzRmllbGRzLCB0cnVlLCBOb3Jt
YWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMgZGF0YSBmaWVs
ZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdFeGVjdXRh
YmxlSXNsYW5kQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgIkZvciB0aGUgYXJtNjQgRXhlY3V0
YWJsZUFsbG9jYXRvciwgaWYgdHJ1ZSwgc2VsZWN0IHdoaWNoIHJlZ2lvbiB0byB1c2UgcmFuZG9t
bHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nIHRoYXQganVtcCBpc2xhbmRzIHdvcmsuIikg
XAogICAgIHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxPYmplY3QsIGZhbHNlLCBOb3Jt
YWwsICJJZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rpc2FibGUg
Ym90aCB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBzdXBlciBzYW1wbGVyIikgXAorICAg
IHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
dGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNpZGUgY2xh
c3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRpb24sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5kZXggY2Jh
YjQ2Y2U1NDU0ZTIzZjM0ODJlYmRiYzBiNjljYTI2OTU2N2ZmNS4uMTY0Y2E2ZDQzMTBlNmJiMzhl
NjQ3ZTJmNmJlMmY5ZjdkOWYzMjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTgxLDYgKzE4MSwxMSBAQCBTeW1ib2xUYWJsZSogU3lt
Ym9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgICAgIGZvciAoOyBpdGVy
ICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV91
bmlxdWVUeXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAgICAgfQor
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0YS0+bV9w
cml2YXRlTmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRh
YmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCmluZGV4
IGUyMzRkMzE0YzY5ZWQyZDExMTMyMzkxNGJhMjdkM2Q5MzE1NTI2NzYuLjMxZjgxZmFlMDJmYjIw
MWQzMjE4YmIwZmI0YzUyZDIyMWY0Y2Q2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N5bWJvbEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1MCw2ICs0NTAsOCBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJl
ZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7CiAgICAg
dHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gT2Zm
c2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVudHJ5Kj4g
TG9jYWxUb0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7CisgICAgdHlwZWRlZiBX
VEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9yPiBQcml2
YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwg
U3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYg
dm0pCkBAIC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIHN0ZDo6Zm9yd2Fy
ZDxFbnRyeT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZhdGVOYW1l
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2Ug
cHJpdmF0ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JSYW5n
ZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tWYWxp
ZGl0eSgpLgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVzKCkpOworICAgICAgICByZXR1
cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwg
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIHZvaWQgYWRk
UHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVSYXJlRGF0
YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRh
aW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoa2V5KTsK
KyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lkIHNldChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRyeSYmIGVu
dHJ5KQogICAgIHsKQEAgLTcyOSwxOCArNzQ5LDIxIEBAIHByaXZhdGU6CiAgICAgU2NvcGVPZmZz
ZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJlbnRKU0xv
Y2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RFdmFsIDog
MTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1mdW5jdGlv
biBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBTY29wZVR5
cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAgICAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1hcCBtX3VuaXF1
ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJpYWJsZU1h
cDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAgICAgICAg
IFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQcml2YXRlTmFt
ZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1f
dXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNhbFNjb3Bl
IDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25lZCBtX3Njb3Bl
VHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJvbFRhYmxl
UmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVkQXJndW1lbnRz
VGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCBjZTUzMjlhOGY4N2E2MjE4ODk3NjhjOWQ2ZTdjMjk5ZTQxMTgx
ZDgyLi5jZWE2NDgxOTY2NWI4YTk0NDg3NjBjMmE4NzM1YmY5MjkwZjA5Yjk5IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDIwLTA1LTI4ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRzIHVwb24gdGhl
IGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9mIHByaXZhdGUK
KyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9j
bGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25z
LW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xh
c3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanM6CisgICAgICAgICogc3RyZXNz
L2dldC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mvb3B0aW9uYWwt
Y2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
cHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA1LTI3ICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGhhc093blByb3BlcnR5IGluc2lkZSBzdHJ1
Y3R1cmUgcHJvcGVydHkgZm9yLWluIGxvb3Agc2hvdWxkIHVzZSBhbiBvcGNvZGUgbGlrZSBoYXNf
c3RydWN0dXJlX3Byb3BlcnR5IGJ1dCBmb3IgaGFzT3duUHJvcGVydHkKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODhhMTE2M2UxNjdlZDBkNmM1ZjY3NjU2ZDAxYjM0ZDg4Y2I3NGYyZgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCkBA
IC0wLDAgKzEsMTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7
Cit9CisKK2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2QoKSB7Cisg
ICAgICAgIHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cith
c3NlcnQoYy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJhNGY0MzU0
Zjg5N2YxMTM3NDA4NzEyNjA0NmM2ZjFkZmQzZTdlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpAQCAtMCww
ICsxLDE4IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7
Cit9CisKK2NsYXNzIEMgeworICAgICNmID0gMzsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5t
ZXRob2QoKSwgMyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjUzZjZiMjMxMDdk
ZGFhMmI0NWJjM2YwNThlYWJmMTFjZjAxOTNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzCkBAIC0wLDAg
KzEsNDggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIp
CisKK2xldCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwg
bWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcg
RXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMg
JHtleHByfWApOworICB9LCB7CisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwg
KGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1
cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOwor
ICB9Cit9KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZp
Y2FsbHkgc28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0aGUgY2xh
c3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFn
ZS4KK2xldCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2RzCisgIGNvbnN0
cnVjdG9yKCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgyMDApLm1h
cCgoXywgaSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAgfQorfSlg
KTsKKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJh
c2UgeworICAjaSA9IChPYmplY3QuZnJlZXplKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNz
ZXJ0KE9iamVjdC5pc0Zyb3plbih0aGlzKSwgIk9iamVjdC5pc0Zyb3plbih0aGlzKSIpLCB0aGlz
LiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlz
LiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0
ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09
IDE1MCk7CisgIGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7Cisg
IGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVz
dCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1mcmVlemUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1mcmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQyY2MwZmY5MmQ2YmFjOWM4NGQ5MDY5NDM0ZjNi
NzdkN2RmNWIyMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLWZyZWV6ZS5qcwpAQCAtMCwwICsxLDQzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2ln
bigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHBy
ID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwg
ImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMo
YSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9
PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBF
eHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBj
b25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVG
aWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0
LmZyZWV6ZSh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNGcm96ZW4o
dGhpcyksICJPYmplY3QuaXNGcm96ZW4odGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgp
IHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVu
Y3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4
dGVuc2lvbnM7CisgIGMueCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7Cisg
IGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVz
dCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MWY3MThkOTc0MjcwYWM4YTE5ZTVmN2Jm
MDUyMDBkZWI5Mzc2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwg
ZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVu
Z3RoLCBlLmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ld
LCAiYVsiICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtp
XSk7Cit9CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBn
ZXQ6IGZ1bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9w
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAg
ICAgICB9KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAg
ICNmID0gMzsKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0K
K30KKworbGV0IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIs
IDMsICJFeHBlY3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChh
cnIsIFsnbWV0aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLW91dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDg2MjE2MDFkNWRlMzRhNDI4MzQ2
ZDUxY2NmODIyZmJmNTYwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3Nl
cnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitsZXQga2xhc3NTb3VyY2Ug
PSBgCit2YXIgQyA9IGNsYXNzIHsKKyAgICBhc3NlcnRPdXRPZkxpbmVWYWx1ZSgpIHsKKyAgICAg
ICAgYXNzZXJ0KHRoaXMuI2YyMDAsICJmb28iKTsKKyAgICB9CitgOworCisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMjAwOyBpKyspIHsKKyAgICBrbGFzc1NvdXJjZSArPSAiICAgICNmIiArIGkgKyAi
O1xuIjsKK30KKwora2xhc3NTb3VyY2UgKz0gIiAgICAjZjIwMCA9IFwiZm9vXCI7XG59IjsKKwor
ZXZhbChrbGFzc1NvdXJjZSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAg
bGV0IGMgPSBuZXcgQygpOworICAgIGMuYXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKTsKK30KKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRl
bnNpb25zLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZGI4YjE2
YWUwZDVjYjdmM2Y1NTg1MjdlNDAwZWI1MjJjMWIzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9m
LWxpbmUuanMKQEAgLTAsMCArMSw1MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0
aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkK
KyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8g
YmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVzc2Fn
ZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtleHBy
fWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEg
JiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsK
KworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkgc28g
dGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8gc3Rv
cmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xldCBC
YXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9yKCkg
eworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywgaSkg
PT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKworY2xh
c3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAj
aSA9IChPYmplY3QucHJldmVudEV4dGVuc2lvbnModGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChh
c3NlcnQuZmFsc2UoT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5pc0V4dGVuc2li
bGUodGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0K
KyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxl
dCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGFzc2VydC5l
cXVhbHMoYy54MTUwID09PSAxNTApOworICBjLngxNTAgPSAwLjE7CisgIGFzc2VydC5lcXVhbHMo
Yy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsK
K30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQzNjA5NzI3ODE0ZmM2MDVlMTA0YzY2NGQ2ZTNlNjBlMmQ0YzVjMzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50
LWV4dGVuc2lvbnMuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisg
IGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBm
YWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHBy
In0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwg
bWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMg
JHtleHByfWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEg
PT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47
CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9
Cit9KTsKKworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMueCA9IDE7
CisgIH0KK30KKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRl
bmRzIEJhc2UgeworICAjaSA9IChPYmplY3QucHJldmVudEV4dGVuc2lvbnModGhpcyksIDQyKTsK
KyAgI2Fzc2VydCA9IChhc3NlcnQuZmFsc2UoT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSwgIk9i
amVjdC5pc0V4dGVuc2libGUodGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0
dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24g
dGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lv
bnM7CisgIGMueCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0
KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyAr
K2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1zZWFsLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjFiMzBlNjJlMjgzOWFk
NDc1MjMxZjM3Y2E0ZGZjNTExNjEwZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDUy
IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCits
ZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3Nh
Z2UgPSAiIikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9y
KGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhw
cn1gKTsKKyAgfSwgeworICBmYWxzZShleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhw
ciA9PSB0cnVlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwg
ImV4cHIifSB0byBiZSBmYWxzZSwgYnV0IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxzKGEs
IGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0g
YSAmJiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhw
ZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBjbGFzcyBp
cyBkZWNsYXJlZCBpbiBldmFsIHNwZWNpZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQgZW5vdWdo
CisvLyBwcm9wZXJ0aWVzIHRvIHRoZSBjbGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxkcyBpbiBv
dXQtb2YtbGluZSBwcm9wZXJ0eSBzdG9yYWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xhc3MgQmFz
ZSB7CisgIC8vIE1ldGhvZHMKKyAgY29uc3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5lIHByb3Bl
cnRpZXMKKyAgICAke0FycmF5KDIwMCkubWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9ID0gJHtp
fTtcbmApLmpvaW4oIiIpfQorICB9Cit9KWApOworCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclBy
ZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5zZWFsKHRoaXMp
LCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc1NlYWxlZCh0aGlzKSwgIk9iamVj
dC5pc1NlYWxlZCh0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhp
cy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkp
IHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAg
YXNzZXJ0LmVxdWFscyhjLngxNTAgPT09IDE1MCk7CisgIGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0
LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0
KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgy
KTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLmpzIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODNlN2FiMzVk
N2MxNGE2Yzc2OTEyNjI2Y2ZkMTI4MTdjNWEwYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcwpAQCAtMCwwICsxLDQzIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNz
ZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAi
IikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsK
KyAgfSwgeworICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYm
IGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisK
K2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9
CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNl
IHsKKyAgI2kgPSAoT2JqZWN0LnNlYWwodGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQo
T2JqZWN0LmlzU2VhbGVkKHRoaXMpLCAiT2JqZWN0LmlzU2VhbGVkKHRoaXMpIiksIHRoaXMuI2kg
KyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kg
PSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmll
bGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAwLjE7CisgIGFzc2VydC5lcXVhbHMo
Yy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsK
K30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc4ODA1N2Ix
YmY0OTU1MGEwZThmM2Q5OGE5NDFhODM3Y2YxMWMzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMKQEAgLTAsMCArMSwxNSBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIiwgIi0tdXNl
UHVibGljQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7Cisg
ICAgaWYgKCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2xldCBp
bnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihpKSA9PiBpLiNiIik7CisKKyAgI2IgPSB7
fTsKK307CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fzc2VydChpbnN0LmEoaW5zdCkueCA9PSAx
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFu
Y2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCmlu
ZGV4IGU1MTYyOTlhNzkyYzYzODRiODQyYzY5N2Y0MWZjZWQ3ZjVjZmZmY2YuLjUwNjlhN2RhNWEx
NTVkY2MwNjA0ZTQ2MzJiOTBlODMwOTM5ZmU4MzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAtMSwxMSArMSwxNSBAQAotLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUiKQorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVs
ZHM9dHJ1ZSIpCiAKIGNsYXNzIEEgewogICAgIGEgPSAwOwogICAgIGIgPSAxOworICAgICNjID0g
MDsKKyAgICAjZCA9IDE7CiAgICAgZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07CisgICAg
I2YgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDE7IH07CiAgICAgWyJnIl0gPSAwOwogICAgIGggPSBl
dmFsKCJ0cnVlIik7CisgICAgI2kgPSBldmFsKCJmYWxzZSIpOwogfQogCiBmb3IgKHZhciBpID0g
MDsgaSA8IDEwMDAwOyBpKyspCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0
ZS1maWVsZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxNjMzNjJmYWE2M2U0MDU2MjVkMWZlY2VjZTk5YmNkMjY2YjllYTkKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDI5
IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5O
b0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gR2V0QnlWYWxEaXJlY3Qg
c2hvdWxkIHRocm93IHdoZW4gdGhlIHJlY2VpdmVyIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVlc3Rl
ZCBwcml2YXRlIHByb3BlcnR5CitsZXQgaSwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAg
ICN4ID0gaTsKKyAgICBjb25zdHJ1Y3RvcigpIHsgaWYgKGkgPT09IDMwKSByZXR1cm4geyBbU3lt
Ym9sLnRvU3RyaW5nVGFnXTogIndpdGhvdXQgI3gifTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyBy
ZXR1cm4gb2JqLiN4OyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4g
IndpdGggI3giOyB9Cit9CisKK3RyeSB7CisgICAgZm9yIChpID0gMDsgaSA8IDUwOyArK2kpIHsK
KyAgICAgICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChjKTsKKyAg
ICAgICAgaWYgKHJlc3VsdCAhPT0gaSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhw
ZWN0ZWQgQy54KCR7Y30pIHRvIGJlICR7aX0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9
Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBl
LmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9
CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3Is
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzIGIvSlNUZXN0cy9zdHJl
c3Mvb3B0aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0
MmNmMTJiNjRhMTY0MzAyZWQyN2Y1YjkxZTA3NTQ0NzFlMTE3ZTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanMK
QEAgLTAsMCArMSw5MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IChhLCBlKSA9PiB7
CisgICAgICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKworICAgIHRocm93czog
KGV4cGVjdGVkRXhjZXB0aW9uLCBmdW5jdG9yLCBtKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAg
ICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXhjZXB0aW9uKSkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoKCkgPT4geworICAgIGNs
YXNzIEMgeworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHN0YXRpYyBh
Y2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8/LiNmaWVsZDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7
IGkrKykgeworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCAndGVzdCcpOwor
ICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKHVuZGVmaW5lZCksIHVuZGVmaW5lZCk7
CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MobnVsbCksIHVuZGVmaW5lZCk7Cisg
ICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgQy5h
Y2Nlc3Moe30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxkIHNob3VsZCB0
aHJvdyIpOworfSkoKTsKKworLy8gQ2hhaW5lZCBjYXNlCisoKCkgPT4geworICAgIGNsYXNzIEMg
eworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHN0YXRpYyBjaGFpbmVk
QWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvLnByaXZhdGU/LiNmaWVsZDsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgbGV0IG8gPSB7cHJpdmF0ZTog
Y307CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2VzcyhvKSwgJ3Rlc3QnKTsKKyAgICAgICAgYXNzZXJ0
LnNhbWVWYWx1ZShDLmNoYWluZWRBY2Nlc3Moe30pLCB1bmRlZmluZWQpOworICAgICAgICBhc3Nl
cnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2Vzcyh7cHJpdmF0ZTogbnVsbH0pLCB1bmRlZmluZWQp
OworICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAg
IG8ucHJpdmF0ZSA9IHt9OworICAgICAgICBDLmNoYWluZWRBY2Nlc3Mobyk7CisgICAgfSwgIk9i
amVjdCB3aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRocm93Iik7Cit9KSgpOworCisoKCkg
PT4geworICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisKKyAgICAgICAgc2V0RmllbGQo
dikgeworICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisgICAg
ICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8uI2ZpZWxkPy5wcm9w
ZXJ0eTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBjLnNldEZpZWxkKHtwcm9wZXJ0
eTogJ3Rlc3QnfSk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksICd0ZXN0
Jyk7CisKKyAgICAgICAgYy5zZXRGaWVsZCh1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQuc2Ft
ZVZhbHVlKEMuYWNjZXNzKGMpLCB1bmRlZmluZWQpOworCisgICAgICAgIGMuc2V0RmllbGQobnVs
bCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksIHVuZGVmaW5lZCk7Cisg
ICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgQy5h
Y2Nlc3Moe30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxkIHNob3VsZCB0
aHJvdyIpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
LWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkOGUyMTky
M2YyMDI0ZDAyMjAyZjNhMmUxNmJiNDllMWY5NWIzZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMKQEAg
LTAsMCArMSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRz
PTEiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAg
dGhyb3dzOiAoZXhwZWN0ZWRFcnJvciwgZnVuY3RvcikgPT4geworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgZnVuY3RvcigpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlm
ICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvci5uYW1lICsgIiBi
dXQgdGhyb3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgW3t9LiN4
XSA9IDE7IAorICAgICAgICAjeCA9ICJmb28iOworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzEzNTQ2
ODY5MjdmMzZjZWQ5YTk5YWVlNzQ0OTFkOGY3ZjIzMzc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpAQCAtMCwwICsxLDM0
IEBACisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKSAtLSBDdXJyZW50bHksIGVhZ2VyIEpJVCBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRl
IGZpZWxkIGFjY2Vzcy4KKy8vQCBydW5EZWZhdWx0KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0x
IikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9M
TEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIFByaXZhdGVGaWVsZCAiQ3Jl
YXRlIiBhY2Nlc3Mgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJp
dmF0ZU5hbWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICBj
b25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGkgPCAyOSA/IHRoaXMgOiBjOworICAgIH0K
K30KKworY2xhc3MgQ0MgZXh0ZW5kcyBDIHsKKyAgICAjeCA9IGkrKzsKKyAgICB4KCkgeyByZXR1
cm4gdGhpcy4jeDsgfQorfQorCitjID0gbmV3IENDOwordHJ5IHsKKyAgICBmb3IgKGxldCBqID0g
MTsgaiA8IDUwOyArK2opIHsKKyAgICAgICAgbGV0IHggPSBuZXcgQ0M7CisgICAgICAgIGlmICh4
LngoKSAhPT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgeC54KCkg
dG8gYmUgJHtqfSwgYnV0IGZvdW5kICR7eC54KCl9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgewor
ICAgIHRocmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0g
VHlwZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQor
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9u
IHdhcyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGly
ZWN0LXB1dHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRw
cml2YXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzODY1M2RkMjIyMTdkMWQxNmU3MDY3ZDhhZDI0NTk4YzQ1
OGNjODgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVj
dC1wdXRwcml2YXRlLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpIC0tIEN1cnJlbnRseSwgZWFnZXIgSklU
IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgZmllbGQgYWNjZXNzLgorLy9AIHJ1bkRlZmF1
bHQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz0xIikKKworLy8gUHJpdmF0ZUZpZWxkICJQdXQiIGFjY2VzcyBzaG91bGQgdGhyb3cgaWYgd3Jp
dGluZyB0byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcg
PSBmYWxzZTsKK2NsYXNzIEMgeworICAgICN4OworICAgIGNvbnN0cnVjdG9yKCkgeyByZXR1cm4g
aSA8IDMwID8gdGhpcyA6IHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4IiB9OyB9
CisgICAgc3RhdGljIHgob2JqKSB7IHJldHVybiBvYmouI3ggPSBpKys7IH0KKyAgICBnZXQgW1N5
bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCIgfQorfQorCit0cnkgeworICAg
IGZvciAobGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgb2JqID0gbmV3IEM7
CisgICAgICAgIGxldCByZXN1bHQgPSBDLngob2JqKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0g
aikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54KCR7b2JqfSkgdG8g
YmUgJHtqfSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0Y2ggKGUpIHsKKyAg
ICB0aHJldyA9IHRydWU7CisgICAgLy8gcnZhbCBvZiBBc3NpZ25tZW50RXhwcmVzc2lvbiBpcyBl
dmFsdWF0ZWQgYmVmb3JlIFByaXZhdGVGaWVsZEZpbmQoI3gsIGxyZWYpIGlzIHBlcmZvcm1lZCwK
KyAgICAvLyB0aHVzIGBpYCBoYXMgYWxyZWFkeSBiZWVuIGluY3JlbWVudGVkLgorICAgIGlmIChp
ICE9PSAzMSB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cg
ZTsKKyAgICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCBUeXBlRXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
CmluZGV4IDdiZWQwNjQ0YWIyNThkNWQxMDQ4NTEwOGYyYzU4ZmM2ODgyNDkxMzMuLjgzYmY2N2U5
MmNhMjc2NDI0ZmMwOWFlZDM1MDMwN2UwMTZlNDQxZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTYs
NiArNiw3IEBAIGZsYWdzOgogICBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDogdXNlSW50bFJlbGF0
aXZlVGltZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHVi
bGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxkcworICBjbGFzcy1maWVsZHMtcHJpdmF0ZTogdXNlUHJp
dmF0ZUNsYXNzRmllbGRzCiBza2lwOgogICBmZWF0dXJlczoKICAgICAtIFNoYXJlZEFycmF5QnVm
ZmVyCkBAIC0xNCw3ICsxNSw2IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAg
LSBjbGFzcy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAg
LSBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1w
cml2YXRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400495</attachid>
            <date>2020-05-28 12:38:13 -0700</date>
            <delta_ts>2020-05-29 07:53:15 -0700</delta_ts>
            <desc>Patch v21</desc>
            <filename>bug-206431-20200528153812.patch</filename>
            <type>text/plain</type>
            <size>198304</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
YzIyYmJiNzZjZDYwZTUzYzY5NDZkYzhiMGM2NzRkNmVlYThkNTU2Li5lMmE1YmYzMjVkMWQyODQz
MDc4NmJjYjhmM2M0Y2JkMmQxMzI2MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjkgQEAKKzIwMjAtMDUtMjggIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X3ByaXZhdGVfbmFtZSksIG9uZSBjaGFuZ2VkIG9wY29k
ZSAob3BfcHV0X2J5X3ZhbF9kaXJlY3QpLgorICAgICAgICAgICAgLSBBIG1ldGhvZCBmb3IgY3Jl
YXRpbmcgU3ltYm9sIG9iamVjdHMgd2l0aCBhIG51bGwgUHJpdmF0ZVN5bWJvbEltcGwgaXMgZXhw
b3NlZCBhcyBhCisgICAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgKEBjcmVhdGVQcml2YXRl
U3ltYm9sKS4KKyAgICAgICAgICAgIC0gTnVsbCBQcml2YXRlIFN5bWJvbHMgYXJlIHN0b3JlZCBi
eSBuYW1lIChub3QgYSB2YWxpZCBpZGVudGlmaWVyKSBpbiBhIEpTU2NvcGUsIGFuZAorICAgICAg
ICAgICAgICBhcmUgbG9hZGVkIGZyb20gdGhlIG91dGVyIHNjb3BlIHdoZW5ldmVyIHRoZXkgYXJl
IHVzZWQgYnkgdGhlIG1vZGlmaWVkIG9wY29kZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgdG8g
b3BfcHV0X2J5X3ZhbF9kaXJlY3QgaW5jbHVkZSBhIG5ldyBieXRlY29kZSBvcGVyYW5kIChQdXRC
eVZhbEZsYWdzKSB3aGljaCBhcmUKKyAgICAgICAgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IG92ZXJ3cml0aW5nIG9yIGRlZmluaW5nIGEgbmV3IHByaXZhdGUgZmllbGQuIFNwZWNpZmljYWxs
eSwgd2hlbiBpdAorICAgICAgICBjb21lcyB0byBwcml2YXRlIGZpZWxkIGFjY2Vzc2VzLCBpdCdz
IG5lY2Vzc2FyeSB0byB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcgYSBmaWVsZAor
ICAgICAgICB3aGljaCBkb2VzIG5vdCBleGlzdCwgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGRlZmlu
ZSBhIHByaXZhdGUgZmllbGQgd2hpY2ggaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBkZWZpbmVk
LgorCisgICAgICAgIER1cmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIGNsYXNzIGV4cHJlc3Npb24s
IGJlZm9yZSB0aGUgY2xhc3MgZWxlbWVudCBsaXN0IGlzIGV2YWx1YXRlZCAoaW4gY2FzZQorICAg
ICAgICBhbnkgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgZXhwcmVzc2lvbnMgcmVmZXIgdG8gYSBu
ZXcgcHJpdmF0ZSBmaWVsZCksIGEgbmV3IFByaXZhdGVTeW1ib2wgaXMKKyAgICAgICAgY3JlYXRl
ZCBmb3IgZWFjaCBpbmRpdmlkdWFsIHByaXZhdGUgZmllbGQgbmFtZSwgYW5kIHN0b3JlZCBpbiB0
aGUgY2xhc3MgbGV4aWNhbCBzY29wZS4KKworICAgICAgICBQcml2YXRlIGZpZWxkIG5hbWVzIGFy
ZSBsb2FkZWQgZnJvbSBzY29wZSBiZWZvcmUgdGhlaXIgdXNlLiBUaGlzIHByZXZlbnRzIG11bHRp
cGxlIGV2YWx1YXRpb25zCisgICAgICAgIG9mIHRoZSBzYW1lIGNsYXNzIHNvdXJjZSBmcm9tIGFj
Y2Vzc2luZyBlYWNoIG90aGVyJ3MgcHJpdmF0ZSBmaWVsZHMsIGJlY2F1c2UgdGhlIHZhbHVlcyBv
ZiB0aGUKKyAgICAgICAgc3ltYm9scyBsb2FkZWQgZnJvbSB0aGUgY2xhc3Mgc2NvcGUgd291bGQg
YmUgZGlzdGluY3QuIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHByb3Bvc2FsIHRleHQsCisgICAg
ICAgIGFuZCBpcyB0aGUga2V5IHJlYXNvbiB3aHkgd2UgdXNlIEJ5VmFsIGxvb2t1cHMgcmF0aGVy
IHRoYW4gQnlJZCBsb29rdXBzLgorCisgICAgICAgIFRvIGlsbHVzdHJhdGUsIHR5cGljYWwgcHJp
dmF0ZSBmaWVsZCBhY2Nlc3Mgd2lsbCBsb29rIGxpa2U6CisKKyAgICAgICAgPEZpZWxkIFJlYWRz
PgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAi
I3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJv
bD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFBy
b3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBnZXRfcHJpdmF0ZV9uYW1l
ICAgPHZhbHVlPT4sIDxyZWNlaXZlciAtLS0gcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4KKwor
ICAgICAgICA8RmllbGQgV3JpdGVzPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3Bl
PT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRf
ZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhy
b3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAg
ICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3lt
Ym9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWU+CisKKyAgICAgICAgPEZpZWxkIERl
ZmluaXRpb24+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRT
Y29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAg
ICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8
R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92
YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+
LCA8UHV0QnlWYWxQcml2YXRlTmFtZXxQdXRCeVZhbFRocm93SWZFeGlzdHM+CisKKyAgICAgICAg
VGhlIGZlYXR1cmUgaXMgY3VycmVudGx5IGhpZGRlbiBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBK
U0M6Ok9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxG
bGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
UHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNEaXJlY3Qg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjplY21hTW9kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFjY2VzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkUHV0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpQdXRCeVZhbEZsYWdzKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJp
YWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlBy
ZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRz
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAg
ICAgKEpTQzo6ZGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9p
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRf
YnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6YXBwcm9w
cmlhdGVHZW5lcmljUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVP
cHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVQdXRCeUlE
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5o
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjppc1ByaXZhdGVMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChK
U0M6OkxleGVyPExDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
VUNoYXI+OjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJU
eXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjxUPjo6
bGV4V2l0aG91dENsZWFyaW5nTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAg
ICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlm
eURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpzaG91bGRDcmVhdGVMZXhpY2FsU2Nv
cGVGb3JDbGFzcyk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4
cHJlc3Npb25Ob2RlOjppc1ByaXZhdGVMb2NhdGlvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkJh
c2VEb3ROb2RlOjpiYXNlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmlkZW50
aWZpZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6dHlwZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppc1ByaXZhdGVOYW1lIGNvbnN0KToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dCk6CisgICAgICAgICog
cGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6aXNQcml2YXRlTmFtZVNjb3Bl
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzUHJpdmF0ZU5hbWVTY29wZSk6Cisg
ICAgICAgIChKU0M6OlNjb3BlOjpoYXNQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlNjb3Bl
Ojpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhh
c1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U2Nv
cGU6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRl
TmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6ZmluZFByaXZhdGVOYW1lU2NvcGUpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI6OnByaXZhdGVOYW1lU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyOjptYXRjaEFuZFVwZGF0ZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyVG9rZW5zLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpvcGVy
YXRvcj0pOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKToKKyAgICAg
ICAgKEpTQzo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50KToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAg
ICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZU5hbWUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OnNldElzUHJpdmF0ZU5hbWUp
OgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpQcml2YXRlTmFtZUVudHJ5KToKKyAg
ICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNVc2VkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNEZWNsYXJlZCBjb25zdCk6CisgICAgICAgIChKU0M6OlBy
aXZhdGVOYW1lRW50cnk6OnNldElzVXNlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50
cnk6OnNldElzRGVjbGFyZWQpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpiaXRz
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6b3BlcmF0b3I9PSBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlZhcmlhYmxlRW52aXJvbm1l
bnQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpzaXplIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFwU2l6ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnVzZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6cHJpdmF0ZU5hbWVzU2l6ZSBjb25zdCk6CisgICAgICAg
IChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVByaXZhdGVOYW1lc1RvIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNU
byBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhOjpS
YXJlRGF0YSk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmdldE9yQWRkUHJp
dmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWNoZWRPcHRpb25hbDo6ZGVjb2RlQXNQdHIgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6
OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6ZW5jb2RlKToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGVSYXJlRGF0YTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkU3ltYm9sVGFibGU6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxl
OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVy
czo6Q29tbW9uSWRlbnRpZmllcnMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6
OmNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVk
ZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRQ
cml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0UHJpdmF0ZUZpZWxkKToK
KyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRlZmluZVByaXZhdGVGaWVsZCk6CisgICAgICAgICog
cnVudGltZS9KU1Njb3BlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNTY29wZTo6Y29sbGVjdENsb3N1
cmVWYXJpYWJsZXNVbmRlclREWik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2xU
YWJsZTo6Y2xvbmVTY29wZVBhcnQpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoK
KwogMjAyMC0wNS0yNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBmb3Itb2Ygc2hvdWxkIGNoZWNrIHRoZSBpdGVyYWJsZSBpcyBhIEpTQXJyYXkgZm9y
IEZhc3RBcnJheSBpbiBERkcgaXRlcmF0b3Jfb3BlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDkxYTZlM2ExYjA0MGUwYWVmZWNkOTM1MzI3ZmRhZDZlOTIxMzM5ZDQuLmE4
ZjZkYzlmMmM3MjAwZjhjYWM0YTJkMWQyNGE1ZmVkNmQ1ZThhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTU0MCw2ICs1NDAsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGJ5dGVjb2RlL09wZXJhbmRzLmgKICAgICBi
eXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oCiAgICAgYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmgK
KyAgICBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKICAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oCiAgICAgYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKICAgICBieXRlY29kZS9TdXBlclNhbXBs
ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiM2U4MjBlYWYzODBjZGM3Y2M0
ZTQwYThjY2YzMWZkM2RhMTViZjRkLi4xZTJlNDExODY3YmY1OWVlMWQ2ZTk1M2ZhNjU0OGVlNmE1
MjdkNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1MCw2ICsxMjUwLDcg
QEAKIAkJODY3MDRCODcxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgwMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJySklULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjgxMTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4
MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4Njc2QzZFODIzNDY0NjdFMDBGQUFGRjMgLyog
UHV0QnlWYWxGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MTZCMDE1NUYy
ODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2YXRlTmFt
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
ODkyMUMyMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4OTIxQzExRjlDMENCNzAwMTE1OUY2IC8qIEpT
QmlnSW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJODY5NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY5NzZFNUExRkEzNzU4QTAw
RTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC00MTE0LDYgKzQxMTUsOCBAQAogCQk4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBZYXJyUGFyc2VyLmg7IHBhdGggPSB5YXJyL1lhcnJQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCODIxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmNw
cDsgcGF0aCA9IHlhcnIvWWFyclBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4NjcwNEI4MzEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBhdHRlcm4uaDsgcGF0aCA9IHlhcnIvWWFyclBh
dHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTYyMzQ2NDUwQjAw
RkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0QnlWYWxGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXRCeVZhbEZsYWdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQy
IC8qIERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgw
RjRDMTQzNTNCMjEwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRo
ID0gZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg0MDAsNiArODQwMyw4IEBACiAJCQkJMEY5MzMyOUExNENBN0RDMTAwODVG
M0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCAqLywKIAkJCQkwRjkzQjRBNzE4QjkyQzREMDAxNzhBM0Yg
LyogUHV0QnlJZFZhcmlhbnQuY3BwICovLAogCQkJCTBGOTNCNEE4MThCOTJDNEQwMDE3OEEzRiAv
KiBQdXRCeUlkVmFyaWFudC5oICovLAorCQkJCTg2NzZDNkU3MjM0NjQ1QjMwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmNwcCAqLywKKwkJCQk4Njc2QzZFNjIzNDY0NTBCMDBGQUFGRjMgLyogUHV0
QnlWYWxGbGFncy5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5k
LmggKi8sCiAJCQkJMEY0NEE3QUQyMEJGNjg1RjAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMu
Y3BwICovLAogCQkJCTBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2Vz
LmggKi8sCkBAIC0xMDE0OCw2ICsxMDE1Myw3IEBACiAJCQkJMEYxNUNEMjMxQkE1Rjk4NjAwMzFG
RkQzIC8qIFB1dEJ5SWRGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzMyQTQxNENBN0RE
OTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTNCNEFB
MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRleE1vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGOUZDOEM1MTRFMUI2MDQwMEQ1MkFFMCAvKiBQdXRLaW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODQ2MzBFNkRFNkIxMDA0Nzc1QTQgLyogUHV0UHJvcGVy
dHlTbG90LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAy
ZTk1ZmI1ZjhkMzhiMWUyOWM1MTNiNmZjMGM4MjViZWQ1ZDBiMjQyLi42Y2FlNGQ0YmUwODFmYzJm
NDUwZDk1MWFkZWVhNzcxMmMwMWJiZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBA
IC0yNjgsNiArMjY4LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNzQ2FzZS5jcHAKIGJ5dGVj
b2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCiBieXRlY29k
ZS9QdXRCeUlkVmFyaWFudC5jcHAKK2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCiBieXRlY29k
ZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCmluZGV4IDJjZjYxOWQyOGRlMzY1NTFjNDBiZTI0MmZiNDk0N2Zm
YThiNDJhZTMuLjc0NTQ4OGJlZGEwNDFlYTc5YTkzYzE1ZjQ3ZThmNGM0MjYzOTlhNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKQEAgLTE2OSw3
ICsxNjksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyh3ZWJBc3NlbWJseUNvbXBpbGVT
dHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKHdlYkFzc2VtYmx5SW5zdGFudGlhdGVTdHJl
YW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKGluc3RhbmNlRmllbGRJbml0aWFsaXplcikgXAot
ICAgIG1hY3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIAorICAgIG1hY3JvKGhhc093blByb3Bl
cnR5RnVuY3Rpb24pIFwKKyAgICBtYWNybyhjcmVhdGVQcml2YXRlU3ltYm9sKQogCiBuYW1lc3Bh
Y2UgU3ltYm9scyB7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUyhuYW1l
KSBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBu
YW1lIyNTeW1ib2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYgppbmRleCAwYmQ2YTA3ZmZiMGUzMTc5NWYxNDZiYTQ4NTQxYWJjNWU1OGUyYmU4Li5k
M2U2NzhiNTJkMzNjM2VkNjljZmNmY2FmODMzNDdmZmRkMjVhMThmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTQ5LDYgKzQ5LDcgQEAg
dHlwZXMgWwogICAgIDpQcm9maWxlVHlwZUJ5dGVjb2RlRmxhZywKICAgICA6UHJvcGVydHlPZmZz
ZXQsCiAgICAgOlB1dEJ5SWRGbGFncywKKyAgICA6UHV0QnlWYWxGbGFncywKICAgICA6UmVzb2x2
ZVR5cGUsCiAgICAgOlN0cnVjdHVyZSwKICAgICA6U3RydWN0dXJlSUQsCkBAIC01NTAsNiArNTUx
LDE5IEBAIG9wIDpnZXRfYnlfdmFsLAogICAgICAgICBzZWVuSWRlbnRpZmllcnM6IEdldEJ5VmFs
SGlzdG9yeSwKICAgICB9CiAKK29wIDpnZXRfcHJpdmF0ZV9uYW1lLAorICAgIGFyZ3M6IHsKKyAg
ICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3Rl
ciwKKyAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKKyAgICB9LAorICAgIG1ldGFk
YXRhOiB7CisgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKKyAgICAgICAgc3RydWN0dXJl
SUQ6IFN0cnVjdHVyZUlELAorICAgICAgICBvZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBwcm9w
ZXJ0eTogV3JpdGVCYXJyaWVyW0pTQ2VsbF0sCisgICAgfQorCiBvcCA6cHV0X2J5X3ZhbCwKICAg
ICBhcmdzOiB7CiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3RlciwKQEAgLTU3NSw3ICs1ODks
NyBAQCBvcCA6cHV0X2J5X3ZhbF9kaXJlY3QsCiAgICAgICAgIGJhc2U6IFZpcnR1YWxSZWdpc3Rl
ciwKICAgICAgICAgcHJvcGVydHk6IFZpcnR1YWxSZWdpc3RlciwKICAgICAgICAgdmFsdWU6IFZp
cnR1YWxSZWdpc3RlciwKLSAgICAgICAgZWNtYU1vZGU6IEVDTUFNb2RlLAorICAgICAgICBmbGFn
czogUHV0QnlWYWxGbGFncywKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGFycmF5
UHJvZmlsZTogQXJyYXlQcm9maWxlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5jcHAKaW5kZXggYTMxOTBmMmRkNWQzYjZkMmZkYmNlZjhlMDIw
ZmViM2NmYzc1ODUwNC4uYjBmMmU4MDJkNzI3YzdmOGUzMjk0YzE1NWI5MWNiMmM4ZGJlOWU0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
Y3BwCkBAIC0yMTMsNiArMjEzLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlSW5kZXhJ
bXBsKFZpcnR1YWxSZWdpc3RlciBzY29wZVJlZ2lzdGVyLCBjb25zdCBJbnN0cnUKICAgICBVU0VT
KE9wRW51bWVyYXRvclN0cnVjdHVyZVBuYW1lLCBlbnVtZXJhdG9yLCBpbmRleCkKICAgICBVU0VT
KE9wRW51bWVyYXRvckdlbmVyaWNQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhP
cEdldEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKKyAgICBVU0VTKE9wR2V0UHJpdmF0ZU5hbWUsIGJh
c2UsIHByb3BlcnR5KQogICAgIFVTRVMoT3BJbkJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSkKICAgICBV
U0VTKE9wT3ZlcnJpZGVzSGFzSW5zdGFuY2UsIGNvbnN0cnVjdG9yLCBoYXNJbnN0YW5jZVZhbHVl
KQogICAgIFVTRVMoT3BJbnN0YW5jZW9mLCB2YWx1ZSwgcHJvdG90eXBlKQpAQCAtNDI4LDYgKzQy
OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZUluZGV4SW1wbCh1bnNpZ25lZCBudW1W
YXJzLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1CiAgICAgREVGUyhPcEluc3RhbmNlb2YsIGRz
dCkKICAgICBERUZTKE9wSW5zdGFuY2VvZkN1c3RvbSwgZHN0KQogICAgIERFRlMoT3BHZXRCeVZh
bCwgZHN0KQorICAgIERFRlMoT3BHZXRQcml2YXRlTmFtZSwgZHN0KQogICAgIERFRlMoT3BUeXBl
b2YsIGRzdCkKICAgICBERUZTKE9wSWRlbnRpdHlXaXRoUHJvZmlsZSwgc3JjRHN0KQogICAgIERF
RlMoT3BJc0VtcHR5LCBkc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDVhOTM4NDA3MzE2NjA3ZDJmMTZlZTZkNmYwN2MxNjQ1YmNjNTc4ZjUu
LjNkMGU1NzZiYmY0NmU5ZDNhNGNhZTZkZDBkMzFlNzcyNzdiMzkyMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xMjUxLDYgKzEyNTEsMTkg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgICAgICAg
ICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOwogICAgICAgICB9KTsKIAorICAgICAgICBtX21ldGFk
YXRhLT5mb3JFYWNoPE9wR2V0UHJpdmF0ZU5hbWU+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsKKyAg
ICAgICAgICAgIEpTQ2VsbCogcHJvcGVydHkgPSBtZXRhZGF0YS5tX3Byb3BlcnR5LmdldCgpOwor
ICAgICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX3N0cnVjdHVy
ZUlEOworCisgICAgICAgICAgICBpZiAoKCFwcm9wZXJ0eSB8fCB2bS5oZWFwLmlzTWFya2VkKHBy
b3BlcnR5KSkgJiYgKCFzdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3Ry
dWN0dXJlSURUYWJsZSgpLmdldChzdHJ1Y3R1cmVJRCkpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNs
ZWFyaW5nIExMSW50IHByaXZhdGUgcHJvcGVydHkgYWNjZXNzLiIpOworICAgICAgICAgICAgbWV0
YWRhdGEubV9zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9
IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3Byb3BlcnR5LmNsZWFyKCk7CisgICAgICAgIH0p
OworCiAgICAgICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8T3BQdXRCeUlkPihbJl0gKGF1dG8mIG1l
dGFkYXRhKSB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fb2xkU3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdTdHJ1Y3R1
cmVJRCA9IG1ldGFkYXRhLm1fbmV3U3RydWN0dXJlSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0ZpdHMuaAppbmRleCAwZDk1NzA5MjZhYjE0NzM3OGVjMzE3MjgzOGRiMjM1ODgyZGI3YmNk
Li4zOWZlZTBhNjY5YTI4MjY1ODVhMmE0OTIyYTM4MmJmNmI4YTBhYWUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9GaXRzLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJPcGNv
ZGVTaXplLmgiCiAjaW5jbHVkZSAiUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuaCIKICNpbmNsdWRl
ICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAi
UmVzdWx0VHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlT3JTY29wZURlcHRoLmgiCiAjaW5j
bHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCkBAIC0yNTYsNiArMjU3LDQ3IEBAIHN0cnVjdCBGaXRz
PFB1dEJ5SWRGbGFncywgc2l6ZT4gewogICAgICAgICByZXR1cm4gaXNEaXJlY3QgPyBQdXRCeUlk
RmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkgOiBQdXRCeUlkRmxhZ3M6OmNyZWF0ZShlY21h
TW9kZSk7CiAgICAgfQogfTsKKwordGVtcGxhdGU8T3Bjb2RlU2l6ZSBzaXplPgorc3RydWN0IEZp
dHM8UHV0QnlWYWxGbGFncywgc2l6ZT4geworICAgIHVzaW5nIFRhcmdldFR5cGUgPSB0eXBlbmFt
ZSBUeXBlQnlTaXplPHNpemU+Ojp1bnNpZ25lZFR5cGU7CisKKyAgICAvLyBQdXRCeVZhbEZsYWdz
IGlzIDIgYm9vbGVhbnMgYW5kIGEgMiBiaXQgZW51bSwgZW5jb2RlZCBhczoKKyAgICAvLyAgICAg
ICAgICBpc1N0cmljdAorICAgIC8vICAgICAgICAgICAgIHYKKyAgICAvLyAgICAgMDAwMHwwMHww
fDAgPCBpc0RpcmVjdAorICAgIC8vICAgICAgICAgICBeCisgICAgLy8gICAgUHJpdmF0ZUZpZWxk
QWNjZXNzS2luZCB7MCA9IE5vbmUsIDEgPSBQdXQsIDIgPSBDcmVhdGUgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgaW50IHNfaXNEaXJlY3RCaXQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
IHNfaXNTdHJpY3RCaXQgPSAyOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHNfcHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZE1hc2sgPSAxMjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmRTaGlmdCA9IDI7CisKKyAgICBzdGF0aWMgYm9vbCBjaGVjayhQdXRC
eVZhbEZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3Rh
dGljIFRhcmdldFR5cGUgY29udmVydChQdXRCeVZhbEZsYWdzIGZsYWdzKQorICAgIHsKKyAgICAg
ICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmlzRGlyZWN0KCkp
OworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MuZWNt
YU1vZGUoKS5pc1N0cmljdCgpKTsKKyAgICAgICAgYXV0byBwcml2YXRlRmllbGRBY2Nlc3NLaW5k
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpKTsK
KyAgICAgICAgcmV0dXJuIChwcml2YXRlRmllbGRBY2Nlc3NLaW5kIDw8IHNfcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZFNoaWZ0KSB8IChpc1N0cmljdCA8PCAxKSB8IGlzRGlyZWN0OworICAgIH0KKwor
ICAgIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNvbnZlcnQoVGFyZ2V0VHlwZSBncGkpCisgICAgewor
ICAgICAgICBhdXRvIGlzRGlyZWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc0RpcmVj
dEJpdCk7CisgICAgICAgIGF1dG8gaXNTdHJpY3QgPSBzdGF0aWNfY2FzdDxib29sPihncGkgJiBz
X2lzU3RyaWN0Qml0KTsKKyAgICAgICAgYXV0byBhY2Nlc3MgPSBzdGF0aWNfY2FzdDxQcml2YXRl
RmllbGRBY2Nlc3NLaW5kPigoZ3BpICYgc19wcml2YXRlRmllbGRBY2Nlc3NLaW5kTWFzaykgPj4g
c19wcml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQpOworICAgICAgICBhdXRvIGVjbWFNb2RlID0g
aXNTdHJpY3QgPyBFQ01BTW9kZTo6c3RyaWN0KCkgOiBFQ01BTW9kZTo6c2xvcHB5KCk7CisgICAg
ICAgIHJldHVybiBhY2Nlc3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSA/CisgICAg
ICAgICAgICBpc0RpcmVjdCA/IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSkg
OiBQdXRCeVZhbEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpIDoKKyAgICAgICAgICAgIGFjY2VzcyA9
PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpQdXQgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQ
cml2YXRlRmllbGQoZWNtYU1vZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0
ZUZpZWxkKGVjbWFNb2RlKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFLCBPcGNv
ZGVTaXplIHNpemU+CiBzdHJ1Y3QgRml0czxFLCBzaXplLCBzdGQ6OmVuYWJsZV9pZl90PHNpemVv
ZihFKSAhPSBzaXplICYmIHN0ZDo6aXNfZW51bTxFPjo6dmFsdWUsIHN0ZDo6dHJ1ZV90eXBlPj4g
OiBwdWJsaWMgRml0czxzdGQ6OnVuZGVybHlpbmdfdHlwZV90PEU+LCBzaXplPiB7CiAgICAgdXNp
bmcgQmFzZSA9IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAppbmRleCBl
NGRjOTVjYjBhMjY5OTUxNjZlMDY2ZjRlNWRiNWQ1N2U3NjhiMWQwLi4xYjA3MDBkZjY3NTVjMmM1
NjdmYjg1NzkxZTA2ZWVjYzQyZWEwZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICB2KGFwcGx5RnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGNh
bGxGdW5jdGlvbiwgbnVsbHB0cikgXAogICAgIHYoaGFzT3duUHJvcGVydHlGdW5jdGlvbiwgbnVs
bHB0cikgXAorICAgIHYoY3JlYXRlUHJpdmF0ZVN5bWJvbCwgbnVsbHB0cikgXAogCiAKICNkZWZp
bmUgREVDTEFSRV9MSU5LX1RJTUVfQ09OU1RBTlQobmFtZSwgY29kZSkgbmFtZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kOGU5MGZkMDdkMGQzNzEzMDIyZGRkODllOTY2NTYzYjA1ZjY0MGE5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxhZ3MuY3BwCkBA
IC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgorCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJp
bnRlci5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFB1dEJ5VmFsRmxhZ3Mg
ZmxhZ3MpCit7CisgICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7CisgICAgaWYgKGZsYWdzLmlz
RGlyZWN0KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkRpcmVjdCIpOworICAgIGlmIChm
bGFncy5pc1ByaXZhdGVGaWVsZFB1dCgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2
YXRlRmllbGQrUHV0Iik7CisgICAgaWYgKGZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCisgICAg
ICAgIG91dC5wcmludChjb21tYSwgIlByaXZhdGVGaWVsZCtBZGQiKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlWYWxGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42NWZmZDc5N2Y2NTg3ODc5YzBjMzIxNTljOTY1MDI4MjgyYTM5ZmNh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
VmFsRmxhZ3MuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJRFRhYmxlLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitlbnVtIGNsYXNzIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgOiB1aW50OF90IHsKKyAg
ICBOb25lLAorICAgIFB1dCwKKyAgICBDcmVhdGUsCit9OworCitjbGFzcyBQdXRCeVZhbEZsYWdz
IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlKEVD
TUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoZmFs
c2UsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICAvLyBBIGRpcmVjdCBwdXRfYnlfaWQgbWVhbnMg
dGhhdCB3ZSBzdG9yZSB0aGUgcHJvcGVydHkgd2l0aG91dCBjaGVja2luZyBpZiB0aGUKKyAgICAv
LyBwcm90b3R5cGUgY2hhaW4gaGFzIGEgc2V0dGVyLgorICAgIGNvbnN0ZXhwciBzdGF0aWMgUHV0
QnlWYWxGbGFncyBjcmVhdGVEaXJlY3QoRUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gUHV0QnlWYWxGbGFncyh0cnVlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgY29u
c3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChFQ01B
TW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKFByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ6OkNyZWF0ZSwgZWNtYU1vZGUpOworICAgIH0KKworICAgIGNvbnN0
ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVQdXRQcml2YXRlRmllbGQoRUNNQU1vZGUg
ZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpQdXQsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICBib29sIGlzRGlyZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpcmVjdDsgfQorICAgIEVDTUFNb2RlIGVjbWFNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9lY21hTW9kZTsgfQorICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZDsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MoKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgIT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9u
ZTsgfQorICAgIGJvb2wgaXNQcml2YXRlRmllbGRQdXQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0OyB9CisgICAg
Ym9vbCBpc1ByaXZhdGVGaWVsZEFkZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCA9PSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGU7IH0KKworcHJpdmF0ZToK
KworICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZsYWdzKGJvb2wgaXNEaXJlY3QsIEVDTUFNb2RlIGVj
bWFNb2RlKQorICAgICAgICA6IG1faXNEaXJlY3QoaXNEaXJlY3QpCisgICAgICAgICwgbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCisgICAgICAg
ICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3RleHByIFB1
dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBhY2Nlc3MsIEVDTUFNb2RlIGVjbWFN
b2RlKQorICAgICAgICA6IG1faXNEaXJlY3QodHJ1ZSkKKyAgICAgICAgLCBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQoYWNjZXNzKQorICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAg
eworICAgIH0KKworICAgIGJvb2wgbV9pc0RpcmVjdDsKKyAgICBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZDsKKyAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmlu
dFN0cmVhbTsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwgSlNDOjpQdXRCeVZh
bEZsYWdzKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEtpbmQuaAppbmRleCA2MTEyNzlmNjA5YTA4NTg5YWRjZTkxYzJhNWM4YWY2NDgwODBj
NGM2Li5mOTBkNTI5ZDJhZWJiM2NkOTVjOGI0NTdiNjQ4YjVmNzRiOGZiMTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRLaW5kLmgKQEAgLTI3LDYgKzI3LDYgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWVudW0gUHV0S2luZCB7IERpcmVjdCwgTm90RGlyZWN0IH07CitlbnVt
IFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCwgRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlLCBE
aXJlY3RQcml2YXRlRmllbGRQdXQgfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcAppbmRleCBiY2Y3ZDNhZDg1ZWIxZmNmZDQxZmI3Zjg5MTAyMmViOWI3ZmQ3
ZDU3Li40NjFkOWZhZGQ0OGIzNWJjOTRlZGQ2MTBiNzM4N2NlYTkwMmMxNGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBBU1NF
UlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpOwogICAgIFZl
Y3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMgPSBleGVjdXRhYmxl
LT5pbnN0YW5jZUZpZWxkTG9jYXRpb25zKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9u
Tm9kZT4gZnVuY3Rpb24gPSBwYXJzZTxGdW5jdGlvbk5vZGU+KAotICAgICAgICB2bSwgc291cmNl
LCBleGVjdXRhYmxlLT5uYW1lKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2Rl
LCBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIGVy
cm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERlcml2ZWRDb250ZXh0VHlwZTo6
Tm9uZSwgRXZhbENvbnRleHRUeXBlOjpOb25lLCBudWxscHRyLCBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1
dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVs
bHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAgICBpZiAoIWZ1bmN0
aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApp
bmRleCBhODA1NTA4YmY3MzdlMTE0NTIxNWY1YTI1N2YxZjJjNjY1NzIwOTEzLi5lYzhkYjc3NGU5
ZWM1OThmMjg2ZmI1NDczNWUyN2VkMjA3NGVlZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTg5
Miw2ICsxODkyLDExIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNh
bFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAKICAgICAgICAgICAgIFN5
bWJvbFRhYmxlRW50cnkgbmV3RW50cnkodmFyT2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZW50cnkudmFsdWUuaXNDb25zdCgpID8gUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IDogUHJv
cGVydHlBdHRyaWJ1dGU6Ok5vbmUpKTsKICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQoTm9M
b2NraW5nTmVjZXNzYXJ5LCBlbnRyeS5rZXkuZ2V0KCksIG5ld0VudHJ5KTsKKworICAgICAgICAg
ICAgLy8gRklYTUU6IG9ubHkgZG8gdGhpcyBpZiB0aGVyZSBpcyBhbiBldmFsKCkgd2l0aGluIGEg
bmVzdGVkIHNjb3BlIC0tLSBvdGhlcndpc2UgaXQgaXNuJ3QgbmVlZGVkLgorICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjY2MworICAgICAg
ICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgICAgICAgICBz
eW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0yNjkzLDkgKzI2OTgs
MTUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmEKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSkKK3sKKyAgICBP
cEdldFByaXZhdGVOYW1lOjplbWl0KHRoaXMsIGRzdCwgYmFzZSwgcHJvcGVydHkpOworICAgIHJl
dHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKQogewotICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJv
cGVydHksIHZhbHVlLCBlY21hTW9kZSgpKTsKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRo
aXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KGVj
bWFNb2RlKCkpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI3MTcsNiArMjcyOCwxOCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEludGVybmFsRmllbGQoUmVn
aXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAg
IE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBQdXRC
eVZhbEZsYWdzOjpjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoZWNtYU1vZGUoKSkpOworICAgIHJl
dHVybiB2YWx1ZTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2
YXRlRmllbGRQdXQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKQoreworICAgIE9wUHV0QnlWYWxEaXJlY3Q6OmVtaXQodGhpcywgYmFzZSwg
cHJvcGVydHksIHZhbHVlLCBQdXRCeVZhbEZsYWdzOjpjcmVhdGVQdXRQcml2YXRlRmllbGQoZWNt
YU1vZGUoKSkpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFN1cGVyU2FtcGxlckJlZ2luKCkKIHsKICAgICBPcFN1cGVyU2FtcGxlckJlZ2luOjpl
bWl0KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDRiMWVmYjg5ZDYwODdhNGJmMDM5NWE2MWEyYmJj
Y2JmYmMxNTUwZTUuLjc3NDI1MzE1NDJlNDE0ZGI4M2I5NDA1NTc2OTFjY2NkMzU5NTFlNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTgxMCwxMSArODEwLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQ
dXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXREaXJlY3RHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5VmFs
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVCeVZhbChSZWdpc3RlcklEKiBkc3Qs
IFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0R2V0SW50ZXJuYWxGaWVsZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEludGVy
bmFsRmllbGQoUmVnaXN0ZXJJRCogYmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZh
bHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlZmluZVByaXZhdGVGaWVsZChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAKICAgICAgICAgdm9pZCBl
bWl0U3VwZXJTYW1wbGVyQmVnaW4oKTsKICAgICAgICAgdm9pZCBlbWl0U3VwZXJTYW1wbGVyRW5k
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggMWFmYzJlNGJiY2EyZmJkOTZmZmIyMjYzNDcxMDYwMWQ0ZTU3MmFmNC4u
YjljNzI5YzEyNGYwZjA1Yjc3ZTdiZWY0NzQxZmYxZDk1NmY1YmNiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTQ0
LDExICs1NDQsMzAgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRIb21lT2JqZWN0KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoZnVuY3Rpb24sIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuaG9tZU9iamVjdFByaXZhdGVOYW1lKCksIGhvbWVPYmplY3QpOwogfQogCit2b2lkIFByb3Bl
cnR5TGlzdE5vZGU6OmVtaXREZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogc2NvcGUpCit7CisgICAgLy8gV2FsayB0aGUgbGlz
dCBhbmQgZGVjbGFyZSBhbnkgUHJpdmF0ZSBwcm9wZXJ0eSBuYW1lcyAoZS5nLiBgI2Zvb2ApIGlu
IHRoZSBwcm92aWRlZCBzY29wZS4KKyAgICBmb3IgKFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlz
OyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGNvbnN0IFByb3BlcnR5Tm9kZSYgbm9kZSA9
ICpwLT5tX25vZGU7CisgICAgICAgIGlmIChub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJp
dmF0ZSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVByaXZhdGVTeW1i
b2wgPSBnZW5lcmF0b3IubW92ZUxpbmtUaW1lQ29uc3RhbnQobnVsbHB0ciwgTGlua1RpbWVDb25z
dGFudDo6Y3JlYXRlUHJpdmF0ZVN5bWJvbCk7CisKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMg
YXJndW1lbnRzKGdlbmVyYXRvciwgbnVsbHB0ciwgMCk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWQoYXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzeW1ib2wgPSBnZW5lcmF0b3IuZW1pdENhbGwoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24obnVsbHB0ciwgY3JlYXRlUHJpdmF0ZVN5bWJvbC5nZXQo
KSksIGNyZWF0ZVByaXZhdGVTeW1ib2wuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJndW1l
bnRzLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBEZWJ1Z2dhYmxlQ2FsbDo6
Tm8pOworCisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5v
ZGUubmFtZSgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29wZSwg
dmFyLCBzeW1ib2wuZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1v
ZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAgICB9CisgICAgfQorfQorCiBSZWdpc3Rl
cklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCogcHJvdG90
eXBlLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewot
ICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHBy
b3BlcnRpZXMuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAgICAgUmVnaXN0ZXJJ
RCogZHN0ID0gbnVsbHB0cjsKKworICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFu
ZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9k
ZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKICAg
ICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90
eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIApAQCAtNzEwLDYgKzcyOSw5IEBAIFJlZ2lzdGVySUQq
IFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlCiAKIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJv
cGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogbmV3T2JqLCBQ
cm9wZXJ0eU5vZGUmIG5vZGUpCiB7CisgICAgLy8gUHJpdmF0ZSBmaWVsZHMgYXJlIGhhbmRsZWQg
aW4gdGhlIHN5bnRoZXRpYyBpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIgZnVuY3Rpb24sIG5vdCBo
ZXJlLgorICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlKSk7
CisKICAgICBib29sIHNob3VsZFNldEZ1bmN0aW9uTmFtZSA9IGdlbmVyYXRvci5zaG91bGRTZXRG
dW5jdGlvbk5hbWUobm9kZS5tX2Fzc2lnbik7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJv
cGVydHlOYW1lOwpAQCAtODQwLDE2ICs4NjIsNjYgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIK
ICAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChiYXNl
SXNTdXBlcikgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJh
dG9yLmVuc3VyZVRoaXMoKTsKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZp
bmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdC5n
ZXQoKSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJRCogcmV0ID0gZW1pdEdl
dFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCkpOwor
CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QuZ2V0KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIAorUmVnaXN0ZXJJRCogQmFz
ZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+
JiB0aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgeworICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CisgICAgICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0
b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdl
dCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKGRzdCwgYmFzZSwgcHJpdmF0ZU5hbWUu
Z2V0KCkpOworICAgIH0KKworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAg
ICAgaWYgKCF0aGlzVmFsdWUpCisgICAgICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5z
dXJlVGhpcygpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFz
ZSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGRzdCwgYmFzZSwgbV9pZGVudCk7Cit9CisKK1JlZ2lzdGVySUQqIEJh
c2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UpCit7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdEdldFByb3BlcnR5VmFsdWUoZ2Vu
ZXJhdG9yLCBkc3QsIGJhc2UsIHRoaXNWYWx1ZSk7Cit9CisKK1JlZ2lzdGVySUQqIEJhc2VEb3RO
b2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1Zh
bHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4g
Y2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2Nv
cGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVl
KTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIGlm
ICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRo
aXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCB0aGlzVmFs
dWUuZ2V0KCksIG1faWRlbnQsIHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRQdXRCeUlkKGJhc2UsIG1faWRlbnQsIHZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFz
ZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBi
YXNlLCB2YWx1ZSwgdGhpc1ZhbHVlKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
UmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTE3MzQsMTEgKzE4MDYsOSBAQCBS
ZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRPcHRpb25h
bENoZWNrKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9u
U3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyQmFzZSA9IGVtaXRTdXBlckJhc2VGb3JDYWxs
ZWUoZ2VuZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdl
dCgpLCBzdXBlckJhc2UuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRl
bnQpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24u
Z2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOworCisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBiYXNlSXNTdXBlciA/IGVtaXRTdXBlckJhc2VGb3JDYWxs
ZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCk7CisgICAgZW1pdEdl
dFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmdW5jdGlvbi5nZXQoKSwgYmFzZS5nZXQoKSk7CiAK
ICAgICBpZiAoaXNPcHRpb25hbENoYWluQmFzZSgpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE9w
dGlvbmFsQ2hlY2soZnVuY3Rpb24uZ2V0KCkpOwpAQCAtMjExMSw2ICsyMTgxLDIyIEBAIFJlZ2lz
dGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nl
c3Nvci0+ZGl2b3RFbmQoKSk7CisKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0ZU5hbWUo
KSkgeworICAgICAgICBBU1NFUlQoIWJhc2VJc1N1cGVyKTsKKyAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQo
KSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2Vu
ZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29w
ZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVG
aWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBvbGRWYWx1
ZS5nZXQoKSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAgaWYgKGJhc2VJc1N1cGVyKSB7CkBAIC0y
MzM0LDYgKzI0MjAsMjEgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2
b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFs
dWU7CisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAgQVNT
RVJUKCFiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSk7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdl
bmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNj
b3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKworICAgICAgICB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwg
cHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1
ZSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgcHJvcERzdC5nZXQo
KSk7CisgICAgfQorCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKICAgICBpZiAo
YmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpIHsKICAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9y
LmVuc3VyZVRoaXMoKTsKQEAgLTMxNzYsMTEgKzMyNzcsNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25E
b3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
dmFsdWUuZ2V0KCksIG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyBy
ZXN1bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKHJl
c3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUo
KSkgewotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVu
c3VyZVRoaXMoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRo
aXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3
YXJkUmVzdWx0LmdldCgpKTsKKyAgICBlbWl0UHV0UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLmdl
dCgpLCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KGZvcndhcmRSZXN1bHQuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiB9CkBAIC0zMTky
LDIzICszMjg5LDE1IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9iYXNlLCBt
X3JpZ2h0SGFzQXNzaWdubWVudHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKIAogICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4
cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZTsKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwotICAgIGlmICht
X2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVu
c3VyZVRoaXMoKTsKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1f
aWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGVtaXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVy
YXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFs
dWUpOworCiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3Np
Z25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5n
ZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBtX29wZXJhdG9yLCBPcGVyYW5kVHlwZXMoUmVz
dWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0OwotICAgIGlmIChtX2Jhc2UtPmlzU3Vw
ZXJOb2RlKCkpCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7Ci0gICAgZWxzZQotICAg
ICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBk
YXRlZFZhbHVlKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0ID0gZW1pdFB1dFByb3BlcnR5
KGdlbmVyYXRvciwgYmFzZS5nZXQoKSwgdXBkYXRlZFZhbHVlLCB0aGlzVmFsdWUpOwogICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJldC5nZXQoKTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNob3J0Q2lyY3VpdFJlYWRNb2RpZnlEb3RO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00NjcxLDYgKzQ3NjAs
MTcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVm
aW5lUHJvcGVydHkoZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWUuZ2V0KCks
IHZhbHVlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVy
dHlDb25maWd1cmFibGUgfCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlXcml0YWJsZSB8IEJ5
dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eUVudW1lcmFibGUsIG1fcG9zaXRpb24pOwogICAgICAg
ICBicmVhazsKICAgICB9CisgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVO
YW1lOiB7CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbV9pZGVu
dCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBG
aWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKKworICAg
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCks
IHBvc2l0aW9uKCkgKyBtX2lkZW50LT5sZW5ndGgoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUu
Z2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXREZWZpbmVQcml2YXRlRmllbGQoZ2VuZXJhdG9yLnRoaXNSZWdpc3Rlcigp
LCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9
CiAgICAgY2FzZSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OkNvbXB1dGVkTmFtZTogewogICAgICAg
ICAvLyBGSVhNRTogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBwdWJsaWMgY2xhc3MgZmllbGRzCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgzMzAK
QEAgLTQ2ODEsNyArNDc4MSw3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiQ29tcHV0ZWQgbmFtZXMgbXVzdCBiZSBzdG9y
ZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlvbigpLCBwb3NpdGlvbigpICsgMSk7Ci0gICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3Bl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgdmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5n
ZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZShwcml2YXRlTmFtZS5nZXQoKSwgdmFyLCBtX3Bvc2l0aW9uLCBt
X3Bvc2l0aW9uICsgbV9pZGVudC0+bGVuZ3RoKCkpOwpAQCAtNDc3Myw2ICs0ODczLDggQEAgUmVn
aXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICBnZW5lcmF0b3IuZW1pdENhbGxEZWZpbmVQcm9wZXJ0
eShjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlTmFtZVJlZ2lzdGVyLmdldCgpLCBwcm90b3R5
cGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIDAsIG1fcG9zaXRpb24pOwogCiAgICAgaWYgKG1f
Y2xhc3NFbGVtZW50cykgeworICAgICAgICBtX2NsYXNzRWxlbWVudHMtPmVtaXREZWNsYXJlUHJp
dmF0ZUZpZWxkTmFtZXMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpKTsKKwog
ICAgICAgICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+IGluc3RhbmNlRmllbGRMb2NhdGlvbnM7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lQ2xhc3NFbGVtZW50cyhtX2NsYXNzRWxlbWVudHMs
IGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGUuZ2V0KCksIGluc3RhbmNlRmllbGRMb2NhdGlv
bnMpOwogICAgICAgICBpZiAoIWluc3RhbmNlRmllbGRMb2NhdGlvbnMuaXNFbXB0eSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IDc3OTFjYTYxOTRkOGVkODdkM2RkYTY0N2JhYWZiZjVkM2NhYzJlZjYuLmRiMjk3Yjk3ZmE1NTcz
ODdhMjg4Y2RmNDQ5ZjgzOTNmNzI0M2ZlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAi
UHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVk
ZSAiUHV0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRl
ICJSZWdFeHBQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogI2luY2x1
ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCkBAIC0xMjY1LDYgKzEyNjYsMTggQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faGFzQW55Rm9yY2VPU1JFeGl0cyB7IGZhbHNlIH07CiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBCeXRlY29kZT4KK0VDTUFNb2RlIGVjbWFNb2RlKEJ5dGVjb2RlIGJ5dGVjb2Rl
KQoreworICAgIHJldHVybiBieXRlY29kZS5tX2VjbWFNb2RlOworfQorCit0ZW1wbGF0ZTw+CitB
TFdBWVNfSU5MSU5FIEVDTUFNb2RlIGVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlW
YWxEaXJlY3QgYnl0ZWNvZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1v
ZGUoKTsKK30KKwogQmFzaWNCbG9jayogQnl0ZUNvZGVQYXJzZXI6OmFsbG9jYXRlVGFyZ2V0YWJs
ZUJsb2NrKEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCkKIHsKICAgICBBU1NFUlQoYnl0ZWNv
ZGVJbmRleCk7CkBAIC04MjM2LDcgKzgyNDksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbXBpbGVkQXNQdXRCeUlkKQotICAgICAgICAgICAg
aGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRleCwgYnl0ZWNvZGUubV9lY21hTW9k
ZSk7CisgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZp
ZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBl
Y21hTW9kZShieXRlY29kZSkpOwogICAgIH0KIAogICAgIGlmICghY29tcGlsZWRBc1B1dEJ5SWQp
IHsKQEAgLTgyNDcsNyArODI2MCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5
VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4aXRJbmRlCiAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7
IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCiAgICAgICAgIGFkZFZhckFyZ0No
aWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5ndGguCi0gICAgICAgIGFkZFRvR3Jh
cGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9w
SW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0ZWNvZGUubV9lY21hTW9kZSkpOwor
ICAgICAgICBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVj
dCA6IFB1dEJ5VmFsLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGVjbWFNb2Rl
KGJ5dGVjb2RlKSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZhbCBhbmQg
UHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBleGl0IHN0
YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYTFh
ZTNlM2M5ZmNlMTY4ODNhMjgwYzgxNjllNGZiYmIxNjlhNzYxMS4uMTIxMmQ0MDdiNGZjYzY3OGYz
MmM2N2IzNzQ2MTJmOWY3ZDY4N2RjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjk4LDYgKzI5OCw3IEBAIENhcGFiaWxpdHlMZXZlbCBj
YXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBJCiAKICAgICBjYXNlIG9wX3lpZWxkOgogICAgIGNhc2Ugb3BfY3JlYXRlX2dlbmVyYXRv
cl9mcmFtZV9lbnZpcm9ubWVudDoKKyAgICBjYXNlIG9wX2dldF9wcml2YXRlX25hbWU6IC8vIEZJ
WE1FOiBvcF9nZXRfcHJpdmF0ZV9uYW1lIHdpbGwgbmVlZCBERkcvRlRMIHN1cHBvcnQgdG8gc2hp
cCBjbGFzcyBmaWVsZHMuCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGNh
c2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVsZV9wcm9ncmFtX3By
b2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBhYmIxZTU2MmQ5NGFkMGVkNWMxOTY4ZTUzZmYyZTM0MDEwY2UzZThiLi5lMWNh
YzFmNGU4NTA0NGNlZDViNmMzNDAwNzRmMmQ0YzVjODYxMTJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQzODEsNyArMTQzODEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRS
ZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2lu
ZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDIx
MTU1MGI4NWFkM2RjZWY4YTU5ZTYxMzk3MjczZTE0MzZkMmY2OGIuLjI1YTA3NWE2YjQ4MDVkYzhi
YzBjMmYyMzJhNzZmYzY5MWVkODY1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQyMDQsNyArNDIwNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0
Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKaW5kZXggOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEwYzgz
MS4uZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTE0MSw2ICsxNDEsNyBAQCBtb2R1bGUgRFNM
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRl
ICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SUNTdGF0cy5oCmluZGV4IDkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMxNDku
Ljk2YzE5YTE3YmRjMmE3ZDEwZjE1ZjliY2EzOTAyMTYyMWM5OWRiODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QpIFwKICAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAorICAgIG1hY3JvKE9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplKSBcCisgICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUpIFwK
ICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBs
YWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggMjY0ODU0YzY2NWVjZGZkYjBkOWNlMWU0YjA3ZjdlM2NiZGZi
YzI3MC4uNTE2MDgzMDc5ZmU4Mzk4MjcwOTgzMTQxNjcxNzljMzg0MWYyMWVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Njb3Bl
KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAg
ICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgICAgIERFRklO
RV9TTE9XX09QKGdldF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9i
eV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9ieV92YWxfd2l0aF90
aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChyZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19m
dW5jX2RlY2xfaW5fZXZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDQwMGVlNjM0ZDMx
YjcxN2Q5OTdjMWJjMjg0YmMwOGJlMTMzOTQ5NzkuLjI3NTU3YjNiMDY3OGQ3OTQzNWZlOTU4ZGQ3
ODA1NzUxMGRjZWVkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDAxLDcgKzQwMSwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAg
ICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOwogCi0gICAgICAgIC8vIElkZW50aWZpZXIgY2hl
Y2sgaGVscGVyIGZvciBQdXRCeVZhbC4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Cisg
ICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHRo
ZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgorICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKworICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhl
bHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElk
ZW50aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDU0ODU4MzkwZWZiN2IzNmI0ZjhlOWVmOGZjZWNm
MThjMDllNDIwYjMuLjIzNjgzMDQ1ZjFmZDFmNmFhNDVlNjFkNjM4OWFlZjFmYzI4MjAxZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0QnlJ
ZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVD
TUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9y
KAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQ
dXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQotICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKLSAgICAsIG1fcHV0S2luZChwdXRLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRL
aW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAg
ICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkK
KyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwogfQpA
QCAtMTUyLDYgKzE1MiwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKKyAgICAg
ICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgICAgICBBU1NFUlQobV9lY21hTW9k
ZS5pc1N0cmljdCgpKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIH0K
KwogICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2lu
ZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDk3NmY3MWJiYWFjOTFkOTNlNjA3MDY3Nzk2YzZjNTI0
ZTA0OWQ1ZmQuLjczMjlkNmI3MzgxNGQ2YzRiYTU1MmE1ODkzZTcyYjAyMWU2YTUxMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAi
SklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJQdXRC
eVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0
LmgiCiAKQEAgLTEzMCwxMSArMTMxLDEyIEBAIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBw
dWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
cigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCisgICAgICAgICwg
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCiAg
ICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBD
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CisgICAgICAg
IEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CiAgICAgCiAgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDMsNiArMTQ1LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQg
bV9wdXRLaW5kOworICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nl
c3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApp
bmRleCA5YjZjMDUyNDhiYTI5Mjk2Zjk5ZWQzNzZmYjk0ODI4ZmJjOTMzY2JmLi5kNTNlNjk3N2Qz
OWQ3NTllNjc0MTJmZDlhZDFiOWU2NzgyYjk3ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaApAQCAtNjg2LDYgKzY4NiwzNiBAQCBBTFdBWVNfSU5MSU5FIEJpbmFyeUFy
aXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKICAg
ICByZXR1cm4gYXJpdGhQcm9maWxlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK0FMV0FZ
U19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZShPcCBvcCkKK3sKKyAgICByZXR1cm4gb3Au
bV9lY21hTW9kZTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6
OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQoreworICAgIHJldHVybiBvcC5tX2Zs
YWdzLmVjbWFNb2RlKCk7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQorewor
ICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IE9wPgorUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQo
T3ApCit7CisgICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7Cit9CisKK3Rl
bXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkK
K3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDNhNDFlNzYyZWM4ZDgzY2M0
MmFjZTFkMTNiMmQ0Nzk2MmI0Njc1NzUuLjNkZTg0MjUzYmMyZmUxMjFkY2UzNTExMDYzMGM1ZTMw
MjRjMjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtNjk3LDYgKzY5NywxMTcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAgICAg
cmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVj
dHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCit9IC8vIGV4
dGVybiAiQyIKKwordXNpbmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9u
PHZvaWQoVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9wZXJ0eVNsb3QmLCBjb25z
dCBJZGVudGlmaWVyJik+OworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmll
bGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SlNWYWx1ZSB2YWx1ZSwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0g
UHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5h
bWUoKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKwor
ICAgIFB1dFByb3BlcnR5U2xvdCBwdXRTbG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+
cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjayh2
bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30KKworQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCBkZWZpbmVQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFs
dWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgY29uc3Qg
UHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJpdmF0ZUZpZWxkQ2FsbGJh
Y2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51
aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKworICAgIFB1dFByb3BlcnR5U2xvdCBw
dXRTbG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7Cisg
ICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZh
bHVlLCBwdXRTbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjayh2bSwgY29kZUJsb2NrLCBvbGRT
dHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30KKworZXh0ZXJuICJDIiB7CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJh
d0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKwor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBkZWZpbmVQcml2YXRl
RmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIs
IHZhbHVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQ
cml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlm
aWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRz
KHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKworICAg
IGRlZmluZVByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmpl
Y3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbPV0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25Q
dXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+
Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKKworICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRl
bnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1
YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0Nh
Y2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBwdXRQcml2YXRlRmllbGQo
dm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHZhbHVl
KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQorewor
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVy
KTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgWyZd
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAg
ICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxk
U3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90
LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NU
eXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSk7CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwg
Y29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRj
aFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVy
ZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRQdXQp
OworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUg
dmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IDllYTNjYmQ5MzRlYjQ3MzY5NzFkNmY5ZTFiMjdlNzgxODhkNDY0
MTAuLjY2NzA1ZTQ1OThhZjk2N2UwOTIwNTI2ODU4MTc1N2E5ODdiYWFmOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1
aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGVhNzMxYzMwMzk4
MTFjMDI2Yzg1NTk5Y2E2MDk2YjY4MjZmMzg2YzIuLjg2OGExZDEwNTkwOWQwMTRlNTg3NjQzN2Qz
MjZhM2QyNDlkZGEzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5k
LAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUs
Ci0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwg
Ynl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5k
LCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQg
d3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29u
ZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNv
ZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAg
ICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAg
ZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOworICAgICAgICBlY21hTW9kZSA9IEpJVDo6
ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02NTgs
OCArNjU4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpLAotICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmll
bGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzE3LDcg
KzEzMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGJ5dGVj
b2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKaW5kZXggZmMyZTQ0ZDc5MmFhZjA0MjhmMjMwYWVmZGY5NjY0ODNmNGVkOWI4
Zi4uZWJjNjNkMTZlNjkzZmIwNTZlZjA2YzE2YzBjYWRmNmE3NDJmNTYxMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBA
IC00NDMsNiArNDQzLDQ4IEBAIEpJVDo6SnVtcExpc3QgSklUOjplbWl0QXJyYXlTdG9yYWdlUHV0
QnlWYWwoT3AgYnl0ZWNvZGUsIFBhdGNoYWJsZUp1bXAmIGJhZFR5cGUpCiAgICAgcmV0dXJuIHNs
b3dDYXNlczsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIE9wPgorSklUUHV0QnlJZEdlbmVyYXRv
ciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRL
aW5kLCBDYWNoZWFibGVJZGVudGlmaWVyIHByb3BlcnR5TmFtZSwgSnVtcExpc3QmIGRvbmVDYXNl
cywgSnVtcExpc3QmIHNsb3dDYXNlcykKK3sKKyAgICAvLyBiYXNlOiB0YWcocmVnVDEpLCBwYXls
b2FkKHJlZ1QwKQorICAgIC8vIHByb3BlcnR5OiB0YWcocmVnVDMpLCBwYXlsb2FkKHJlZ1QyKQor
CisgICAgVmlydHVhbFJlZ2lzdGVyIGJhc2UgPSBieXRlY29kZS5tX2Jhc2U7CisgICAgVmlydHVh
bFJlZ2lzdGVyIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKKworICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CisgICAgZW1pdEJ5VmFsSWRlbnRpZmllckNoZWNr
KHJlZ1QyLCByZWdUMiwgcHJvcGVydHlOYW1lLCBzbG93Q2FzZXMpOworCisgICAgLy8gV3JpdGUg
YmFycmllciBicmVha3MgdGhlIHJlZ2lzdGVycy4gU28gYWZ0ZXIgaXNzdWluZyB0aGUgd3JpdGUg
YmFycmllciwKKyAgICAvLyByZWxvYWQgdGhlIHJlZ2lzdGVycy4KKyAgICAvLworICAgIC8vIElD
IGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQgd3JpdGUtYmFycmllciBpZiBhIGJhc2Ug
aXMgY2VsbC4KKyAgICAvLyBXZSBhcmUgZW1pdHRpbmcgd3JpdGUtYmFycmllciBiZWZvcmUgd3Jp
dGluZyBoZXJlIGJ1dCB0aGlzIGlzIE9LIHNpbmNlIDMyYml0IEpTQyBkb2VzIG5vdCBoYXZlIGNv
bmN1cnJlbnQgR0MuCisgICAgLy8gRklYTUU6IFVzZSBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVy
IGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVjZSBjb2RlIHNpemUuCisgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTM5NQorICAgIGVtaXRXcml0
ZUJhcnJpZXIoYmFzZSwgU2hvdWxkRmlsdGVyQmFzZSk7CisgICAgZW1pdExvYWRQYXlsb2FkKGJh
c2UsIHJlZ1QwKTsKKyAgICBlbWl0TG9hZCh2YWx1ZSwgcmVnVDMsIHJlZ1QyKTsKKworICAgIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAorICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbiht
X2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlOYW1lLAorICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIp
LCByZWdUMSwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKGJ5dGVjb2RlKSk7CisgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOworICAgIGRv
bmVDYXNlcy5hcHBlbmQoanVtcCgpKTsKKworICAgIExhYmVsIGNvbGRQYXRoQmVnaW4gPSBsYWJl
bCgpOworICAgIGdlbi5zbG93UGF0aEp1bXAoKS5saW5rKHRoaXMpOworCisgICAgLy8gSklUUHV0
QnlJZEdlbmVyYXRvciBvbmx5IHByZXNlcnZlIHRoZSB2YWx1ZSBhbmQgdGhlIGJhc2UncyBwYXls
b2FkLCB3ZSBoYXZlIHRvIHJlbG9hZCB0aGUgdGFnLgorICAgIGVtaXRMb2FkVGFnKGJhc2UsIHJl
Z1QxKTsKKworICAgIENhbGwgY2FsbCA9IGNhbGxPcGVyYXRpb24oZ2VuLnNsb3dQYXRoRnVuY3Rp
b24oKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1
ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgcHJvcGVydHlO
YW1lLnJhd0JpdHMoKSk7CisgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2lu
LCBjYWxsKTsKKyAgICBkb25lQ2FzZXMuYXBwZW5kKGp1bXAoKSk7CisKKyAgICByZXR1cm4gZ2Vu
OworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X3ZhbChjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGJvb2wgaXNEaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPm9wY29kZUlE
KCkgPT0gb3BfcHV0X2J5X3ZhbF9kaXJlY3Q7CkBAIC00NTUsNyArNDk3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAg
cHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2Rl
Lm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKKyAgICAg
ICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKICAgICB9OwogCiAgICAgaWYg
KGlzRGlyZWN0KQpAQCAtNjY0LDcgKzcwNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNv
ZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAg
ICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJs
b2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLAotICAgICAgICByZWdUMSwgYnl0
ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOwor
ICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJl
Y3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOwogICAgIAogICAg
IGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1Bh
dGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggYjE3ZWM3
MjRiNjFlYjExMGI0MjI3ODMwZDJhMmQwZTJiMjY4ODJlYy4uNDRiYmFmYTBmYjk1ODc5Yjg4MzFh
YmQ2YTM1MDkzMDRhYWQ4MDYxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CkBAIC01MjAsNiArNTIwLDEwIEBAIHN0YXRpYyBhdXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5
SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNsb3QgJnNsb3QsIFB1dEtpCiAgICAgaWYgKHNs
b3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAg
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3Q7CisgICAgICAgIGlm
IChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkKKyAgICAgICAgICAgIHJldHVy
biBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0OworICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCisgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdDsKICAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1dEJ5SWRTdHJpY3Q7CiAgICAgfQogICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAg
LTUzMiw2ICs1MzYsMTAgQEAgc3RhdGljIGF1dG8gYXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJ
ZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xvdCAmc2xvdCwgUHUKICAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplOworICAgICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpCisgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwor
ICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQdXQpCisgICAgICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwog
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplOwogICAgIH0KICAg
ICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC02MjUsNiArNjMzLDcgQEAgc3RhdGljIElubGlu
ZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNj
ZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWluOwogICAgICAgICAgICAgICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNldDsKICAgICAgICAgICAgICAgICBpZiAocHV0
S2luZCA9PSBOb3REaXJlY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQg
IT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxk
Q3JlYXRlKTsKICAgICAgICAgICAgICAgICAgICAgYXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVD
aGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBiYXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY0Miw2ICs2NTEsMTMgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
b2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAorICAg
ICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSkgewor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0gZ2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVy
dHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgbmV3U3RydWN0dXJlLCBpZGVudC5p
bXBsKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRl
VHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCwgb2xkU3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3ND
aGFpbikpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFi
bGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxlU2V0dGVyKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXgg
MWZjMjMyMjg5MTFjODdlYmFlYWFiNDBjNzc0YzcxNmJjYmY1YzJkNS4uYzUyM2U4YTYwMDZkZGM1
M2QyNTk5YTRkMjRjNmU5NGI1NGRjYWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTYwLDYgKzYwLDcgQEAK
ICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgi
CiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgi
CiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAxZDA2MTVjNzAyZjYyMWEzMTMyNmFkZDEyYjY1NTNl
ZjQwZjlkNjNjLi5kMWZkNmU2MTUzY2M4YTg1NjhjY2VlZjI3OWVmYmNmNTcwOWUwZDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEw
NzAsNiArMTA3MCw2NCBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3Zh
bCkKICAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQoZ2V0QnlWYWwodm0sIGdsb2JhbE9iamVjdCwg
Y29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwgYnl0ZWNvZGUpKTsKIH0KIAorTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRQcml2YXRlTmFtZT4o
KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29k
ZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUs
IGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7
CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOworCisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
R2V0T3duUHJvcGVydHkpOworICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZhdGVGaWVs
ZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIHNsb3QuaXNDYWNo
ZWFibGUoKSAmJiAhc2xvdC5pc1Vuc2V0KCkpIHsKKyAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBi
eXRlY29kZS5tZXRhZGF0YShjb2RlQmxvY2spOworICAgICAgICB7CisgICAgICAgICAgICBTdHJ1
Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQ7CisgICAgICAg
ICAgICBpZiAob2xkU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGEg
PSB2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpOworICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogYiA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZt
KTsKKworICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmU6OnNob3VsZENvbnZlcnRUb1BvbHlQ
cm90byhhLCBiKSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYS0+cmFyZURhdGEoKS0+
c2hhcmVkUG9seVByb3RvV2F0Y2hwb2ludCgpLmdldCgpID09IGItPnJhcmVEYXRhKCktPnNoYXJl
ZFBvbHlQcm90b1dhdGNocG9pbnQoKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGEtPnJh
cmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aW52YWxpZGF0ZSh2bSwgU3Ry
aW5nRmlyZURldGFpbCgiRGV0ZWN0ZWQgcG9seSBwcm90byBvcHBvcnR1bml0eS4iKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgSlNDZWxs
KiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgaWYgKHNsb3QuaXNWYWx1
ZSgpKSB7CisgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQg
Y2FjaGUuCisgICAgICAgICAgICBtZXRhZGF0YS5tX3N0cnVjdHVyZUlEID0gMDsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKKworICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+
cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQ
cm9wZXJ0eVdhdGNocG9pbnQoKSkgeworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7
CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyAgVXBkYXRlIHRoZSBjYWNoZWQgcHJpdmF0
ZSBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5zZXQodm0s
IGNvZGVCbG9jaywgc3Vic2NyaXB0LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoY29kZUJsb2NrKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChzbG90Lmdl
dFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHkpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3B1dF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTExMTEs
MjAgKzExNjksNDIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxf
ZGlyZWN0KQogICAgIEpTVmFsdWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNv
ZGUubV92YWx1ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOwog
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKLSAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKTsKKyAgICBib29s
IGlzU3RyaWN0TW9kZSA9IGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKS5pc1N0cmljdCgpOwor
ICAgIGJvb2wgaXNQcml2YXRlRmllbGRBY2Nlc3MgPSBieXRlY29kZS5tX2ZsYWdzLmlzUHJpdmF0
ZUZpZWxkQWNjZXNzKCk7CiAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHN1YnNj
cmlwdC50cnlHZXRBc1VpbnQzMkluZGV4KCkpIHsKKyAgICAgICAgQVNTRVJUKCFpc1ByaXZhdGVG
aWVsZEFjY2Vzcyk7CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9i
amVjdCwgKmluZGV4LCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91
bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOwogICAgICAgICBMTElOVF9F
TkQoKTsKICAgICB9CiAKKyAgICBpZiAoc3Vic2NyaXB0LmlzRG91YmxlKCkpIHsKKyAgICAgICAg
QVNTRVJUKCFpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CisgICAgICAgIGRvdWJsZSBzdWJzY3JpcHRB
c0RvdWJsZSA9IHN1YnNjcmlwdC5hc0RvdWJsZSgpOworICAgICAgICB1aW50MzJfdCBzdWJzY3Jp
cHRBc1VJbnQzMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihzdWJzY3JpcHRBc0RvdWJsZSk7Cisg
ICAgICAgIGlmIChzdWJzY3JpcHRBc0RvdWJsZSA9PSBzdWJzY3JpcHRBc1VJbnQzMiAmJiBpc0lu
ZGV4KHN1YnNjcmlwdEFzVUludDMyKSkgeworICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBzdWJzY3JpcHRBc1VJbnQzMiwgdmFsdWUsIDAsIGlzU3Ry
aWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNob3Vs
ZE5vdFRocm93KTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgfQor
CiAgICAgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBhbiBleGNl
cHRpb24uCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2Jh
bE9iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKQogICAg
ICAgICBMTElOVF9FTkQoKTsKIAorICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkg
PT0gaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaW5k
ZXggPSBwYXJzZUluZGV4KHByb3BlcnR5KSkKICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleC52YWx1ZSgpLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2Rl
ID8gUHV0RGlyZWN0SW5kZXhTaG91bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhy
b3cpOwogICAgIGVsc2UgeworICAgICAgICBpZiAoaXNQcml2YXRlRmllbGRBY2Nlc3MpIHsKKyAg
ICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
CisgICAgICAgICAgICBpZiAoYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQor
ICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHks
IHZhbHVlLCBzbG90KTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOyAgICAKKyAgICAgICAgfQor
CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7
CiAgICAgICAgIENvbW1vblNsb3dQYXRoczo6cHV0RGlyZWN0V2l0aFJlaWZ5KHZtLCBnbG9iYWxP
YmplY3QsIGJhc2VPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA4YWRlZTE2ZmI1
Yzk5MDBhN2JiMjhmNDcwMDc0NmQ3NGMyZmJmNDdjLi45YTc1ZjY1Y2VmYWY3OWU1MjA5OGU0OTZk
YzFkMDQwNmIyMjI2ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaApAQCAtNzIsNiArNzIsNyBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3B1dF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV9pZCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92
YWwpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9u
YW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50
X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92
YWwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2Rp
cmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDU3ZTM5ODJiODM5ZWFmOWVhOThjZjQ4MjkwZDYx
NDIzMjA0NGE1YTYuLjJjZWZiMzc3OTc2MGE1ZThhYTQ0YzA1YmQ5YjdjYzlkMGU5NDQwYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCkBAIC0xNTE5LDcgKzE1MTksNiBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX3B1dF9ieV9pZCwgT3BQdXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0
YWRhdAogCiBlbmQpCiAKLQogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAg
ICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHRQYXlsb2FkLCBzY3JhdGNoKQogICAgICAg
ICBnZXQobV9kc3QsIHNjcmF0Y2gpCkBAIC0xNTk3LDYgKzE1OTYsMjkgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKIAogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRl
X25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKHQ1LCB0MCkKKworICAgICMgU2xvdyBwYXRoIGlm
IHRoZSBwcml2YXRlIGZpZWxkIGlzIHN0YWxlCisgICAgZ2V0KG1fcHJvcGVydHksIHQwKQorICAg
IGxvYWRwIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5W3Q1XSwgdDEKKyAg
ICBicG5lcSB0MSwgdDAsIC5vcEdldFByaXZhdGVOYW1lU2xvdworCisgICAgZ2V0KG1fYmFzZSwg
dDApCisgICAgbG9hZGkgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURb
dDVdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxs
VGFnLCB0MywgLm9wR2V0UHJpdmF0ZU5hbWVTbG93KQorICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5h
bWU6Ok1ldGFkYXRhOjptX29mZnNldFt0NV0sIHQyCisgICAgYmluZXEgSlNDZWxsOjptX3N0cnVj
dHVyZUlEW3QzXSwgdDEsIC5vcEdldFByaXZhdGVOYW1lU2xvdworCisgICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MiwgdDMsIHQwLCB0MSkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQ
cml2YXRlTmFtZSwgbV9wcm9maWxlLCB0NSwgdDAsIHQxKQorICAgIHJldHVybih0MCwgdDEpCisK
Ky5vcEdldFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKKwogCiBtYWNybyBwdXRC
eVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgb3NyRXhpdFBvaW50KQogICAgIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfJW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA0ZTVhOGMy
YjlkN2E2YmE1NmQyOTZlYjgyNTQ5MTEyYTIwNDk1YjVmLi5mMjQyOWRmMmJlOTZlNjFiNWVjYTVh
YmJhM2UxYzhjMzg4NzI2ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMTU2NSw3ICsxNTY1LDYgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCi0KIGxsaW50T3BXaXRoTWV0YWRhdGEob3Bf
Z2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFk
YXRhLCByZXR1cm4pCiAgICAgbWFjcm8gZmluaXNoR2V0QnlWYWwocmVzdWx0LCBzY3JhdGNoKQog
ICAgICAgICBnZXQobV9kc3QsIHNjcmF0Y2gpCkBAIC0xNjQ5LDYgKzE2NDgsMjkgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWQKIAogZW5kKQogCitsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9w
cml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFkYXRhKHQyLCB0MCkKKworICAgICMgU2xvdyBw
YXRoIGlmIHRoZSBwcml2YXRlIGZpZWxkIGlzIHN0YWxlCisgICAgZ2V0KG1fcHJvcGVydHksIHQw
KQorICAgIGxvYWRwIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX3Byb3BlcnR5W3QyXSwg
dDEKKyAgICBicG5lcSB0MSwgdDAsIC5vcEdldFByaXZhdGVOYW1lU2xvdworCisgICAgZ2V0KG1f
YmFzZSwgdDApCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAu
b3BHZXRQcml2YXRlTmFtZVNsb3cpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qz
XSwgdDEKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJ
RFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCAub3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAg
IGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFkYXRhOjptX29mZnNldFt0Ml0sIHQxCisgICAg
bG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0MSwgdDMsIHQwKQorICAgIHZhbHVlUHJvZmls
ZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQyLCB0MCkKKyAgICByZXR1cm4odDApCisK
Ky5vcEdldFByaXZhdGVOYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9nZXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3BhdGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlW
YWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9w
V2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKaW5kZXggMWE0NDhjMjU1OGYyZjVmOThmZDI2MGUyZmVjNTMwOGEz
Njg1ZDZmYi4uYzQ0ODFhOTk4NTkyYzBlZjg3MmZhMjZlM2UzNzk5YjhmNDhjOWMyNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3Mo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBEb3RUeXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZW5kKQogICAgIHsKICAgICAgICAgaWYgKGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAgICAg
ICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0eSgpOwogICAgICAgICAKLSAgICAgICAgRG90QWNjZXNz
b3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRp
b24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5l
dyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVy
dHksIHR5cGUpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2
b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbm9kZS0+aXNBc3NpZ25tZW50TG9jYXRpb24oKTsK
ICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0ZUxvY2F0aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5v
ZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9kZS0+aXNQcml2YXRlTG9jYXRpb24oKTsKKyAg
ICB9CisKICAgICBib29sIGlzT2JqZWN0TGl0ZXJhbChjb25zdCBFeHByZXNzaW9uJiBub2RlKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGUtPmlzT2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQzOCwx
MiArMTQ0MywxMiBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2Fs
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbgogICAgIERvdEFjY2Vzc29yTm9k
ZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rp
b25DYWxsRG90Tm9kZSogbm9kZSA9IG51bGxwdHI7CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNT
dXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5jYWxsUHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFByaXZhdGVOYW1lKCkpKQotICAgICAgICBu
b2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAgIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RT
dGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CiAgICAgZWxzZSBpZiAoIXBy
ZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmll
cigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFt
ZSgpKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNh
dXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRoZSBieXRlY29kZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAg
ICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0LiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAgICAgICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNv
bHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVu
dGlmaWVyKCkgIT0gIlJlZmxlY3QiKQotICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJB
cmVuYSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9y
QXBwbHlDaGlsZERlcHRoKTsKKyAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEp
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5k
LCBjYWxsT3JBcHBseUNoaWxkRGVwdGgpOwogICAgIH0gZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdh
c1N1cGVyIAogICAgICAgICAmJiBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFt
ZXMtPmhhc093blByb3BlcnR5CiAgICAgICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUKQEAgLTE0NTYs
MTAgKzE0NjEsMTAgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICAgICAgLy8gPHJlc29s
dmVOb2RlPi5oYXNPd25Qcm9wZXJ0eSg8cmVzb2x2ZU5vZGU+KQogICAgICAgICAvLyBpLmU6CiAg
ICAgICAgIC8vIG8uaGFzT3duUHJvcGVydHkocCkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEhhc093blByb3BlcnR5
RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAg
ICB9CiAgICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBG
dW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVy
KCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5vZGUgPSBu
ZXcgKG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZv
dCgpLCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KQEAgLTE2
MDAsNyArMTYwNSw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwogCiAgICAgaWYg
KG9wID09IE9wZXJhdG9yOjpFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVu
YSkgQXNzaWduRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4cHIsIGV4cHJI
YXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAogICAgIGlmIChvcCA9
PSBPcGVyYXRvcjo6Q29hbGVzY2VFcSB8fCBvcCA9PSBPcGVyYXRvcjo6T3JFcSB8fCBvcCA9PSBP
cGVyYXRvcjo6QW5kRXEpIHsKICAgICAgICAgYXV0byogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVu
YSkgU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0
YXJ0LCBlbmQpOwpAQCAtMTYwOCw3ICsxNjEzLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIK
ICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5v
ZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMs
IGRpdm90LCBzdGFydCwgZW5kKTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAo
bV9wYXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVu
dHMsIGRpdm90LCBzdGFydCwgZW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhk
b3QtPmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA5MTcxNzg5NmU0NDQ4
NWJlYjc5NDA3MDgwYmUyNmY5YjMzOThhOWVkLi4zNjQ4YTQ0ODQzYjcyY2U5ODUxNzE3NTMwZmY1
MDZlYzZhOGI4MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAt
OTQ1LDEwICs5NDUsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4g
QUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJl
dHVybiBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5U
IDoga2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29sIGlzUHJpdmF0ZU5h
bWUgPSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKworICAg
IGJvb2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBpc0J1aWx0
aW5OYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiAg
ICAgYm9vbCBpc1dlbGxLbm93blN5bWJvbCA9IGZhbHNlOwotICAgIGlmIChpc1ByaXZhdGVOYW1l
KSB7CisgICAgaWYgKGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKG1fcGFyc2luZ0J1
aWx0aW5GdW5jdGlvbik7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnQg
PT0gJ0AnKSB7CkBAIC05NTYsOCArOTU3LDEyIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAg
ICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY29uc3Qg
TENoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKworICAgIGlmIChp
c1ByaXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgQVNTRVJUKGlzSWRlbnRTdGFy
dChtX2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNJZGVudFBh
cnQobV9jdXJyZW50KSkKICAgICAgICAgc2hpZnQoKTsKQEAgLTk2OSw3ICs5NzQsOCBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPExDaGFyPjo6cAogICAgIAogICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVy
IHx8IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxl
bmd0aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKLSAgICAgICAgaWYg
KG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgIGlk
ZW50ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsK
KyAgICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc0J1aWx0aW5OYW1lKSB7
CiAgICAgICAgICAgICBpZiAoaXNXZWxsS25vd25TeW1ib2wpCiAgICAgICAgICAgICAgICAgaWRl
bnQgPSAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woaWRlbnRpZmllclN0YXJ0LCBpZGVu
dGlmaWVyTGVuZ3RoKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC05OTEsMjAgKzk5NywyMSBAQCB0
ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9r
ZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlk
ZW50ID0gbnVsbHB0cjsKIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5M
ZW5ndGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVk
V29yZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgIGF1dG8gaWRlbnRUeXBlID0gaXNQcml2
YXRlTmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6
SWdub3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VS
VChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRv
a2VuTGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBK
U0M6Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwogICAgICAgICAgICAgQVNTRVJUKChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgfHwgIWVudHJ5KTsKICAgICAgICAgICAgIGlmICghZW50cnkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICAgICAgICAgIHJldHVybiBp
ZGVudFR5cGU7CiAgICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpT
VG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAodG9r
ZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsK
KyAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJp
Y3RNb2RlID8gdG9rZW4gOiBpZGVudFR5cGU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIElE
RU5UOworICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgIH0KIAotICAgIHJldHVybiBJREVO
VDsKKyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQogCiB0ZW1wbGF0ZSA8PgpAQCAtMTAyMSw3ICsx
MDI4LDEyIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOwogICAgIGNvbnN0IFVDaGFy
KiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisKKyAgICBpZiAoaXNQcml2
YXRlTmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIFVDaGFyIG9yQWxsQ2hhcnMgPSAwOwog
ICAgIEFTU0VSVChpc1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQobV9jdXJyZW50KSB8fCBVMTZf
SVNfU1VSUk9HQVRFKG1fY3VycmVudCkgfHwgbV9jdXJyZW50ID09ICdcXCcpOwogICAgIHdoaWxl
IChpc1NpbmdsZUNoYXJhY3RlcklkZW50UGFydChtX2N1cnJlbnQpKSB7CkBAIC0xMDQ1LDYgKzEw
NTcsOSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5M
SU5FIEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tl
bkRhdGEtPmlkZW50ID0gbnVsbHB0cjsKICAgICAKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAg
ICAgICAgcmV0dXJuIFBSSVZBVEVOQU1FOworCiAgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdu
b3JlUmVzZXJ2ZWRXb3JkcykpKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlm
aWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CkBAIC0xMDY5
LDYgKzEwODQsMTQgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRl
bnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICBBU1NFUlQobV9idWZm
ZXIxNi5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghdG9rZW5EYXRhLT5lc2NhcGVkKTsKIAorICAg
IGF1dG8gaWRlbnRDaGFyc1N0YXJ0ID0gaWRlbnRpZmllclN0YXJ0OworICAgIGJvb2wgaXNQcml2
YXRlTmFtZSA9ICppZGVudGlmaWVyU3RhcnQgPT0gJyMnOworICAgIGlmIChpc1ByaXZhdGVOYW1l
KQorICAgICAgICArK2lkZW50Q2hhcnNTdGFydDsKKworICAgIEpTVG9rZW5UeXBlIGlkZW50VHlw
ZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5UOworICAgIEFTU0VSVCghaXNQ
cml2YXRlTmFtZSB8fCBpZGVudGlmaWVyU3RhcnQgIT0gY3VycmVudFNvdXJjZVB0cigpKTsKKwog
ICAgIGF1dG8gZmlsbEJ1ZmZlciA9IFsmXSAoYm9vbCBpc1N0YXJ0ID0gZmFsc2UpIHsKICAgICAg
ICAgLy8gXHVYWFhYIHVuaWNvZGUgY2hhcmFjdGVycyBvciBTdXJyb2dhdGUgcGFpcnMuCiAgICAg
ICAgIGlmIChpZGVudGlmaWVyU3RhcnQgIT0gY3VycmVudFNvdXJjZVB0cigpKQpAQCAtMTA4OCw3
ICsxMTExLDcgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRp
ZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgICAgIGlmIChzaG91
bGRDcmVhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJlY29yZFVuaWNvZGVDb2RlUG9p
bnQoY2hhcmFjdGVyLnZhbHVlKCkpOwogICAgICAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3Vy
cmVudFNvdXJjZVB0cigpOwotICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICAgICAg
cmV0dXJuIGlkZW50VHlwZTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChVMTZfSVNfU1VS
Uk9HQVRFKG1fY3VycmVudCkpOwpAQCAtMTEwNCwxMCArMTEyNywxMCBAQCBKU1Rva2VuVHlwZSBM
ZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEq
IHRva2VuRGF0YQogICAgICAgICBzaGlmdCgpOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBp
ZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7Ci0gICAgICAgIHJldHVybiBJREVO
VDsKKyAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9OwogCi0gICAgSlNUb2tlblR5cGUg
dHlwZSA9IGZpbGxCdWZmZXIoaWRlbnRpZmllclN0YXJ0ID09IGN1cnJlbnRTb3VyY2VQdHIoKSk7
CisgICAgSlNUb2tlblR5cGUgdHlwZSA9IGZpbGxCdWZmZXIoaWRlbnRDaGFyc1N0YXJ0ID09IGN1
cnJlbnRTb3VyY2VQdHIoKSk7CiAgICAgaWYgKFVOTElLRUxZKHR5cGUgJiBFcnJvclRva2VuRmxh
ZykpCiAgICAgICAgIHJldHVybiB0eXBlOwogCkBAIC0xMTQwLDEzICsxMTYzLDEzIEBAIEpTVG9r
ZW5UeXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rv
a2VuRGF0YSogdG9rZW5EYXRhCiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVy
KTsKICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUu
ZW50cnkoKmlkZW50KTsKICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgIHJldHVybiBJ
REVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgIEpTVG9rZW5UeXBl
IHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwog
ICAgICAgICBpZiAoKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSkK
ICAgICAgICAgICAgIHJldHVybiBVTkVYUEVDVEVEX0VTQ0FQRV9FUlJPUlRPSzsKICAgICB9CiAK
LSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAogc3RhdGljIEFM
V0FZU19JTkxJTkUgYm9vbCBjaGFyYWN0ZXJSZXF1aXJlc1BhcnNlU3RyaW5nU2xvd0Nhc2UoTENo
YXIgY2hhcmFjdGVyKQpAQCAtMjQ3MywxNCArMjQ5NiwyMSBAQCBzdGFydDoKICAgICAgICAgbV9o
YXNMaW5lVGVybWluYXRvckJlZm9yZVRva2VuID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQg
PSBtX2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgY2FzZSBDaGFyYWN0ZXJIYXNoOgor
ICAgIGNhc2UgQ2hhcmFjdGVySGFzaDogewogICAgICAgICAvLyBIYXNoYmFuZyBpcyBvbmx5IHBl
cm1pdHRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHNvdXJjZSB0ZXh0LgotICAgICAgICBpZiAocGVl
aygxKSA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkgeworICAgICAgICBhdXRvIG5leHQgPSBw
ZWVrKDEpOworICAgICAgICBpZiAobmV4dCA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkgewog
ICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBn
b3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgLy8gT3RoZXJ3aXNl
LCBpdCBjb3VsZCBiZSBhIHZhbGlkIFByaXZhdGVOYW1lLgorICAgICAgICBpZiAoT3B0aW9uczo6
dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkgJiYgKGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRTdGFydChu
ZXh0KSB8fCBuZXh0ID09ICdcXCcpKSB7CisgICAgICAgICAgICBsZXhlckZsYWdzLnJlbW92ZShM
ZXhlckZsYWdzOjpEb250QnVpbGRLZXl3b3Jkcyk7CisgICAgICAgICAgICBnb3RvIHBhcnNlSWRl
bnQ7CisgICAgICAgIH0KICAgICAgICAgZ290byBpbnZhbGlkQ2hhcmFjdGVyOworICAgIH0KICAg
ICBjYXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CiAgICAgICAgIGlmIChtX3Bh
cnNpbmdCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDhk
MzIwZTdkOTRlNjRhOWQ3OWFhNTcxOTM0OTQ5NDE4NTVkMmJiNTguLmU3ZTg2ZDM1ODhmZDg0OGIz
Y2NlZjUyMWQ3NDRlODVlMGQyZTkxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC0zMjcsMTAgKzMyNywxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNj
ZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBpbmxpbmUgQmFzZURvdE5vZGU6
OkJhc2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlKQogICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgeworICAg
IH0KKworICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2Nh
dGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgewogICAgIH0KICAgICAKQEAgLTQxOCwxMSAr
NDI0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5j
dGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBGdW5j
dGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2Us
IGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90
LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAg
LCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CkBA
IC00MzcsMjAgKzQ0MSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JB
cHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JB
cHBseSkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVu
dCwgdHlwZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgICAgICAsIG1f
ZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JB
cHBseSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1l
bnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXpl
X3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQotICAgICAgICA6IEZ1bmN0aW9uQ2Fs
bERvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwg
ZGl2b3RFbmQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1
bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNp
emVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JB
cHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGU6Okhhc093blByb3BlcnR5
RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUq
IGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBG
dW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2Fs
bERvdE5vZGU6Okhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpCiAgICAgewogICAgIH0KIApAQCAtNzc3LDIxICs3ODEsMTcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXNzaWduRG90
Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2Nh
dGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQot
ICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAg
ICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5l
IFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIERvdFR5cGUgdHlwZSwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUp
CiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQs
IGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIp
CiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGJjZDllZjk4YmViNGJlOGVl
MWVhNjRiZWUzNDRjMTI4NWZiMDlkMjAuLjY0YTY2Zjc2NWM4ZjRkMjg0OTZkYTljZTZjNDRhYmIw
OGFhODgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0zMzUs
NyArMzM1LDcgQEAgYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9w
ZXJ0eShjb25zdCBJZGVudGlmaWVyJiBwcm9wTmFtZSkKIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6
c2hvdWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MoUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkK
IHsKICAgICB3aGlsZSAobGlzdCkgewotICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1
dGVkQ2xhc3NGaWVsZCgpKQorICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xh
c3NGaWVsZCgpIHx8IGxpc3QtPm1fbm9kZS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgbGlzdCA9IGxpc3QtPm1fbmV4dDsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNWQwY2FlZmJhY2ZlYWZiZjBkNmQ0Nzk4ZmFiMThj
MGUxMmUwMWRkMy4uYjRkMmE1MWMyZmE2NDVlNjlmYTc2MTkyYzkxNzAxOWI3MzFhYWRkNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTg1LDYgKzE4NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9y
JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBi
b29sIGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
dmlydHVhbCBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNMb2Nh
dGlvbigpOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWduUmVzb2x2ZU5vZGUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzE5LDcgKzcyMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0
YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDog
cHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBU
eXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29t
cHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIgfTsKKyAgICAgICAgZW51bSBU
eXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29t
cHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9Owog
ICAgICAgICBlbnVtIFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsK
IAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2Rl
KiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzM4
LDYgKzczOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgp
IGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygp
OyB9CiAgICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBp
c0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAg
ICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3Zl
cnJpZGRlbkJ5RHVwbGljYXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlICYgUHJpdmF0ZTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRD
bGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWRO
YW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9p
c092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc0OCw3ICs3NTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9h
c3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7CisgICAgICAgIHVuc2lnbmVkIG1f
dHlwZSA6IDc7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAg
ICAgICB1bnNpZ25lZCBtX3B1dFR5cGUgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwg
MiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xh
c3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CkBAIC03NzYs
NiArNzc4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqLCBWZWN0
b3I8SlNUZXh0UG9zaXRpb24+Kik7CiAKKyAgICAgICAgdm9pZCBlbWl0RGVjbGFyZVByaXZhdGVG
aWVsZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogc2NvcGUpOworCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHIpIGZpbmFsCiAgICAgICAg
IHsKQEAgLTgyMCw5ICs4MjQsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9z
dWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgRG90QWNjZXNzb3JO
b2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgeworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVOYW1lIH07
CisgICAgY2xhc3MgQmFzZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIEJhc2VEb3RO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiwgRG90VHlwZSk7CisKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2U7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KKyAgICAgICAgRG90VHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQorCisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNW
YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpOworCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOworICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX2lkZW50OworICAgICAgICBEb3RUeXBlIG1fdHlwZTsKKyAgICB9OworCisgICAgY2xh
c3MgRG90QWNjZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgRG90QWNjZXNzb3JO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiwgRG90VHlwZSk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTgzMSwxMCArODU2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAgICAgYm9vbCBp
c0xvY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlz
UHJpdmF0ZUxvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5
cGU6OlByaXZhdGVOYW1lOyB9CiAgICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFz
ZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwogCiAgICAgY2xh
c3MgU3ByZWFkRXhwcmVzc2lvbk5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CkBAIC05NDcsOSArOTcwLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9
OwogCi0gICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBGdW5jdGlv
bkNhbGxEb3ROb2RlIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOworICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1l
bnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwpAQCAtOTU3LDggKzk4MCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9u
Q2FsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9iYXNlOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAg
ICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CiAgICAgfTsKIApAQCAtOTk1LDcgKzEwMTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlIGZp
bmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KTsKKyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RU
eXBlLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
LCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gbnVsbHB0cikgZmluYWw7CkBAIC0xMDA0LDcgKzEwMjUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmluYWwg
OiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENhbGxP
ckFwcGx5KTsKKyAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlw
ZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwg
c2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwpAQCAtMTAxMyw3ICsxMDM0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUgZmlu
YWwgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBI
YXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgSGFzT3duUHJv
cGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSos
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwpAQCAtMTQ3NSwyOCArMTQ5NiwyNCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3JpZ2h0SGFzQXNzaWdubWVudHMgOiAxOwogICAgIH07
CiAKLSAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIGNsYXNzIEFzc2lnbkRvdE5v
ZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBE
b3RUeXBlLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gbnVsbHB0cikgZmluYWw7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFz
ZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fcmlnaHQ7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzOwogICAg
IH07CiAKLSAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBS
ZWFkTW9kaWZ5RG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwor
ICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIE9wZXJhdG9yLCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVs
bHB0cikgZmluYWw7CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmln
aHQ7CiAgICAgICAgIE9wZXJhdG9yIG1fb3BlcmF0b3I7CiAgICAgICAgIGJvb2wgbV9yaWdodEhh
c0Fzc2lnbm1lbnRzIDogMTsKQEAgLTIyOTMsNyArMjMxMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgRGVmaW5lRmllbGROb2RlIGZpbmFsIDogcHVibGljIFN0YXRlbWVudE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgTmFtZSwgQ29tcHV0ZWRO
YW1lIH07CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5hbWUsIFByaXZhdGVOYW1lLCBDb21w
dXRlZE5hbWUgfTsKICAgICAgICAgRGVmaW5lRmllbGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXIqLCBFeHByZXNzaW9uTm9kZSosIFR5cGUpOwogCiAgICAgcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBkNDJhYWMy
Mjg5NTM4MTBiZThiYzNmOWM2MTczY2M2ZTIxYmQ4OGQwLi42NGUyYWFmNWU1M2JmZTFhMzU4ZGQ2
ZDEzYTAzMzdhMTliMzljNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC04MjYsNiArODI2LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2wKICAgICAgICAg
VHJlZUV4cHJlc3Npb24gbm9kZSA9IDA7CiAgICAgICAgIGRlY2xhcmF0aW9ucysrOwogICAgICAg
ICBib29sIGhhc0luaXRpYWxpemVyID0gZmFsc2U7CisKKyAgICAgICAgZmFpbElmVHJ1ZShtYXRj
aChQUklWQVRFTkFNRSksICJDYW5ub3QgdXNlIGEgcHJpdmF0ZSBuYW1lIHRvIGRlY2xhcmUgYSB2
YXJpYWJsZSIpOwogICAgICAgICBpZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpKSB7CiAgICAgICAg
ICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJh
dGlvblR5cGU6OkxldERlY2xhcmF0aW9uIHx8IGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlv
blR5cGU6OkNvbnN0RGVjbGFyYXRpb24pLCAKICAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSAn
bGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4aWNhbERlY2xhcmF0aW9uIik7CkBA
IC0xMjg4LDYgKzEyOTAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0
cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZQogICAgICAgICAgICAg
aWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucykK
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1
ZVRvS2V5d29yZChkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShraW5kKSk7Cisg
ICAgICAgICAgICBpZiAoa2luZCAhPSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb1Bh
cmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChQUklWQVRFTkFNRSks
ICJDYW5ub3QgdXNlIGEgcHJpdmF0ZSBuYW1lIGFzIGEgIiwgZGVzdHJ1Y3R1cmluZ0tpbmRUb1Zh
cmlhYmxlS2luZE5hbWUoa2luZCkpOwogICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBl
Y3RlZCBhIHBhcmFtZXRlciBwYXR0ZXJuIG9yIGEgJyknIGluIHBhcmFtZXRlciBsaXN0Iik7CiAg
ICAgICAgIH0KICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChMRVQpICYmIChraW5kID09IERlc3Ry
dWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvTGV0IHx8IGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tp
bmQ6OkRlc3RydWN0dXJlVG9Db25zdCksICJDYW5ub3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZp
ZXIgbmFtZSBmb3IgYSBMZXhpY2FsRGVjbGFyYXRpb24iKTsKQEAgLTI5NTMsNiArMjk1NywxOSBA
QCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGNvbXB1dGVkUHJvcGVydHlO
YW1lLCAiQ2Fubm90IHBhcnNlIGNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAg
IGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDS0VULCAiXSIsICJlbmQiLCAiY29tcHV0
ZWQgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUFJJ
VkFURU5BTUU6IHsKKyAgICAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NG
aWVsZHMoKSk7CisgICAgICAgICAgICBKU1Rva2VuIHRva2VuID0gbV90b2tlbjsKKyAgICAgICAg
ICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICBmYWlsSWZUcnVl
KHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0YXRpYyBjbGFzcyBlbGVtZW50IGNh
bm5vdCBiZSBwcml2YXRlIik7CisgICAgICAgICAgICBmYWlsSWZUcnVlKGlzR2V0dGVyIHx8IGlz
U2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOwor
ICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAg
ICAgIGZhaWxJZlRydWUobWF0Y2hBbmRVcGRhdGUoT1BFTlBBUkVOLCB0b2tlbiksICJDYW5ub3Qg
cGFyc2UgY2xhc3MgbWV0aG9kIHdpdGggcHJpdmF0ZSBuYW1lIik7CisgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVOYW1lKCppZGVudCkgJiBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRl
Y2xhcmUgcHJpdmF0ZSBmaWVsZCB0d2ljZSIpOworICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19j
YXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykKICAgICAgICAgICAgICAg
ICBnb3RvIG5hbWVkS2V5d29yZDsKQEAgLTI5NjgsOCArMjk4NSwxMCBAQCBwYXJzZU1ldGhvZDoK
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0
aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6dXNlUHVibGljQ2xhc3NGaWVsZHMo
KSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5j
ZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlKSB7CiAgICAgICAg
ICAgICBBU1NFUlQoIWlzR2V0dGVyICYmICFpc1NldHRlcik7Ci0gICAgICAgICAgICBpZiAoaWRl
bnQpCisgICAgICAgICAgICBpZiAoaWRlbnQpIHsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUoKmlkZW50ID09IHByb3BlcnR5TmFtZXMuY29uc3RydWN0b3IsICJDYW5ub3QgZGVj
bGFyZSBjbGFzcyBmaWVsZCBuYW1lZCAnY29uc3RydWN0b3InIik7CisgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yUHJp
dmF0ZUZpZWxkLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBjbGFzcyBmaWVsZCBuYW1lZCAnI2Nv
bnN0cnVjdG9yJyIpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRQ
cm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlk
ZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihtX3ZtLCBudW1Db21wdXRlZEZp
ZWxkcysrKTsKQEAgLTMwMzMsNiArMzA1MiwxMCBAQCBwYXJzZU1ldGhvZDoKICAgICBpbmZvLmVu
ZE9mZnNldCA9IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQgLSAxOwogICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGEgY2xvc2luZyAnfScgYWZ0ZXIgYSBjbGFzcyBib2R5
Iik7CiAKKyAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpIHsKKyAgICAg
ICAgLy8gRmFpbCBpZiB0aGVyZSBhcmUgbm8gcGFyZW50IHByaXZhdGUgbmFtZSBzY29wZXMgYW5k
IGFueSB1c2VkLWJ1dC11bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMuCisgICAgICAgIHNlbWFudGlj
RmFpbElmRmFsc2UoY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUoKSwgIkNh
bm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzIik7CisgICAgfQogICAgIGF1
dG8gY2xhc3NFeHByZXNzaW9uID0gY29udGV4dC5jcmVhdGVDbGFzc0V4cHIobG9jYXRpb24sIGlu
Zm8sIGNsYXNzU2NvcGUtPmZpbmFsaXplTGV4aWNhbEVudmlyb25tZW50KCksIGNvbnN0cnVjdG9y
LCBwYXJlbnRDbGFzcywgY2xhc3NFbGVtZW50cyk7CiAgICAgcG9wU2NvcGUoY2xhc3NTY29wZSwg
VHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgcmV0dXJuIGNsYXNzRXhw
cmVzc2lvbjsKQEAgLTMwNTYsNiArMzA3OSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAg
ICAgICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJvcGVydHlOYW1lID0gMDsKICAgICAgICAg
RGVmaW5lRmllbGROb2RlOjpUeXBlIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6Ok5hbWU7
CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKKyAgICAgICAgY2FzZSBQUklWQVRF
TkFNRToKKyAgICAgICAgICAgIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6OlByaXZhdGVO
YW1lOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgU1RSSU5HOgogICAg
ICAgICBjYXNlIElERU5UOgogICAgICAgICBuYW1lZEtleXdvcmQ6CkBAIC0zMDk1LDYgKzMxMjEs
OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICBpZiAoY29uc3VtZShFUVVBTCkp
CiAgICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29u
dGV4dCk7CiAKKyAgICAgICAgaWYgKHR5cGUgPT0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2
YXRlTmFtZSkKKyAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwg
ZmFsc2UpOworCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgZGVmaW5lRmllbGQgPSBjb250ZXh0LmNy
ZWF0ZURlZmluZUZpZWxkKGZpZWxkTG9jYXRpb24sIGlkZW50LCBpbml0aWFsaXplciwgdHlwZSk7
CiAgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVsZW1lbnRzLCBkZWZpbmVG
aWVsZCk7CiAgICAgfQpAQCAtNDc5OCw2ICs0ODI3LDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBy
ZWNvcmRDYWxsT3JBcHBseURlcHRoKFBhcnNlclR5cGUqLCBWTSYsIE9wdGlvbmFsPHR5cGVuYW1l
IFBhCiB7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Citib29sIFBhcnNlcjxM
ZXhlclR5cGU+Ojp1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKK3sKKyAg
ICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmIChhdXRvIG1heWJlQ3VycmVudCA9IGZpbmRQcml2YXRlTmFtZVNjb3BlKCkp
IHsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9IG1heWJlQ3VycmVudC52YWx1ZSgpOworICAg
ICAgICBpZiAoIWN1cnJlbnQtPmhhc1ByaXZhdGVOYW1lKCppZGVudCkpCisgICAgICAgICAgICBj
dXJyZW50LT51c2VQcml2YXRlTmFtZSgqaWRlbnQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7
CkBAIC00OTk5LDggKzUwNDQsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAg
ICAgICAgICBtX3BhcnNlclN0YXRlLm5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAg
ICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kUG9z
aXRpb24oKTsKICAgICAgICAgICAgICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihUcmVlQnVpbGRl
cjo6RG9udEJ1aWxkS2V5d29yZHMgfCBMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OworICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9IERvdFR5cGU6Ok5hbWU7CisgICAg
ICAgICAgICAgICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1
cGVyLCAiQ2Fubm90IGFjY2VzcyBwcml2YXRlIG5hbWVzIGZyb20gc3VwZXIiKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKGN1cnJlbnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUo
KSA9PSBFdmFsQ29udGV4dFR5cGU6Okluc3RhbmNlRmllbGRFdmFsQ29udGV4dCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5oYXNQ
cml2YXRlTmFtZSgqaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUg
ZmllbGQgJyIsIGlkZW50LT5pbXBsKCksICInIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmRmFsc2UodXNlUHJpdmF0ZU5hbWUoaWRlbnQpLCAiQ2Fubm90IHJlZmVyZW5jZSBw
cml2YXRlIG5hbWVzIG91dHNpZGUgb2YgY2xhc3MiKTsKKyAgICAgICAgICAgICAgICAgICAgbV9w
YXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUgPSBpZGVudDsKKyAgICAgICAgICAgICAgICAgICAg
Y3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBmYWxzZSk7CisgICAgICAgICAgICAg
ICAgICAgIHR5cGUgPSBEb3RUeXBlOjpQcml2YXRlTmFtZTsKKyAgICAgICAgICAgICAgICAgICAg
bV90b2tlbi5tX3R5cGUgPSBJREVOVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgbWF0Y2hPckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUgYWZ0ZXIgIiwg
b3B0aW9uYWxDaGFpbkJhc2UgPyAiJz8uJyIgOiAiJy4nIik7Ci0gICAgICAgICAgICAgICAgYmFz
ZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKHN0YXJ0TG9jYXRpb24sIGJhc2UsIG1fdG9rZW4u
bV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kUG9z
aXRpb24oKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNz
KHN0YXJ0TG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIHRva2VuRW5kUG9zaXRpb24oKSk7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElL
RUxZKGJhc2VJc1N1cGVyICYmIGN1cnJlbnRTY29wZSgpLT5pc0Fycm93RnVuY3Rpb24oKSkpCiAg
ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPnNldElubmVyQXJyb3dG
dW5jdGlvblVzZXNTdXBlclByb3BlcnR5KCk7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAt
NTE5NSw2ICs1MjUzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIERFTEVURVRPS0VOOgogICAgICAgICAgICAgZmFpbElmVHJ1ZUlm
U3RyaWN0KGNvbnRleHQuaXNSZXNvbHZlKGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSB1bnF1YWxpZmll
ZCBwcm9wZXJ0eSAnIiwgbV9wYXJzZXJTdGF0ZS5sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBp
biBzdHJpY3QgbW9kZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNvbnRleHQu
aXNQcml2YXRlTG9jYXRpb24oZXhwciksICJDYW5ub3QgZGVsZXRlIHByaXZhdGUgZmllbGQgIiwg
bV9wYXJzZXJTdGF0ZS5sYXN0UHJpdmF0ZU5hbWUtPmltcGwoKSk7CiAgICAgICAgICAgICBleHBy
ID0gY29udGV4dC5tYWtlRGVsZXRlTm9kZShsb2NhdGlvbiwgZXhwciwgY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC01MjcxLDcgKzUzMzAsMTEgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4
cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9SVE9L
OgogICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tlbigp
LCAiJyIpOwogICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKKworICAgIGNhc2UgUFJJVkFU
RU5BTUU6CisgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBwcml2YXRlIG5hbWUgIiwgZ2V0
VG9rZW4oKSk7CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgQVdBSVQ6CiAgICAgY2FzZSBJ
REVOVDoKICAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIGlkZW50aWZpZXIgJyIsIGdldFRv
a2VuKCksICInIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA1NGIz
OTczMDllYTJmY2NmMzczMWZiZTk5OGRhYjU5OWM5YmJlMDE2Li4xZjVkOTMyYzNmNTc1ZWIyMDU1
NzQwNGU1NjQxODdmYmY3NWI5NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTI5MCw2ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0dlbmVyYXRvckJvdW5k
YXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvckJvdW5kYXJ5OyB9CiAgICAgYm9vbCBp
c0FzeW5jRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQXN5bmNGdW5jdGlvbjsgfQogICAg
IGJvb2wgaXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzQXN5bmNG
dW5jdGlvbkJvdW5kYXJ5OyB9CisgICAgYm9vbCBpc1ByaXZhdGVOYW1lU2NvcGUoKSBjb25zdCB7
IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogICAgIGJvb2wgaXNDbGFzc1Njb3BlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NsYXNzU2NvcGU7IH0KIAogICAgIGJvb2wgaGFzQXJndW1lbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNBcmd1bWVudHM7IH0KQEAgLTMwOSw2ICszMTAsMTMgQEAgcHVibGlj
OgogICAgICAgICBtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMgPSB0cnVlOwogICAgIH0KIAor
ICAgIHZvaWQgc2V0SXNQcml2YXRlTmFtZVNjb3BlKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBDdXJyZW50bHksIGlzUHJpdmF0ZU5hbWVTY29wZSBpcyBhbiBhbGlhcyBmb3IgaXNDbGFzc1Nj
b3BlIC0tLSBUaGlzIGlzIHBvdGVudGlhbGx5IG1pc2xlYWRpbmcsCisgICAgICAgIC8vIHBhcnRp
Y3VsYXJseSB3aGVuIHBhcnNpbmcgZGlyZWN0IGV2YWwgY29kZSB3aGljaCBvY2N1cnMgd2l0aGlu
IGEgY2xhc3MuCisgICAgICAgIHNldElzQ2xhc3NTY29wZSgpOworICAgIH0KKwogICAgIHZvaWQg
c2V0SXNDbGFzc1Njb3BlKCkKICAgICB7CiAgICAgICAgIG1faXNDbGFzc1Njb3BlID0gdHJ1ZTsK
QEAgLTQ3NSw3ICs0ODMsNDQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbGV4
aWNhbFZhcmlhYmxlcy5jb250YWlucyhpZGVudC5nZXQoKSk7CiAgICAgfQotICAgIAorCisgICAg
Ym9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuaGFzUHJpdmF0ZU5hbWUoaWRlbnQpOworICAg
IH0KKworICAgIHZvaWQgY29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhTY29wZSYgb3RoZXIp
CisgICAgeworICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMuY29weVVuZGVjbGFyZWRQcml2YXRl
TmFtZXNUbyhvdGhlci5tX2xleGljYWxWYXJpYWJsZXMpOworICAgIH0KKworICAgIGJvb2wgaGFz
VXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8gZW50cnkgOiBtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVzKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2VkKCkgJiYgIWVudHJ5LnZhbHVl
LmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZv
aWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAg
ICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgbV9sZXhpY2Fs
VmFyaWFibGVzLnVzZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAg
ICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFs
aWQ7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQ
cml2YXRlTmFtZShpZGVudCk7CisgICAgICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVE
ZWNsYXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaGFzRGVjbGFyZWRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiAgICAgewogICAgICAgICByZXR1cm4gaGFzRGVjbGFyZWRQYXJhbWV0ZXIoaWRlbnQuaW1wbCgp
KTsKQEAgLTkxMCw3ICs5NTUsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSwg
UGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRl
cnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9u
PiogPSBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFy
c2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzaW5nQ29u
dGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0
aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiA9IG51bGxwdHIs
IGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CiAKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhl
ci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2Vu
TG9jYXRpb24oKTsgfQpAQCAtMTE4Myw2ICsxMjI4LDQ0IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKICAgICB9CiAKKyAgICBPcHRpb25hbDxT
Y29wZVJlZj4gZmluZFByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
c2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNp
emUoKSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRl
TmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKG1fc2NvcGVTdGFj
a1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIHJldHVybiBTY29wZVJlZigm
bV9zY29wZVN0YWNrLCBpKTsKKworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0K
KworICAgIFNjb3BlUmVmIHByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KG1fc2NvcGVTdGFjay5zaXplKCkpOworICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNr
LnNpemUoKSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2
YXRlTmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgQVNTRVJUKG1fc2Nv
cGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSk7CisgICAgICAgIHJldHVybiBTY29wZVJl
ZigmbV9zY29wZVN0YWNrLCBpKTsKKyAgICB9CisKKyAgICBib29sIGNvcHlVbmRlY2xhcmVkUHJp
dmF0ZU5hbWVzVG9PdXRlclNjb3BlKCkKKyAgICB7CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQg
PSBwcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBjdXJyZW50LmluZGV4
KCkgLSAxOworICAgICAgICB3aGlsZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5h
bWVTY29wZSgpKQorICAgICAgICAgICAgaS0tOworCisgICAgICAgIGlmICghaSkKKyAgICAgICAg
ICAgIHJldHVybiAhY3VycmVudC0+aGFzVXNlZEJ1dFVuZGVjbGFyZWRQcml2YXRlTmFtZXMoKTsK
KworICAgICAgICBjdXJyZW50LT5jb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKG1fc2NvcGVT
dGFja1tpXSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIFNjb3BlUmVmIGNs
b3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCkKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKQEAgLTE0NjIsNiArMTU0
NSwxNiBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV90eXBlID09
IGV4cGVjdGVkOwogICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtYXRjaEFuZFVwZGF0
ZShKU1Rva2VuVHlwZSBleHBlY3RlZCwgY29uc3QgSlNUb2tlbiYgdG9rZW4pCisgICAgeworICAg
ICAgICBpZiAobWF0Y2goZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBtX3Rva2VuID0gdG9rZW47
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQ29udGV4dHVh
bEtleXdvcmQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7CkBAIC0xNzE1LDYg
KzE4MDgsOCBAQCBwcml2YXRlOgogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNTaW1wbGVBc3NpZ25tZW50VGFyZ2V0KFRyZWVCdWlsZGVyJiwg
VHJlZUV4cHJlc3Npb24pOwogCisgICAgQUxXQVlTX0lOTElORSBib29sIHVzZVByaXZhdGVOYW1l
KGNvbnN0IElkZW50aWZpZXIqKTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50IGlzQmluYXJ5T3Bl
cmF0b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNTZW1pY29sb24oKTsK
ICAgICAKQEAgLTE4MDksNiArMTkwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZ1bmN0aW9uUGFy
c2VQaGFzZSBmdW5jdGlvblBhcnNlUGhhc2UgeyBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkgfTsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdElkZW50aWZpZXIgeyBudWxscHRyIH07CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RGdW5jdGlvbk5hbWUgeyBudWxscHRyIH07Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RQcml2YXRlTmFtZSB7IG51bGxwdHIgfTsKICAg
ICAgICAgYm9vbCBhbGxvd0F3YWl0IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUGFyc2luZ0Ns
YXNzRmllbGRJbml0aWFsaXplciB7IGZhbHNlIH07CiAgICAgfTsKQEAgLTE5NTksNyArMjA1NSw3
IEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxs
ZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJzaW5nQ29udGV4dCBwYXJzaW5n
Q29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBv
c2l0aW9uLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRp
b25zKQorc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNpbmdDb250ZXh0LCBPcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaLCBjb25zdCBWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKQogewogICAgIGludCBlcnJMaW5l
OwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xOTc0LDYgKzIwNzAsMTEgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJy
b3IsIGNvbnN0IEkKICAgICBBU1NFUlQobV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgPiBPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpKTsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fc291
cmNlLT5zdGFydENvbHVtbigpLnplcm9CYXNlZEludCgpOwogCisgICAgaWYgKGlzRXZhbE5vZGU8
UGFyc2VkTm9kZT4oKSAmJiB2YXJpYWJsZXNVbmRlclREWiAmJiB2YXJpYWJsZXNVbmRlclREWi0+
cHJpdmF0ZU5hbWVzU2l6ZSgpKSB7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5zZXRJc1ByaXZh
dGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdmFyaWFibGVzVW5kZXJURFotPmNvcHlQcml2YXRlTmFt
ZXNUbyhjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZhcmlhYmxlcygpKTsKKyAgICB9CisKICAgICBh
dXRvIHBhcnNlUmVzdWx0ID0gcGFyc2VJbm5lcihjYWxsZWVOYW1lLCBwYXJzZU1vZGUsIHBhcnNp
bmdDb250ZXh0LCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBpbnN0
YW5jZUZpZWxkTG9jYXRpb25zKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0gbV9sZXhlci0+bGlu
ZU51bWJlcigpOwpAQCAtMjA1OCw2ICsyMTU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHBhcnNlKAogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUgPSBE
ZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsCiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSogZGVi
dWdnZXJQYXJzZURhdGEgPSBudWxscHRyLAorICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQq
IHZhcmlhYmxlc1VuZGVyVERaID0gbnVsbHB0ciwKICAgICBjb25zdCBWZWN0b3I8SlNUZXh0UG9z
aXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gbnVsbHB0ciwKICAgICBib29sIGlzSW5z
aWRlT3JkaW5hcnlGdW5jdGlvbiA9IGZhbHNlKQogewpAQCAtMjA3MCw3ICsyMTcyLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJz
ZWROb2RlPiByZXN1bHQ7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhC
aXQoKSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5k
aW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENv
bnRleHRUeXBlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVi
dWdnZXJQYXJzZURhdGEsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7Ci0gICAgICAgIHJlc3Vs
dCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2
YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250
ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAg
ICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNl
TW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQ
YXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwg
aW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIu
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0g
SlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbikgewpAQCAtMjA4Myw3ICsyMTg1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIH0gZWxzZSB7CiAgICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rp
b24gPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzJ3Mgc3BlY2lh
bCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKICAgICAg
ICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENv
bnN0cnVjdG9yS2luZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNF
dmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRh
LCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFy
c2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWRO
b2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwg
V1RGOjpudWxsb3B0LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0g
cGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5v
ZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6
OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRM
b2NhdGlvbnMpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAg
ICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3Jl
TGFzdE5ld2xpbmUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAppbmRleCBkZTBlYmVhZjg1ZmQ3MTIzNzE3Zjg3NzExMjdmNzE5MjNmZmU2NzQ4
Li43YjNjMWVjM2I3ZjZhNmIxMWJmYzQ1ZjRiYzkxZDA0ODEyZjRjZDJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTExNCw2ICsxMTQsNyBAQCBl
bnVtIEpTVG9rZW5UeXBlIHsKICAgICBET1VCTEUsCiAgICAgQklHSU5ULAogICAgIElERU5ULAor
ICAgIFBSSVZBVEVOQU1FLAogICAgIFNUUklORywKICAgICBURU1QTEFURSwKICAgICBSRUdFWFAs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IGFh
YjBiNzRkYWE4OTA2NDQ2ODBiY2JkMmYwODhlYWJkY2E5M2RkMDYuLjQzZjVhOTJlYzc2YmI2NWI4
NzZkODU4N2QxOTQ0MTJhMmEwNzM5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVz
b2x2ZUV2YWxFeHByLCBSZXNvbHZlRXhwciwgSW50ZWdlckV4cHIsIERvdWJsZUV4cHIsIFN0cmlu
Z0V4cHIsIEJpZ0ludEV4cHIsCiAgICAgICAgIFRoaXNFeHByLCBOdWxsRXhwciwgQm9vbEV4cHIs
IFJlZ0V4cEV4cHIsIE9iamVjdExpdGVyYWxFeHByLAogICAgICAgICBGdW5jdGlvbkV4cHIsIENs
YXNzRXhwciwgU3VwZXJFeHByLCBJbXBvcnRFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2Fs
bEV4cHIsCi0gICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJp
bmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sCisgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RF
eHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsIE9wdGlvbmFsQ2hhaW4sIFByaXZhdGVEb3RFeHBy
LAogICAgICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZFeHByLAog
ICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByLCBCaW5kaW5nRGVzdHJ1Y3R1cmlu
ZywgUmVzdFBhcmFtZXRlciwKICAgICAgICAgQXJyYXlEZXN0cnVjdHVyaW5nLCBPYmplY3REZXN0
cnVjdHVyaW5nLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJs
aWM6CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gTnVsbEV4cHI7IH0KICAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3Mo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBj
b25zdCBJZGVudGlmaWVyKiwgRG90VHlwZSB0eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiB0
eXBlID09IERvdFR5cGU6OlByaXZhdGVOYW1lID8gUHJpdmF0ZURvdEV4cHIgOiBEb3RFeHByOyB9
CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQp
IHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5n
KCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC00MDMsNyArNDAzLDEyIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaXNMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlwZSA9PSBEb3RFeHByIHx8IHR5
cGUgPT0gQnJhY2tldEV4cHI7CisgICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHByIHx8
IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IFByaXZhdGVEb3RFeHByIHx8IHR5cGUgPT0gQnJh
Y2tldEV4cHI7CisgICAgfQorCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbihFeHByZXNzaW9u
VHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUHJpdmF0ZURvdEV4cHI7
CiAgICAgfQogCiAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0
eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5jcHAKaW5kZXggOGU2OTE1MWM3YjZjYjMxMTFiMGZlNzdjZTg5NzMwNzQwNjJmNWY1
YS4uMWY1NzA4OGEzNGM2NjNjYTcwMmY3N2Q0Nzc0MDY5NmUyNjc2ODhlZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBA
IC0yOSw2ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorVmFyaWFibGVFbnZpcm9ubWVu
dCYgVmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmIG90aGVyKQoreworICAgIG1fbWFwID0gb3RoZXIubV9tYXA7CisgICAgbV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZCA9IG90aGVyLm1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0
YS5yZXNldCgpOworICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRh
ID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigqb3RoZXIu
bV9yYXJlRGF0YSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiB2b2lkIFZhcmlhYmxlRW52aXJv
bm1lbnQ6Om1hcmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX21h
cC5maW5kKGlkZW50aWZpZXIpOwpAQCAtODAsNiArOTAsNyBAQCB2b2lkIFZhcmlhYmxlRW52aXJv
bm1lbnQ6OnN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCiB7CiAgICAgbV9tYXAuc3dh
cChvdGhlci5tX21hcCk7CiAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG90aGVyLm1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5zd2FwKG90aGVyLm1fcmFyZURhdGEp
OwogfQogCiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKQEAgLTEwMCw3ICsx
MTEsNyBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIDogbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZChlbnYuaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSkKIHsKICAgICBWZWN0b3I8c3RkOjpwYWly
PFVuaXF1ZWRTdHJpbmdJbXBsKiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PiwgMzI+IHNvcnRl
ZEVudHJpZXM7Ci0gICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5z
aXplKCkpOworICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYubWFw
U2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnYpCiAgICAgICAgIHNvcnRlZEVudHJp
ZXMuYXBwZW5kKHsgcGFpci5rZXkuZ2V0KCksIHBhaXIudmFsdWUgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNTMy
ZDE0NmVmZDFmY2FlNTMyNjllNzVkZjZmNWZkYmVhMTk5MmM1Mi4uMTc3Zjg4MTViYzNhMzdlNGVh
ZDZiZDYwMWFjY2Y0ZmFjMDEzZjIwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1
ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKQEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3Rp
bmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAt
NTMsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rp
b24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJ
c1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAt
NzQsNyArNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8
PCA2LAogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9
IDEgPDwgOCwKLSAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDkK
KyAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCisgICAgICAg
IElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAogICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsg
MCB9OwogfTsKQEAgLTgzLDE1ICs4OCw1NSBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PgogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCitz
dHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CitwdWJsaWM6CisgICAgUHJpdmF0ZU5hbWVFbnRyeSh1
aW50MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQorCisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNEZWNsYXJlZDsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9i
aXRzIHw9IElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkg
eyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQorCisgICAgdWludDE2X3QgYml0cygpIGNvbnN0IHsg
cmV0dXJuIG1fYml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1l
RW50cnkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYml0cyA9PSBvdGhl
ci5tX2JpdHM7CisgICAgfQorCisgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAg
IElzVXNlZCA9IDEgPDwgMCwKKyAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKKyAgICB9Owor
Citwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKK307CisKK3N0cnVjdCBQcml2
YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4gewor
ICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKK307CisKIGNs
YXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8
UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lczsKIHB1YmxpYzoKLSAg
ICBWYXJpYWJsZUVudmlyb25tZW50KCkgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVF
bnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jikg
PSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShWYXJpYWJsZUVu
dmlyb25tZW50JiYpID0gZGVmYXVsdDsKKyAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgeyB9Cisg
ICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpCisgICAg
ICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFy
ZURhdGEoV1RGTW92ZShvdGhlci5tX3JhcmVEYXRhKSkKKyAgICB7CisgICAgfQorICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCisgICAgICAg
IDogbV9tYXAob3RoZXIubV9tYXApCisgICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChv
dGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFyZURhdGEob3RoZXIu
bV9yYXJlRGF0YSA/IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4oKm90aGVyLm1fcmFyZURhdGEpIDogbnVsbHB0cikKKyAgICB7CisgICAgfQorICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhl
cik7CiAKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBt
X21hcC5iZWdpbigpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGVuZCgpIHsg
cmV0dXJuIG1fbWFwLmVuZCgpOyB9CkBAIC05OSw3ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuYWRkKGlk
ZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0
dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2YXRlTmFt
ZXNTaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBjb25zdCB7
IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1
cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
cmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0
dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpp
dGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
IHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KQEAgLTExNiwxMSArMTYyLDEwNCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9tYXAuc2l6ZSgpOyB9CiAKKyAgICB1c2luZyBQcml2YXRlTmFtZXNSYW5nZSA9IFdU
Rjo6SXRlcmF0b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKKworICAgIEFMV0FZU19J
TkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwo
KSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0K
KworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9
IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0
SXNEZWNsYXJlZCgpOworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnku
c2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIHJl
dHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworICAgIH0KKyAgICB2b2lkIHVzZVBy
aXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVy
LmdldCgpKTsKKyAgICAgICAgbWV0YS5zZXRJc1VzZWQoKTsKKyAgICAgICAgaWYgKG1ldGEuaXNE
ZWNsYXJlZCgpKQorICAgICAgICAgICAgZmluZChpZGVudGlmaWVyKS0+dmFsdWUuc2V0SXNDYXB0
dXJlZCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVzUmFuZ2UgcHJp
dmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JS
YW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tW
YWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCk7CisgICAg
ICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5i
ZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBwcml2YXRlTmFtZXNTaXplKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFp
bnMoaWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
b3B5UHJpdmF0ZU5hbWVzVG8oVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICghb3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG90aGVyLm1fcmFyZURhdGEgPSBX
VEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAg
IGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50
cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LnZhbHVl
LmlzVXNlZCgpICYmIGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkpCisgICAgICAgICAgICAgICAg
ICAgIG90aGVyLm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChlbnRyeS5rZXksIGVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKFZhcmlhYmxlRW52aXJvbm1l
bnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQgYnkgdGhlIFBhcnNlciB0byB0cmFu
c2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFuCisgICAgICAgIC8vIGlu
bmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBvbmUsIGluIGNhc2UgYSBQ
TkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgY29kZSB0aGFuIGl0
IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFsdWUuaXNEZWNsYXJlZCgp
KQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRPckFkZFByaXZhdGVOYW1lKGVudHJ5Lmtl
eS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAgICAgICAgUmFyZURhdGEoUmFyZURh
dGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2YXRlTmFtZXMoV1RGTW92ZShvdGhlci5t
X3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBSYXJlRGF0YShj
b25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUmFyZURhdGEmIG9wZXJhdG9yPShj
b25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUHJpdmF0ZU5hbWVzIG1fcHJpdmF0
ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAgICAgYm9vbCBtX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVOYW1lRW50cnkmIGdldE9yQWRkUHJp
dmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisgICAgeworICAgICAgICBpZiAoIW1f
cmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5hbWVFbnRyeSgwKSkuaXRlcmF0b3It
PnZhbHVlOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxWYXJpYWJsZUVudmlyb25tZW50
OjpSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENvbXBhY3RWYXJpYWJsZUVudmly
b25tZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
ZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNw
cAppbmRleCA2MDFkMDE5ZGY5M2Y4ZjJmOGNjNmMxZjU5MWE5NDE1NDhkYzA3ZmNiLi41ZWNlNmRh
MTZiMDYwNzMyOTVhNGE2YjY2ODFiOWVmZTU4NGQ2Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC04NTYsNiArODU2LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW5jb2RlKGVuY29kZXIsIHsgKnNvdXJjZSB9
KTsKICAgICB9CisKKyAgICBTb3VyY2VUeXBlPFQ+KiBkZWNvZGVBc1B0cihEZWNvZGVyJiBkZWNv
ZGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXRoaXMtPmlzRW1wdHko
KSk7CisgICAgICAgIHJldHVybiB0aGlzLT50ZW1wbGF0ZSBidWZmZXI8VD4oKS0+ZGVjb2RlKGRl
Y29kZXIpOworICAgIH0KIH07CiAKIGNsYXNzIENhY2hlZFNpbXBsZUp1bXBUYWJsZSA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IHsKQEAgLTEwMDMsMjMgKzEw
MDksNDUgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lZWRzQ2xhc3NGaWVsZEluaXRpYWxp
emVyIDogMTsKIH07CiAKK2NsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YSA6
IHB1YmxpYyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IHsKK3B1
YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVO
YW1lcy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKwor
ICAgIHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJh
cmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRl
Y29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRl
OgorICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBs
LCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmluZ0lt
cGw+PiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJhaXRzPiBtX3By
aXZhdGVOYW1lczsKK307CisKIGNsYXNzIENhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJs
aWMgQ2FjaGVkT2JqZWN0PFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoKICAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnYp
CiAgICAgewogICAgICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gZW52Lm1faXNFdmVyeXRo
aW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmVuY29kZShlbmNvZGVyLCBlbnYubV9tYXApOwor
ICAgICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBlbnYubV9yYXJlRGF0YS5nZXQoKSk7
CiAgICAgfQogCiAgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFibGVFbnZp
cm9ubWVudCYgZW52KSBjb25zdAogICAgIHsKICAgICAgICAgZW52Lm1faXNFdmVyeXRoaW5nQ2Fw
dHVyZWQgPSBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21hcC5kZWNvZGUoZGVj
b2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgZW52Lm1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZp
cm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVj
b2RlciwgKmVudi5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQogICAgIH0KIAogcHJpdmF0ZToKICAg
ICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRS
ZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGwsIFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBh
Y2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1wbD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50
cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4+LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnlIYXNoVHJhaXRzPiBtX21hcDsKKyAgICBDYWNo
ZWRQdHI8Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsK
IAogY2xhc3MgQ2FjaGVkQ29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50PiB7CkBAIC0xMTQ3LDYgKzExNzUsMjIg
QEAgcHJpdmF0ZToKICAgICBpbnRwdHJfdCBtX2JpdHM7CiB9OwogCitjbGFzcyBDYWNoZWRTeW1i
b2xUYWJsZVJhcmVEYXRhIDogcHVibGljIENhY2hlZE9iamVjdDxTeW1ib2xUYWJsZTo6U3ltYm9s
VGFibGVSYXJlRGF0YT4geworcHVibGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRhJiByYXJlRGF0YSkKKyAg
ICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3By
aXZhdGVOYW1lcyk7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2Rlciwg
U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsK
KyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVjb2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0
ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ2FjaGVkSGFzaFNldDxDYWNoZWRSZWZQ
dHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gbV9wcml2YXRl
TmFtZXM7Cit9OworCiBjbGFzcyBDYWNoZWRTeW1ib2xUYWJsZSA6IHB1YmxpYyBDYWNoZWRPYmpl
Y3Q8U3ltYm9sVGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpCkBAIC0xMTU3LDYgKzEyMDEsNyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fbmVzdGVkTGV4aWNhbFNjb3BlID0gc3ltYm9sVGFibGUubV9u
ZXN0ZWRMZXhpY2FsU2NvcGU7CiAgICAgICAgIG1fc2NvcGVUeXBlID0gc3ltYm9sVGFibGUubV9z
Y29wZVR5cGU7CiAgICAgICAgIG1fYXJndW1lbnRzLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJs
ZS5tX2FyZ3VtZW50cy5nZXQoKSk7CisgICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIs
IHN5bWJvbFRhYmxlLm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIFN5bWJvbFRhYmxl
KiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKQEAgLTExNzAsNiArMTIxNSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIFNjb3BlZEFyZ3VtZW50c1RhYmxlKiBzY29wZWRBcmd1bWVudHNUYWJs
ZSA9IG1fYXJndW1lbnRzLmRlY29kZShkZWNvZGVyKTsKICAgICAgICAgaWYgKHNjb3BlZEFyZ3Vt
ZW50c1RhYmxlKQogICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fYXJndW1lbnRzLnNldChkZWNv
ZGVyLnZtKCksIHN5bWJvbFRhYmxlLCBzY29wZWRBcmd1bWVudHNUYWJsZSk7CisgICAgICAgIGlm
ICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5tX3Jh
cmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJhcmVEYXRh
PigpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICpzeW1ib2xUYWJs
ZS0+bV9yYXJlRGF0YSk7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gc3ltYm9sVGFibGU7
CiAgICAgfQogCkBAIC0xMTgwLDYgKzEyMzAsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
bmVzdGVkTGV4aWNhbFNjb3BlIDogMTsKICAgICB1bnNpZ25lZCBtX3Njb3BlVHlwZSA6IDM7CiAg
ICAgQ2FjaGVkUHRyPENhY2hlZFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBtX2FyZ3VtZW50czsKKyAg
ICBDYWNoZWRQdHI8Q2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAK
IGNsYXNzIENhY2hlZEpTVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZUNhY2hlLmNwcAppbmRleCBiNGI3MTYzMzczNGUzY2FkOTk1N2U3Y2RmZGNkYzczMzJkZTg5ZWMz
Li5hZmRjYzkwMjkxMzczZjUwZDA1NzBlMzhjOGQ5MzVhMGFiZmM5YzliIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgVW5s
aW5rZWRDb2RlQmxvY2tUeXBlKiBnZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHMKICAgICB0eXBlZGVmIHR5cGVuYW1lIENhY2hlVHlwZXM8VW5s
aW5rZWRDb2RlQmxvY2tUeXBlPjo6Um9vdE5vZGUgUm9vdE5vZGU7CiAgICAgYm9vbCBpc0luc2lk
ZU9yZGluYXJ5RnVuY3Rpb24gPSBleGVjdXRhYmxlICYmIGV4ZWN1dGFibGUtPmlzSW5zaWRlT3Jk
aW5hcnlGdW5jdGlvbigpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUg
PSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQ
YXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2Fj
aGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVk
Q29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlwZSwgbnVsbHB0ciwgbnVsbHB0ciwgaXNJbnNpZGVP
cmRpbmFyeUZ1bmN0aW9uKTsKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNo
ZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRD
b250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCB2YXJpYWJsZXNVbmRlclREWiwg
bnVsbHB0ciwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKICAgICBpZiAoIXJvb3ROb2RlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCmluZGV4IDlhMzAwZTczNjc4ODkyYjA1NDY4
OTA1ZWVlNmE2NDAxYzk5OTU4NjMuLjM1NDQxNWY5NTI4YWRiYjljMmVkNWUxNWMzNTI1NzAwNTU3
NjAzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZGVmaW5l
IElOSVRJQUxJWkVfS0VZV09SRChuYW1lKSAsIG5hbWUjI0tleXdvcmQoSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgI25hbWUpKQogI2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfTkFNRShuYW1l
KSAsIG5hbWUjI1ByaXZhdGVOYW1lKG1fYnVpbHRpbk5hbWVzLT5uYW1lIyNQcml2YXRlTmFtZSgp
KQogI2RlZmluZSBJTklUSUFMSVpFX1NZTUJPTChuYW1lKSAsIG5hbWUjI1N5bWJvbChtX2J1aWx0
aW5OYW1lcy0+bmFtZSMjU3ltYm9sKCkpCisjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9GSUVM
RF9OQU1FKG5hbWUpICwgbmFtZSMjUHJpdmF0ZUZpZWxkKElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICIjIiAjbmFtZSkpCiAKIENvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhW
TSYgdm0pCiAgICAgOiBudWxsSWRlbnRpZmllcigpCkBAIC00Myw2ICs0NCw3IEBAIENvbW1vbklk
ZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSYgdm0pCiAgICAgSlNDX0NPTU1PTl9JREVO
VElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQogICAgIEpTQ19DT01NT05f
SURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfUFJPUEVSVFlfTkFNRSkK
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJP
TChJTklUSUFMSVpFX1NZTUJPTCkKKyAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJ
VkFURV9GSUVMRChJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXgg
OGRiYzZkN2FjMTg3YjcxOWQwNDUyNjU3MDI4MDk2MTYyMjlkNThkYy4uODU1OGJhYjkwY2U1ZDhi
YjNkZDEwOGUwODQ1ZjhhNTI5NGY0NWY0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMDksNiArMjA5LDkgQEAKICAgICBt
YWNybyh3cml0YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAKKyNkZWZpbmUgSlNDX0NPTU1PTl9J
REVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQobWFjcm8pIFwKKyAgICBtYWNybyhjb25zdHJ1
Y3RvcikKKwogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfS0VZV09SRChtYWNy
bykgXAogICAgIG1hY3JvKGF3YWl0KSBcCiAgICAgbWFjcm8oYnJlYWspIFwKQEAgLTMyMyw2ICsz
MjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJ
VkFURV9XRUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVD
TEFSRV9QUklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAogCisjZGVmaW5lIEpTQ19JREVO
VElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmll
ciBuYW1lIyNQcml2YXRlRmllbGQ7CisgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFD
SF9QUklWQVRFX0ZJRUxEKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9C
QUwpCisjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTAor
CiAgICAgICAgIC8vIENhbGxlcnMgb2YgdGhpcyBtZXRob2Qgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0
IGlkZW50aWZpZXJzIGdpdmVuIHRvIHRoaXMgbWV0aG9kIAogICAgICAgICAvLyBzdXJ2aXZlIHRo
ZSBsaWZldGltZSBvZiBDb21tb25JZGVudGlmaWVycyBhbmQgcmVsYXRlZCBWTS4KICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRFeHRlcm5hbE5hbWUoY29uc3QgSWRlbnRpZmll
ciYgcHVibGljTmFtZSwgY29uc3QgSWRlbnRpZmllciYgcHJpdmF0ZU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTM5
YzEzNzU3NTZmY2Q1OWYyNjQ1YjAwODE0YTYwYTg2OGZiMTlhYy4uZTZkN2E5NmVlOTJlNDM4ZmM5
YzBhZDBkOTE4ZDhiYzhmNjVjNjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xMzMxLDYgKzEzMzEsMjggQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgIFJFVFVSTl9QUk9G
SUxFRChiYXNlVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpKTsKIH0KIAor
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpCit7CisgICAgQkVHSU4o
KTsKKworICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1fYmFzZSkuanNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gR0VUX0MoYnl0ZWNvZGUubV9wcm9wZXJ0eSkuanNWYWx1
ZSgpOworICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7CisKKyAgICBiYXNlVmFsdWUu
cmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxP
YmplY3QpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIEFTU0VSVChwcm9wZXJ0eS5pc1By
aXZhdGVOYW1lKCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOworICAgIGFzT2JqZWN0
KGJhc2VWYWx1ZSktPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90
KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKworICAgIFJFVFVSTl9QUk9GSUxFRChzbG90Lmdl
dFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHkpKTsKK30KKwogU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggYmUzNzRhMGU2
MjZmMmRmODMzMGJhYzQ5MjM4OTYwODFjNGFhNDM5ZC4uYTc2YmYzZWFiZTRhMGY1ZTQ0NzUwZjcx
NjUwMzk3ZGNkZDk4NmQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKQEAgLTI3NSw2ICsyNzUsNyBAQCBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9hc3luY19nZW5lcmF0b3IpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfcmVzdCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9wcml2YXRlX25hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRf
YnlfaWRfd2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5
X3ZhbF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWZpbmVf
ZGF0YV9wcm9wZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDhjOWNhMDM0NzYwNDk2YjBhNmFlYWYwZjgyNmZiMzY0
NjYzZGMwZDcuLjQxNGU3YmRmNzdhYjRmYzc2NGI1NjVkZjZmMWJkNGEwZDY0YjMwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CkBAIC0zMjQsNiArMzI0LDE2IEBAIEpTT2JqZWN0KiBjcmVhdGVURFpFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9i
YWxPYmplY3QsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAK
K0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIGludmFsaWQgcHJpdmF0ZSBmaWVsZCIpLCBkZWZh
dWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKK30KKworSlNPYmplY3QqIGNyZWF0ZVJl
ZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fu
bm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVPdXRPZk1l
bW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCmluZGV4IGU5YTUyMzFmYzU2NGIwN2RkMzlkMWNhYzE0
NjkwOTVhM2RiZDQxMmMuLmUxYjdlMDIxMThkNDhiNWY1NDQ4NzQ1YmQzNjRhMmU5Mzk5NzNiNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmgKQEAgLTUzLDYgKzUzLDggQEAgSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFy
YW1ldGVyRXJyb3JIYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb24oSlNHbG8KIEpTT2JqZWN0KiBj
cmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNP
YmplY3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiBKU09iamVjdCogY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IFN0cmluZyYpOworSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRl
TmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CitKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJp
dmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCopOwogU3RyaW5nIGVycm9yRGVzY3JpcHRpb25G
b3JWYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCiBKU19FWFBPUlRfUFJJVkFURSBF
eGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2Nv
cGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBjZWE4Zjg0YmNiOTI3ODdhZjcwZTgzYWFkZTIzZjA0Mzc1Y2IwODllLi42YmFk
YzY3MDg2ZTdjMmE1OWQyNzBmYzg2ZDMxMmEzZGUwNThmNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yOTQsNiArMjk0LDEy
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGhhc093bkxlbmd0aFByb3Bl
cnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRhcmdldC0+aGFzT3duUHJvcGVydHkoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpKSkpOwogfQogCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUodm0sIFBy
aXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwogI2lmIEFT
U0VSVF9FTkFCTEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhc3NlcnRD
YWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ewpAQCAtMTIyNSw2ICsxMjMxLDExIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dl
ck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAg
ICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFs
T2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3Jt
YXQpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBQcml2YXRlU3ltYm9scyAvIFByaXZhdGVOYW1l
cworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1l
Q29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10gKGNvbnN0IEluaXRp
YWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246
OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMCwg
U3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7CisKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJKQogICAg
IC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUNvbXBpbGVT
dHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxs
PiYgaW5pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXgg
MmZkNmQ5NzQ5ZDFjNmJjMDI1ZTNmNGFmNGQ0MWY3ODRjNDg5M2Q1Ni4uY2YzM2QyNmE5MzQxOTI2
ZGMzYjI3MjYzNGEzNzNlYjE0ZjI4NmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCkBAIC0xODAsNiArMTgwLDExIEBAIHB1YmxpYzoKICAgICAvLyBiZWluZyBy
ZXR1cm5lZC4gT25jZSB0aGlzIGlzIGZpeGVkIHdlIHNob3VsZCBtaWdyYXRlIGNvZGUgJiByZW1v
dmUgdGhpcyBtZXRob2QuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCisgICAgc3RhdGljIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCos
IEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxp
bmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYpOworICAgIGlubGluZSB2b2lkIHB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9i
amVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgaW5s
aW5lIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1l
LCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKwogICAgIHVuc2lnbmVkIGdldEFycmF5TGVu
Z3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5k
ZXhpbmdUeXBlKCkpKQpAQCAtMTQ0NCw2ICsxNDQ5LDc4IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBK
U09iamVjdDo6ZG9QdXRQcm9wZXJ0eVNlY3VyaXR5Q2hlY2soSlNPYmplY3QqLCBKU0dsb2JhbE9i
amVjCiB7CiB9CiAKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0ds
b2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKKworQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcml2
YXRlRmllbGRTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICBBU1NFUlQocHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKKworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICBB
U1NFUlQodmFsdWUpOworICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICBKU0NlbGwq
IGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgSlNUeXBlIHR5cGUgPSBjZWxsLT50eXBl
KCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShjZWxsKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0
eXBlLCB0eXBlICE9IEdldHRlclNldHRlclR5cGUgJiYgdHlwZSAhPSBDdXN0b21HZXR0ZXJTZXR0
ZXJUeXBlKTsKKyAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHByaXZhdGUgZmllbGRzIGRvIG5v
dCBzdXBwb3J0IGdldHRlci9zZXR0ZXIgZmllbGRzLiBMYXRlciBvbiwgd2Ugd2lsbCBuZWVkIHRv
IGZpbGwgaW4gYWNjZXNzb3IgbWV0YWRhdGEgaGVyZSwKKyAgICAgICAgLy8gYXMgaW4gSlNPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KCkKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQorICAgIH0KKworICAgIHNsb3Quc2V0
VmFsdWUob2JqZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKCFKU09iamVjdDo6Z2V0
UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
IHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgZmFsc2UpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnVlKTsKK30K
KworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhh
c1Byb3BlcnR5KTsKKyAgICBpZiAoIUpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihn
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB2b2lkKCkp
OworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAg
ICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBwdXRTbG90KTsKK30KKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OmRlZmluZVByaXZhdGVGaWVs
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZt
ID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBpZiAoSlNPYmplY3Q6OmdldFByaXZh
dGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZGVmaW5l
ZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1dERpcmVjdCh2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9CisKIC8vIEl0IG1heSBzZWVtIGNyYXp5
IHRvIGlubGluZSBhIGZ1bmN0aW9uIHRoaXMgbGFyZ2UgYnV0IGl0IG1ha2VzIGEgYmlnIGRpZmZl
cmVuY2UKIC8vIHNpbmNlIHRoaXMgaXMgZnVuY3Rpb24gdmVyeSBob3QgaW4gdmFyaWFibGUgbG9v
a3VwCiB0ZW1wbGF0ZTxib29sIGNoZWNrTnVsbFN0cnVjdHVyZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKaW5kZXggMWZlN2Q2NzI5ZDI5NzVmYWFmOWEyMzFiM2Vk
MTU2ZTI4YjA3NTZlZC4uMGViNTI3OGY0MzJlNGE0NWNiOTBhZmNkNGEzMzA4MTA2OGRmZTQ0NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTMzNyw2ICsz
MzcsMTAgQEAgdm9pZCBKU1Njb3BlOjpjb2xsZWN0Q2xvc3VyZVZhcmlhYmxlc1VuZGVyVERaKEpT
U2NvcGUqIHNjb3BlLCBWYXJpYWJsZUVudmlyb25tZW4KICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKICAgICAgICAgZm9yIChhdXRvIGVuZCA9
IHN5bWJvbFRhYmxlLT5lbmQobG9ja2VyKSwgaXRlciA9IHN5bWJvbFRhYmxlLT5iZWdpbihsb2Nr
ZXIpOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgcmVzdWx0LmFkZChpdGVyLT5r
ZXkpOworICAgICAgICBpZiAoc3ltYm9sVGFibGUtPmhhc1ByaXZhdGVOYW1lcygpKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IHN5bWJvbFRhYmxlLT5wcml2YXRlTmFtZXMoKSkKKyAg
ICAgICAgICAgICAgICByZXN1bHQudXNlUHJpdmF0ZU5hbWUobmFtZSk7ICAgIAorICAgICAgICB9
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAppbmRleCBiNmZmMzkxN2M3N2YzZDdjN2VjMWE4ZWQ5MWQwY2RiNTAyNDZlN2YzLi41NTc3MWRk
ZGY3MGJiYzY0MmYyNDU1NDM3ZGRmZDRmMWQ1ZDQ5MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTUwOSw2ICs1MDksNyBAQCBjb25zdGV4cHIg
Ym9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwg
dXNlUHVibGljQ2xhc3NGaWVsZHMsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJzZXIg
d2lsbCB1bmRlcnN0YW5kIHB1YmxpYyBkYXRhIGZpZWxkcyBpbnNpZGUgY2xhc3Nlcy4iKSBcCiAg
ICAgdihCb29sLCB1c2VSYW5kb21pemluZ0V4ZWN1dGFibGVJc2xhbmRBbGxvY2F0aW9uLCBmYWxz
ZSwgTm9ybWFsLCAiRm9yIHRoZSBhcm02NCBFeGVjdXRhYmxlQWxsb2NhdG9yLCBpZiB0cnVlLCBz
ZWxlY3Qgd2hpY2ggcmVnaW9uIHRvIHVzZSByYW5kb21seS4gVGhpcyBpcyB1c2VmdWwgZm9yIHRl
c3RpbmcgdGhhdCBqdW1wIGlzbGFuZHMgd29yay4iKSBcCiAgICAgdihCb29sLCBleHBvc2VQcm9m
aWxlcnNPbkdsb2JhbE9iamVjdCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZXhw
b3NlIGZ1bmN0aW9ucyB0byBlbmFibGUvZGlzYWJsZSBib3RoIHRoZSBzYW1wbGluZyBwcm9maWxl
ciBhbmQgdGhlIHN1cGVyIHNhbXBsZXIiKSBcCisgICAgdihCb29sLCB1c2VQcml2YXRlQ2xhc3NG
aWVsZHMsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFu
ZCBwcml2YXRlIGRhdGEgZmllbGRzIGluc2lkZSBjbGFzc2VzLiIpIFwKIAogZW51bSBPcHRpb25F
cXVpdmFsZW5jZSB7CiAgICAgU2FtZU9wdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbFRhYmxlLmNwcAppbmRleCBjYmFiNDZjZTU0NTRlMjNmMzQ4MmViZGJjMGI2
OWNhMjY5NTY3ZmY1Li4xNjRjYTZkNDMxMGU2YmIzOGU2NDdlMmY2YmUyZjlmN2Q5ZjMyNjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCkBAIC0x
ODEsNiArMTgxLDExIEBAIFN5bWJvbFRhYmxlKiBTeW1ib2xUYWJsZTo6Y2xvbmVTY29wZVBhcnQo
Vk0mIHZtKQogICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5tX3VuaXF1ZVR5cGVTZXRNYXAuc2V0KGl0ZXIt
PmtleSwgaXRlci0+dmFsdWUpOwogICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9yIChhdXRvIG5hbWUgOiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcykKKyAgICAgICAgICAg
ICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChuYW1lKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggZTIzNGQzMTRjNjllZDJkMTExMzIzOTE0
YmEyN2QzZDkzMTU1MjY3Ni4uMzFmODFmYWUwMmZiMjAxZDMyMThiYjBmYjRjNTJkMjIxZjRjZDY0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCkBAIC0z
OCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1VuaXF1ZWRT
dHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sSW1wbC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNDUwLDYgKzQ1MCw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmUHRyPFR5cGVTZXQ+LCBJZGVudGlmaWVy
UmVwSGFzaD4gVW5pcXVlVHlwZVNldE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8VmFyT2Zmc2V0
LCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBPZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgIHR5
cGVkZWYgVmVjdG9yPFN5bWJvbFRhYmxlRW50cnkqPiBMb2NhbFRvRW50cnlWZWM7CisgICAgdHlw
ZWRlZiBIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNo
PiBQcml2YXRlTmFtZVNldDsKKyAgICB0eXBlZGVmIFdURjo6SXRlcmF0b3JSYW5nZTx0eXBlbmFt
ZSBQcml2YXRlTmFtZVNldDo6aXRlcmF0b3I+IFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KICAgICBzdGF0
aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKQEAgLTU5NCw3ICs1OTYsMjUgQEAg
cHVibGljOgogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAg
ICAgIGFkZChsb2NrZXIsIGtleSwgc3RkOjpmb3J3YXJkPEVudHJ5PihlbnRyeSkpOwogICAgIH0K
LSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJl
RGF0YSAmJiBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zaXplKCk7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIFByaXZhdGVOYW1lSXRlcmF0b3JSYW5nZSBwcml2YXRlTmFtZXMoKQorICAgIHsKKyAg
ICAgICAgLy8gVXNlIG9mIHRoZSBJdGVyYXRvclJhbmdlIG11c3QgYmUgZ3VhcmRlZCB0byBwcmV2
ZW50IEFTU0VSVCBmYWlsdXJlcyBpbiBjaGVja1ZhbGlkaXR5KCkuCisgICAgICAgIEFTU0VSVCho
YXNQcml2YXRlTmFtZXMoKSk7CisgICAgICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5iZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5lbmQoKSk7CisgICAgfQorCisgICAgdm9pZCBhZGRQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5n
SW1wbCoga2V5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGtleSAmJiAha2V5LT5pc1N5bWJvbCgp
KTsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9yYXJlRGF0YSA9IFdU
Rjo6bWFrZVVuaXF1ZTxTeW1ib2xUYWJsZVJhcmVEYXRhPigpOworCisgICAgICAgIEFTU0VSVCgh
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFpbnMoa2V5KSk7CisgICAgICAgIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChrZXkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVudHJ5PgogICAgIHZvaWQgc2V0KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBrZXksIEVudHJ5JiYgZW50cnkpCiAgICAgewpAQCAtNzI5LDE4ICs3
NDksMjEgQEAgcHJpdmF0ZToKICAgICBTY29wZU9mZnNldCBtX21heFNjb3BlT2Zmc2V0OwogcHVi
bGljOgogICAgIG11dGFibGUgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7Ci1wcml2YXRlOgotICAg
IHVuc2lnbmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOwotICAgIHVuc2lnbmVkIG1fbmVzdGVk
TGV4aWNhbFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KLSAgICB1bnNp
Z25lZCBtX3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQotICAgIAorCiAgICAgc3RydWN0IFN5
bWJvbFRhYmxlUmFyZURhdGEgewogICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIFVuaXF1ZUlETWFwIG1fdW5pcXVlSURNYXA7CiAgICAgICAgIE9mZnNldFRv
VmFyaWFibGVNYXAgbV9vZmZzZXRUb1ZhcmlhYmxlTWFwOwogICAgICAgICBVbmlxdWVUeXBlU2V0
TWFwIG1fdW5pcXVlVHlwZVNldE1hcDsKICAgICAgICAgV3JpdGVCYXJyaWVyPENvZGVCbG9jaz4g
bV9jb2RlQmxvY2s7CisgICAgICAgIFByaXZhdGVOYW1lU2V0IG1fcHJpdmF0ZU5hbWVzOwogICAg
IH07CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgbV91c2VzTm9uU3RyaWN0RXZhbCA6IDE7Cisg
ICAgdW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4
aWNhbFNjb3BlLgorICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsgLy8gU2NvcGVUeXBlCisK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3ltYm9sVGFibGVSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIAog
ICAgIFdyaXRlQmFycmllcjxTY29wZWRBcmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1ZmVj
NzdlODkwYjliZDMyNGYxODc2ZGZlZTc3ZjE1Mzc5ZTgyNDYuLmQ4Y2U5MDYyMGIzMTNjNTA0OTk3
YjUyMmY0YmEwYTg5Nzk2ZmIwN2YgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjAtMDUtMjggIENhaXRsaW4g
UG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBm
b3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEV4cGFuZHMgdXBvbiB0aGUgZWFybGllciBwdWJsaWMgZmllbGRzIHBh
dGNoLCBhZGRpbmcgYSBudW1iZXIgb2YgcHJpdmF0ZQorICAgICAgICBmaWVsZCB0ZXN0cy4KKwor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1hcy1mdW5jdGlvbi5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29k
ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6
ZS1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWZyZWV6ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLW9uLXByb3h5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91
dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtc2VhbC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LXVzZS1ldmFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVz
cy1pbnN0YW5jZS5qczoKKyAgICAgICAgKiBzdHJlc3MvZ2V0LXByaXZhdGUtZmllbGQuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVs
ZHMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNv
bXB1dGVkLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1k
aXJlY3QtYWRkcHJpdmF0ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwt
ZGlyZWN0LXB1dHByaXZhdGUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlh
bWw6CisKIDIwMjAtMDUtMjcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+
CiAKICAgICAgICAgZm9yLW9mIHNob3VsZCBjaGVjayB0aGUgaXRlcmFibGUgaXMgYSBKU0FycmF5
IGZvciBGYXN0QXJyYXkgaW4gREZHIGl0ZXJhdG9yX29wZW4KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhhMTE2
M2UxNjdlZDBkNmM1ZjY3NjU2ZDAxYjM0ZDg4Y2I3NGYyZgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCkBAIC0wLDAg
KzEsMTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIp
CisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisK
K2NsYXNzIEMgeworICAgICNtID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLiNtKCk7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQo
Yy5tZXRob2QoKSwgMjUpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJhNGY0MzU0Zjg5N2Yx
MTM3NDA4NzEyNjA0NmM2ZjFkZmQzZTdlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpAQCAtMCwwICsxLDE4
IEBACisvL0AgcnVuQnl0ZWNvZGVDYWNoZSgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIp
CisKK2Z1bmN0aW9uIGFzc2VydChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisK
K2NsYXNzIEMgeworICAgICNmID0gMzsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuI2Y7CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2Qo
KSwgMyk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LWZyZWV6ZS1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLWZyZWV6ZS1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjUzZjZiMjMxMDdkZGFhMmI0
NWJjM2YwNThlYWJmMTFjZjAxOTNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsNDgg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xl
dCBhc3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2Fn
ZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHBy
fWApOworICB9LCB7CisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09
IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9
KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkg
c28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8g
c3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xl
dCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9y
KCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywg
aSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKwor
Y2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2Ugewor
ICAjaSA9IChPYmplY3QuZnJlZXplKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9i
amVjdC5pc0Zyb3plbih0aGlzKSwgIk9iamVjdC5pc0Zyb3plbih0aGlzKSIpLCB0aGlzLiNpICsg
MSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0g
aTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxk
QWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09IDE1MCk7
CisgIGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0
KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyAr
K2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1mcmVlemUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1m
cmVlemUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQyY2MwZmY5MmQ2YmFjOWM4NGQ5MDY5NDM0ZjNiNzdkN2Rm
NWIyMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2
YXRlLWZyZWV6ZS5qcwpAQCAtMCwwICsxLDQzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAg
ZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZh
bHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIi
fSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMoYSwgYikg
eworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYm
IGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1
Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LmZyZWV6
ZSh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNGcm96ZW4odGhpcyks
ICJPYmplY3QuaXNGcm96ZW4odGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0
dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24g
dGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lv
bnM7CisgIGMueCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0
KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisK
K3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyAr
K2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1vbi1wcm94eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LW9uLXByb3h5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MWY3MThkOTc0MjcwYWM4YTE5ZTVmN2JmMDUyMDBk
ZWI5Mzc2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1vbi1wcm94eS5qcwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkg
eworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydEFycmF5Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBl
Lmxlbmd0aCwgIlNpemUgb2YgYXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsi
ICsgaSArICJdID0gIiArIGFbaV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9
CisKK2xldCBhcnIgPSBbXTsKKworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1
bmN0aW9uIChvYmosIHByb3ApIHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9
KTsKKyAgICB9Cit9CisKK2NsYXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0g
MzsKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKwor
bGV0IHQgPSBuZXcgVGVzdCgpOworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJF
eHBlY3RlZDogMyBidXQgZ290OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsn
bWV0aG9kJ10pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJp
dmF0ZS1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LW91dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5ZDg2MjE2MDFkNWRlMzRhNDI4MzQ2ZDUxY2Nm
ODIyZmJmNTYwYTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVs
ZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwg
ZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitsZXQga2xhc3NTb3VyY2UgPSBgCit2
YXIgQyA9IGNsYXNzIHsKKyAgICBhc3NlcnRPdXRPZkxpbmVWYWx1ZSgpIHsKKyAgICAgICAgYXNz
ZXJ0KHRoaXMuI2YyMDAsICJmb28iKTsKKyAgICB9CitgOworCisKK2ZvciAobGV0IGkgPSAwOyBp
IDwgMjAwOyBpKyspIHsKKyAgICBrbGFzc1NvdXJjZSArPSAiICAgICNmIiArIGkgKyAiO1xuIjsK
K30KKwora2xhc3NTb3VyY2UgKz0gIiAgICAjZjIwMCA9IFwiZm9vXCI7XG59IjsKKworZXZhbChr
bGFzc1NvdXJjZSk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgbGV0IGMg
PSBuZXcgQygpOworICAgIGMuYXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKTsKK30KKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25z
LW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJl
dmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZGI4YjE2YWUwZDVj
YjdmM2Y1NTg1MjdlNDAwZWI1MjJjMWIzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUu
anMKQEAgLTAsMCArMSw1MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFz
c2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1
ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIi
KSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0
ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtleHByfWApCisg
IH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9
PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJv
dyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworLy8g
VGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkgc28gdGhhdCBp
dCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJp
dmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xldCBCYXNlID0g
ZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9yKCkgeworICAg
IC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywgaSkgPT4gYCAg
dGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKworY2xhc3MgUHJp
dmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChP
YmplY3QucHJldmVudEV4dGVuc2lvbnModGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQu
ZmFsc2UoT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5pc0V4dGVuc2libGUodGhp
cykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0
KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0g
bmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMo
Yy54MTUwID09PSAxNTApOworICBjLngxNTAgPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQo
KSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25v
SW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBp
ID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzIGIvSlNUZXN0cy9z
dHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQzNjA5NzI3ODE0ZmM2MDVlMTA0YzY2NGQ2ZTNlNjBlMmQ0YzVjMzIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVu
c2lvbnMuanMKQEAgLTAsMCArMSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZh
dGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0
aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkK
KyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8g
YmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVzc2Fn
ZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtleHBy
fWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEg
JiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsK
KworY2xhc3MgQmFzZSB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMueCA9IDE7CisgIH0K
K30KKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJh
c2UgeworICAjaSA9IChPYmplY3QucHJldmVudEV4dGVuc2lvbnModGhpcyksIDQyKTsKKyAgI2Fz
c2VydCA9IChhc3NlcnQuZmFsc2UoT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5p
c0V4dGVuc2libGUodGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRo
aXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChp
KSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7Cisg
IGMueCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOwor
ICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3Qo
MCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisg
IHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1zZWFsLW91dC1vZi1saW5lLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtc2VhbC1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjFiMzBlNjJlMjgzOWFkNDc1MjMx
ZjM3Y2E0ZGZjNTExNjEwZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDUyIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNz
ZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAi
IikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsK
KyAgfSwgeworICBmYWxzZShleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSB0
cnVlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIi
fSB0byBiZSBmYWxzZSwgYnV0IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxzKGEsIGIpIHsK
KyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBi
ICE9PSBiKSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
JHthfSB0byBiZSAke2J9YCk7CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBjbGFzcyBpcyBkZWNs
YXJlZCBpbiBldmFsIHNwZWNpZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQgZW5vdWdoCisvLyBw
cm9wZXJ0aWVzIHRvIHRoZSBjbGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxkcyBpbiBvdXQtb2Yt
bGluZSBwcm9wZXJ0eSBzdG9yYWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xhc3MgQmFzZSB7Cisg
IC8vIE1ldGhvZHMKKyAgY29uc3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5lIHByb3BlcnRpZXMK
KyAgICAke0FycmF5KDIwMCkubWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9ID0gJHtpfTtcbmAp
LmpvaW4oIiIpfQorICB9Cit9KWApOworCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRF
eHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5zZWFsKHRoaXMpLCA0Mik7
CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc1NlYWxlZCh0aGlzKSwgIk9iamVjdC5pc1Nl
YWxlZCh0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsg
fQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAg
bGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0
LmVxdWFscyhjLngxNTAgPT09IDE1MCk7CisgIGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFs
cyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkp
OworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODNlN2FiMzVkN2MxNGE2
Yzc2OTEyNjI2Y2ZkMTI4MTdjNWEwYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC5qcwpAQCAtMCwwICsxLDQzIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0g
T2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgewor
ICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAk
e21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwg
eworICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09
IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cg
bmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNz
IEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2Ns
YXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAg
I2kgPSAoT2JqZWN0LnNlYWwodGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0
LmlzU2VhbGVkKHRoaXMpLCAiT2JqZWN0LmlzU2VhbGVkKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsK
KworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9
Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRl
clByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQo
KSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25v
SW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBp
ID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc4ODA1N2IxYmY0OTU1
MGEwZThmM2Q5OGE5NDFhODM3Y2YxMWMzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanMKQEAgLTAsMCArMSwxNSBAQAorLy9A
IHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIiwgIi0tdXNlUHVibGlj
Q2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYg
KCFhKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2xldCBpbnN0ID0g
bmV3IGNsYXNzIHsKKyAgYSA9IGV2YWwoIihpKSA9PiBpLiNiIik7CisKKyAgI2IgPSB7fTsKK307
CisKK2luc3QuYShpbnN0KS54ID0gMTsKK2Fzc2VydChpbnN0LmEoaW5zdCkueCA9PSAxKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCmluZGV4IGU1
MTYyOTlhNzkyYzYzODRiODQyYzY5N2Y0MWZjZWQ3ZjVjZmZmY2YuLjUwNjlhN2RhNWExNTVkY2Mw
NjA0ZTQ2MzJiOTBlODMwOTM5ZmU4MzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXN0cmVzcy1pbnN0YW5jZS5qcwpAQCAtMSwxMSArMSwxNSBAQAotLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUiKQorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVB1YmxpY0NsYXNzRmllbGRzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1
ZSIpCiAKIGNsYXNzIEEgewogICAgIGEgPSAwOwogICAgIGIgPSAxOworICAgICNjID0gMDsKKyAg
ICAjZCA9IDE7CiAgICAgZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07CisgICAgI2YgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIDE7IH07CiAgICAgWyJnIl0gPSAwOwogICAgIGggPSBldmFsKCJ0
cnVlIik7CisgICAgI2kgPSBldmFsKCJmYWxzZSIpOwogfQogCiBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1maWVs
ZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLWZpZWxkLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYx
NjMzNjJmYWE2M2U0MDU2MjVkMWZlY2VjZTk5YmNkMjY2YjllYTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1maWVsZC5qcwpAQCAtMCwwICsxLDI5IEBACisv
LyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQor
Ly9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50
KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworLy8gR2V0QnlWYWxEaXJlY3Qgc2hvdWxk
IHRocm93IHdoZW4gdGhlIHJlY2VpdmVyIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVlc3RlZCBwcml2
YXRlIHByb3BlcnR5CitsZXQgaSwgdGhyZXcgPSBmYWxzZTsKK2NsYXNzIEMgeworICAgICN4ID0g
aTsKKyAgICBjb25zdHJ1Y3RvcigpIHsgaWYgKGkgPT09IDMwKSByZXR1cm4geyBbU3ltYm9sLnRv
U3RyaW5nVGFnXTogIndpdGhvdXQgI3gifTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4g
b2JqLiN4OyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndpdGgg
I3giOyB9Cit9CisKK3RyeSB7CisgICAgZm9yIChpID0gMDsgaSA8IDUwOyArK2kpIHsKKyAgICAg
ICAgbGV0IGMgPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChjKTsKKyAgICAgICAg
aWYgKHJlc3VsdCAhPT0gaSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
Qy54KCR7Y30pIHRvIGJlICR7aX0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsKKyAgICB9Cit9IGNh
dGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8fCBlLmNvbnN0
cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9CisKK2lm
ICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJyb3IsIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvb3B0
aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvb3B0
aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0MmNmMTJi
NjRhMTY0MzAyZWQyN2Y1YjkxZTA3NTQ0NzFlMTE3ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanMKQEAgLTAs
MCArMSw5MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz10
cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IChhLCBlKSA9PiB7CisgICAg
ICAgIGlmIChhICE9PSBlKSAKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7CisgICAgfSwKKworICAgIHRocm93czogKGV4cGVj
dGVkRXhjZXB0aW9uLCBmdW5jdG9yLCBtKSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBp
bnN0YW5jZW9mIGV4cGVjdGVkRXhjZXB0aW9uKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IobSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoKCkgPT4geworICAgIGNsYXNzIEMg
eworICAgICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHN0YXRpYyBhY2Nlc3Mo
bykgeworICAgICAgICAgICAgcmV0dXJuIG8/LiNmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBjID0gbmV3IEM7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykg
eworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKGMpLCAndGVzdCcpOworICAgICAg
ICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKHVuZGVmaW5lZCksIHVuZGVmaW5lZCk7CisgICAg
ICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MobnVsbCksIHVuZGVmaW5lZCk7CisgICAgfQor
CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgQy5hY2Nlc3Mo
e30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxkIHNob3VsZCB0aHJvdyIp
OworfSkoKTsKKworLy8gQ2hhaW5lZCBjYXNlCisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAg
ICAgICAjZmllbGQgPSAndGVzdCc7CisgICAgCisgICAgICAgIHN0YXRpYyBjaGFpbmVkQWNjZXNz
KG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvLnByaXZhdGU/LiNmaWVsZDsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgbGV0IG8gPSB7cHJpdmF0ZTogY307Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQuc2Ft
ZVZhbHVlKEMuY2hhaW5lZEFjY2VzcyhvKSwgJ3Rlc3QnKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVW
YWx1ZShDLmNoYWluZWRBY2Nlc3Moe30pLCB1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQuc2Ft
ZVZhbHVlKEMuY2hhaW5lZEFjY2Vzcyh7cHJpdmF0ZTogbnVsbH0pLCB1bmRlZmluZWQpOworICAg
IH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIG8ucHJp
dmF0ZSA9IHt9OworICAgICAgICBDLmNoYWluZWRBY2Nlc3Mobyk7CisgICAgfSwgIk9iamVjdCB3
aXRob3V0IHByaXZhdGUgZmllbGQgc2hvdWxkIHRocm93Iik7Cit9KSgpOworCisoKCkgPT4gewor
ICAgIGNsYXNzIEMgeworICAgICAgICAjZmllbGQ7CisKKyAgICAgICAgc2V0RmllbGQodikgewor
ICAgICAgICAgICAgdGhpcy4jZmllbGQgPSB2OworICAgICAgICB9CisgICAgCisgICAgICAgIHN0
YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8uI2ZpZWxkPy5wcm9wZXJ0eTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEM7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDA7IGkrKykgeworICAgICAgICBjLnNldEZpZWxkKHtwcm9wZXJ0eTogJ3Rl
c3QnfSk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksICd0ZXN0Jyk7CisK
KyAgICAgICAgYy5zZXRGaWVsZCh1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVl
KEMuYWNjZXNzKGMpLCB1bmRlZmluZWQpOworCisgICAgICAgIGMuc2V0RmllbGQobnVsbCk7Cisg
ICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksIHVuZGVmaW5lZCk7CisgICAgfQor
CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgQy5hY2Nlc3Mo
e30pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxkIHNob3VsZCB0aHJvdyIp
OworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vz
cy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1h
Y2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlkOGUyMTkyM2YyMDI0
ZDAyMjAyZjNhMmUxNmJiNDllMWY5NWIzZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMKQEAgLTAsMCAr
MSwyMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmllbGRzPTEiLCAi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgdGhyb3dz
OiAoZXhwZWN0ZWRFcnJvciwgZnVuY3RvcikgPT4geworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgZnVuY3RvcigpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUg
aW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvci5uYW1lICsgIiBidXQgdGhy
b3dzOiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsICgpID0+IHsKKyAgICBjbGFzcyBCYXNlIHsKKyAgICAgICAgW3t9LiN4XSA9IDE7
IAorICAgICAgICAjeCA9ICJmb28iOworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzEzNTQ2ODY5Mjdm
MzZjZWQ5YTk5YWVlNzQ0OTFkOGY3ZjIzMzc0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qcwpAQCAtMCwwICsxLDM0IEBACisv
LyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKSAt
LSBDdXJyZW50bHksIGVhZ2VyIEpJVCBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIGZpZWxk
IGFjY2Vzcy4KKy8vQCBydW5EZWZhdWx0KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8v
QCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIFByaXZhdGVGaWVsZCAiQ3JlYXRlIiBh
Y2Nlc3Mgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5h
bWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICBjb25zdHJ1
Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGkgPCAyOSA/IHRoaXMgOiBjOworICAgIH0KK30KKwor
Y2xhc3MgQ0MgZXh0ZW5kcyBDIHsKKyAgICAjeCA9IGkrKzsKKyAgICB4KCkgeyByZXR1cm4gdGhp
cy4jeDsgfQorfQorCitjID0gbmV3IENDOwordHJ5IHsKKyAgICBmb3IgKGxldCBqID0gMTsgaiA8
IDUwOyArK2opIHsKKyAgICAgICAgbGV0IHggPSBuZXcgQ0M7CisgICAgICAgIGlmICh4LngoKSAh
PT0gaikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgeC54KCkgdG8gYmUg
JHtqfSwgYnV0IGZvdW5kICR7eC54KCl9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRo
cmV3ID0gdHJ1ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVy
cm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1
dHByaXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQzODY1M2RkMjIyMTdkMWQxNmU3MDY3ZDhhZDI0NTk4YzQ1OGNjODgK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRw
cml2YXRlLmpzCkBAIC0wLDAgKzEsMzIgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpIC0tIEN1cnJlbnRseSwgZWFnZXIgSklUIGlzIG5v
dCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgZmllbGQgYWNjZXNzLgorLy9AIHJ1bkRlZmF1bHQoIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFz
c0ZpZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikK
KworLy8gUHJpdmF0ZUZpZWxkICJQdXQiIGFjY2VzcyBzaG91bGQgdGhyb3cgaWYgd3JpdGluZyB0
byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxz
ZTsKK2NsYXNzIEMgeworICAgICN4OworICAgIGNvbnN0cnVjdG9yKCkgeyByZXR1cm4gaSA8IDMw
ID8gdGhpcyA6IHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4IiB9OyB9CisgICAg
c3RhdGljIHgob2JqKSB7IHJldHVybiBvYmouI3ggPSBpKys7IH0KKyAgICBnZXQgW1N5bWJvbC50
b1N0cmluZ1RhZ10oKSB7IHJldHVybiAid2l0aCAjeCIgfQorfQorCit0cnkgeworICAgIGZvciAo
bGV0IGogPSAwOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgb2JqID0gbmV3IEM7CisgICAg
ICAgIGxldCByZXN1bHQgPSBDLngob2JqKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gaikKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgQy54KCR7b2JqfSkgdG8gYmUgJHtq
fSwgYnV0IGZvdW5kICR7cmVzdWx0fWApOworICAgIH0KK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJl
dyA9IHRydWU7CisgICAgLy8gcnZhbCBvZiBBc3NpZ25tZW50RXhwcmVzc2lvbiBpcyBldmFsdWF0
ZWQgYmVmb3JlIFByaXZhdGVGaWVsZEZpbmQoI3gsIGxyZWYpIGlzIHBlcmZvcm1lZCwKKyAgICAv
LyB0aHVzIGBpYCBoYXMgYWxyZWFkeSBiZWVuIGluY3JlbWVudGVkLgorICAgIGlmIChpICE9PSAz
MSB8fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAg
ICB9Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBl
RXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4
IDdiZWQwNjQ0YWIyNThkNWQxMDQ4NTEwOGYyYzU4ZmM2ODgyNDkxMzMuLjgzYmY2N2U5MmNhMjc2
NDI0ZmMwOWFlZDM1MDMwN2UwMTZlNDQxZjUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTYsNiArNiw3
IEBAIGZsYWdzOgogICBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDogdXNlSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHVibGljOiB1
c2VQdWJsaWNDbGFzc0ZpZWxkcworICBjbGFzcy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNs
YXNzRmllbGRzCiBza2lwOgogICBmZWF0dXJlczoKICAgICAtIFNoYXJlZEFycmF5QnVmZmVyCkBA
IC0xNCw3ICsxNSw2IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc0OTMxCiAgICAgLSByZWdleHAtbG9va2JlaGluZAogCi0gICAgLSBjbGFz
cy1maWVsZHMtcHJpdmF0ZQogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFz
cy1zdGF0aWMtZmllbGRzLXB1YmxpYwogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400579</attachid>
            <date>2020-05-29 07:53:18 -0700</date>
            <delta_ts>2020-06-04 15:17:40 -0700</delta_ts>
            <desc>Patch v21.6</desc>
            <filename>bug-206431-20200529105317.patch</filename>
            <type>text/plain</type>
            <size>195998</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjI3NWIxOGQwNzg3ZGViOTNiMDA2ZjM3NWIxZjM1NzlhNGEyNDZkLi4zNTk4MzgyYWQyYTFlNmVi
YzBjNmI5MWNlZDRmMjhmMmEyYWE3YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjggQEAKKzIwMjAtMDUtMjkgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIEV4cGFuZGluZyB1cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMg
cGF0Y2gsIHdlIGltcGxlbWVudCB0aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNh
bnQgcGFydHMpIG9mIHRoZSBpbnN0YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1jbGFzcy1maWVsZHMvKS4KKworICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBj
aGFuZ2VzIGhlcmU6CisKKyAgICAgICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUg
Y29uY2VwdCBvZiBwcml2YXRlIG5hbWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAg
ICAtIDEgbmV3IG9wY29kZSAob3BfZ2V0X3ByaXZhdGVfbmFtZSksIG9uZSBjaGFuZ2VkIG9wY29k
ZSAob3BfcHV0X2J5X3ZhbF9kaXJlY3QpLgorICAgICAgICAgICAgLSBBIG1ldGhvZCBmb3IgY3Jl
YXRpbmcgU3ltYm9sIG9iamVjdHMgd2l0aCBhIG51bGwgUHJpdmF0ZVN5bWJvbEltcGwgaXMgZXhw
b3NlZCBhcyBhCisgICAgICAgICAgICAgIExpbmtUaW1lQ29uc3RhbnQgKEBjcmVhdGVQcml2YXRl
U3ltYm9sKS4KKyAgICAgICAgICAgIC0gTnVsbCBQcml2YXRlIFN5bWJvbHMgYXJlIHN0b3JlZCBi
eSBuYW1lIChub3QgYSB2YWxpZCBpZGVudGlmaWVyKSBpbiBhIEpTU2NvcGUsIGFuZAorICAgICAg
ICAgICAgICBhcmUgbG9hZGVkIGZyb20gdGhlIG91dGVyIHNjb3BlIHdoZW5ldmVyIHRoZXkgYXJl
IHVzZWQgYnkgdGhlIG1vZGlmaWVkIG9wY29kZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgdG8g
b3BfcHV0X2J5X3ZhbF9kaXJlY3QgaW5jbHVkZSBhIG5ldyBieXRlY29kZSBvcGVyYW5kIChQdXRC
eVZhbEZsYWdzKSB3aGljaCBhcmUKKyAgICAgICAgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVu
IG92ZXJ3cml0aW5nIG9yIGRlZmluaW5nIGEgbmV3IHByaXZhdGUgZmllbGQuIFNwZWNpZmljYWxs
eSwgd2hlbiBpdAorICAgICAgICBjb21lcyB0byBwcml2YXRlIGZpZWxkIGFjY2Vzc2VzLCBpdCdz
IG5lY2Vzc2FyeSB0byB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcgYSBmaWVsZAor
ICAgICAgICB3aGljaCBkb2VzIG5vdCBleGlzdCwgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGRlZmlu
ZSBhIHByaXZhdGUgZmllbGQgd2hpY2ggaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBkZWZpbmVk
LgorCisgICAgICAgIER1cmluZyB0aGUgZXZhbHVhdGlvbiBvZiBhIGNsYXNzIGV4cHJlc3Npb24s
IGJlZm9yZSB0aGUgY2xhc3MgZWxlbWVudCBsaXN0IGlzIGV2YWx1YXRlZCAoaW4gY2FzZQorICAg
ICAgICBhbnkgY29tcHV0ZWQgcHJvcGVydHkgbmFtZXMgZXhwcmVzc2lvbnMgcmVmZXIgdG8gYSBu
ZXcgcHJpdmF0ZSBmaWVsZCksIGEgbmV3IFByaXZhdGVTeW1ib2wgaXMKKyAgICAgICAgY3JlYXRl
ZCBmb3IgZWFjaCBpbmRpdmlkdWFsIHByaXZhdGUgZmllbGQgbmFtZSwgYW5kIHN0b3JlZCBpbiB0
aGUgY2xhc3MgbGV4aWNhbCBzY29wZS4KKworICAgICAgICBQcml2YXRlIGZpZWxkIG5hbWVzIGFy
ZSBsb2FkZWQgZnJvbSBzY29wZSBiZWZvcmUgdGhlaXIgdXNlLiBUaGlzIHByZXZlbnRzIG11bHRp
cGxlIGV2YWx1YXRpb25zCisgICAgICAgIG9mIHRoZSBzYW1lIGNsYXNzIHNvdXJjZSBmcm9tIGFj
Y2Vzc2luZyBlYWNoIG90aGVyJ3MgcHJpdmF0ZSBmaWVsZHMsIGJlY2F1c2UgdGhlIHZhbHVlcyBv
ZiB0aGUKKyAgICAgICAgc3ltYm9scyBsb2FkZWQgZnJvbSB0aGUgY2xhc3Mgc2NvcGUgd291bGQg
YmUgZGlzdGluY3QuIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHByb3Bvc2FsIHRleHQsCisgICAg
ICAgIGFuZCBpcyB0aGUga2V5IHJlYXNvbiB3aHkgd2UgdXNlIEJ5VmFsIGxvb2t1cHMgcmF0aGVy
IHRoYW4gQnlJZCBsb29rdXBzLgorCisgICAgICAgIFRvIGlsbHVzdHJhdGUsIHR5cGljYWwgcHJp
dmF0ZSBmaWVsZCBhY2Nlc3Mgd2lsbCBsb29rIGxpa2U6CisKKyAgICAgICAgPEZpZWxkIFJlYWRz
PgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAi
I3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJv
bD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFBy
b3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBnZXRfcHJpdmF0ZV9uYW1l
ICAgPHZhbHVlPT4sIDxyZWNlaXZlciAtLS0gcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4KKwor
ICAgICAgICA8RmllbGQgV3JpdGVzPgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3Bl
PT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRf
ZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhy
b3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAg
ICAgICBwdXRfYnlfdmFsX2RpcmVjdCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3lt
Ym9sPiwgPHZhbHVlPiwgPFB1dEJ5VmFsUHJpdmF0ZU5hbWU+CisKKyAgICAgICAgPEZpZWxkIERl
ZmluaXRpb24+CisgICAgICAgIHJlc29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRT
Y29wZT4sICIjeCIsIEdsb2JhbFByb3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAg
ICA8c3ltYm9sPT4sIDxzY29wZT4sICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8
R2xvYmFsUHJvcGVydHl8Tm90SW5pdGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92
YWxfZGlyZWN0ICA8cmVjZWl2ZXIsIHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+
LCA8UHV0QnlWYWxQcml2YXRlTmFtZXxQdXRCeVZhbFRocm93SWZFeGlzdHM+CisKKyAgICAgICAg
VGhlIGZlYXR1cmUgaXMgY3VycmVudGx5IGhpZGRlbiBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBK
U0M6Ok9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZUluZGV4SW1wbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJ
bmRleEltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0
ZWNvZGUvRml0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRl
cm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxG
bGFnczo6Y3JlYXRlRGlyZWN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRl
UHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNEaXJlY3Qg
Y29uc3QpOgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjplY21hTW9kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFjY2VzcyBjb25z
dCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkUHV0IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBZGQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQdXRCeVZhbEZsYWdzOjpQdXRCeVZhbEZsYWdzKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRLaW5kLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJp
YWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZp
ZWxkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQ
dXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nl
c3Nvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlBy
ZWZpeE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OmVjbWFNb2RlPE9wUHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eUlkKToKKyAgICAgICAgKiBnZW5lcmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRz
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0
b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJh
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdl
bmVyYXRvcik6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklU
OjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAg
ICAgKEpTQzo6ZGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
U2xvd19vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9p
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFw
cHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRyeUNh
Y2hlUHV0QnlJRCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoK
KyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50
OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMu
aDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL0FT
VEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6aXNQcml2YXRlTG9jYXRpb24pOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpMZXhlcjxMQ2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChK
U0M6OkxleGVyPFVDaGFyPjo6cGFyc2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8
Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VD46OmxleFdpdGhvdXRDbGVhcmluZ0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6QmFz
ZURvdE5vZGUpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9k
ZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5v
ZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFw
cGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6Okhhc093blByb3BlcnR5RnVu
Y3Rpb25DYWxsRG90Tm9kZTo6SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAg
ICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAgICAgIChKU0M6
OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgICogcGFyc2Vy
L05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRl
TGV4aWNhbFNjb3BlRm9yQ2xhc3MpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAg
ICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNQcml2YXRlTG9jYXRpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpCYXNlRG90Tm9kZTo6YmFzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3RO
b2RlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OnR5cGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlTmFtZSBjb25zdCk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4pOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1lbnRzKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnVzZVByaXZhdGVOYW1lKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVuZXhwZWN0ZWRUb2tlblRleHQpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmlzUHJpdmF0
ZU5hbWVTY29wZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc1ByaXZhdGVOYW1l
U2NvcGUpOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAo
SlNDOjpTY29wZTo6Y29weVVuZGVjbGFyZWRQcml2YXRlTmFtZXNUbyk6CisgICAgICAgIChKU0M6
OlNjb3BlOjpoYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcyBjb25zdCk6CisgICAgICAg
IChKU0M6OlNjb3BlOjp1c2VQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmZpbmRQcml2YXRlTmFtZVNj
b3BlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwcml2YXRlTmFtZVNjb3BlKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyOjpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjo6bWF0Y2hBbmRVcGRhdGUpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICog
cGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgorICAgICAgICAqIHBhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6c3dh
cCk6CisgICAgICAgIChKU0M6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50OjpDb21wYWN0VmFy
aWFibGVFbnZpcm9ubWVudCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
aDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVOYW1l
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc1By
aXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6UHJpdmF0ZU5hbWVF
bnRyeSk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzVXNlZCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzRGVjbGFyZWQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpzZXRJc1VzZWQpOgorICAgICAgICAoSlNDOjpQcml2
YXRlTmFtZUVudHJ5OjpzZXRJc0RlY2xhcmVkKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6Yml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6Om9wZXJh
dG9yPT0gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpWYXJpYWJs
ZUVudmlyb25tZW50KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6c2l6ZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcFNpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU5hbWUp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojp1c2VQcml2YXRlTmFtZSk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lcyBjb25zdCk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnByaXZhdGVOYW1lc1NpemUgY29uc3Qp
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNQcml2YXRlTmFtZSk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlQcml2YXRlTmFtZXNUbyBjb25z
dCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmNvcHlVbmRlY2xhcmVkUHJp
dmF0ZU5hbWVzVG8gY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpS
YXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50Ojpn
ZXRPckFkZFByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoK
KyAgICAgICAgKEpTQzo6Q2FjaGVkT3B0aW9uYWw6OmRlY29kZUFzUHRyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6Q2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjplbmNvZGUpOgorICAg
ICAgICAoSlNDOjpDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE6OmRlY29kZSBjb25z
dCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmVuY29kZSk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY29kZSBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAg
IChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlUmFyZURhdGE6OmRlY29kZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkNhY2hlZFN5bWJvbFRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRT
eW1ib2xUYWJsZTo6ZGVjb2RlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5j
cHA6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tbW9u
SWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAg
ICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAgICAgIChKU0M6
OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpjcmVhdGVQcml2YXRlU3ltYm9sKToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QpOgorICAgICAgICAoSlNDOjpKU09i
amVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dFByaXZh
dGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZpbmVQcml2YXRlRmllbGQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgIChKU0M6OkpTU2NvcGU6OmNv
bGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
c0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJv
bFRhYmxlLmg6CisKIDIwMjAtMDUtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBtaXNzaW5nIGNvbmRpdGlvbiBndWFyZHMg
d2hlbiBnZW5lcmF0aW5nIG9iamMgcHJvdG9jb2wgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5MWE2ZTNhMWIwNDBlMGFlZmVjZDkzNTMyN2ZkYWQ2ZTkyMTMzOWQ0
Li5hOGY2ZGM5ZjJjNzIwMGY4Y2FjNGEyZDFkMjRhNWZlZDZkNWU4YWIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NDAsNiArNTQwLDcgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAg
ICAgYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFn
cy5oCisgICAgYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRl
ZFR5cGUuaAogICAgIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJT
YW1wbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjNlODIwZWFmMzgwY2Rj
N2NjNGU0MGE4Y2NmMzFmZDNkYTE1YmY0ZC4uMWUyZTQxMTg2N2JmNTllZTFkNmU5NTNmYTY1NDhl
ZTZhNTI3ZDZhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTAsNiArMTI1
MCw3IEBACiAJCTg2NzA0Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3
MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYz
IC8qIFB1dEJ5VmFsRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAx
NTVGMjg2MzAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0
ZU5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4Njg5MjFDMjFGOUMwQ0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAv
KiBKU0JpZ0ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2OTc2RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZBMzc1
OEEwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDExNCw2ICs0MTE1LDggQEAKIAkJODY3MDRCODEx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gWWFyclBhcnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVy
bi5jcHA7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY3MDRCODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lh
cnJQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU2MjM0NjQ1
MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxh
Z3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTcyMzQ2NDVCMzAwRkFB
RkYzIC8qIFB1dEJ5VmFsRmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlWYWxGbGFn
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIw
OEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRoID0gZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4
Njg4MEY0QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsg
cGF0aCA9IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODY4OTE2QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NDAwLDYgKzg0MDMsOCBAQAogCQkJCTBGOTMzMjlBMTRDQTdEQzEw
MDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0QTcxOEI5MkM0RDAwMTc4
QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRBODE4QjkyQzREMDAxNzhB
M0YgLyogUHV0QnlJZFZhcmlhbnQuaCAqLywKKwkJCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMg
LyogUHV0QnlWYWxGbGFncy5jcHAgKi8sCisJCQkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8q
IFB1dEJ5VmFsRmxhZ3MuaCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0
S2luZC5oICovLAogCQkJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1
c2VzLmNwcCAqLywKIAkJCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0
dXNlcy5oICovLApAQCAtMTAxNDgsNiArMTAxNTMsNyBAQAogCQkJCTBGMTVDRDIzMUJBNUY5ODYw
MDMxRkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMzMkE0MTRD
QTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkz
QjRBQTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJBRTAgLyogUHV0S2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFBy
b3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggMmU5NWZiNWY4ZDM4YjFlMjljNTEzYjZmYzBjODI1YmVkNWQwYjI0Mi4uNmNhZTRkNGJlMDgx
ZmMyZjQ1MGQ5NTFhZGVlYTc3MTJjMDFiYmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtMjY4LDYgKzI2OCw3IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBi
eXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0
ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCitieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3Bw
CiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAyY2Y2MTlkMjhkZTM2NTUxYzQwYmUyNDJmYjQ5
NDdmZmE4YjQyYWUzLi43NDU0ODhiZWRhMDQxZWE3OWE5M2MxNWY0N2U4ZjRjNDI2Mzk5YTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0x
NjksNyArMTY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21w
aWxlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRl
U3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIp
IFwKLSAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSAKKyAgICBtYWNybyhoYXNPd25Q
cm9wZXJ0eUZ1bmN0aW9uKSBcCisgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAogbmFt
ZXNwYWNlIFN5bWJvbHMgewogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMo
bmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbElt
cGwgbmFtZSMjU3ltYm9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QucmIKaW5kZXggMGJkNmEwN2ZmYjBlMzE3OTVmMTQ2YmE0ODU0MWFiYzVlNThlMmJl
OC4uZDNlNjc4YjUyZDMzYzNlZDY5Y2ZjZmNhZjgzMzQ3ZmZkZDI1YTE4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00OSw2ICs0OSw3
IEBAIHR5cGVzIFsKICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5
T2Zmc2V0LAogICAgIDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJl
c29sdmVUeXBlLAogICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTUwLDYg
KzU1MSwxOSBAQCBvcCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRC
eVZhbEhpc3RvcnksCiAgICAgfQogCitvcCA6Z2V0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7
CisgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVn
aXN0ZXIsCisgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBt
ZXRhZGF0YTogeworICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHN0cnVj
dHVyZUlEOiBTdHJ1Y3R1cmVJRCwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAg
cHJvcGVydHk6IFdyaXRlQmFycmllcltKU0NlbGxdLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWws
CiAgICAgYXJnczogewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NzUsNyAr
NTg5LDcgQEAgb3AgOnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVn
aXN0ZXIsCiAgICAgICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVl
OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKKyAgICAgICAg
ZmxhZ3M6IFB1dEJ5VmFsRmxhZ3MsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBh
cnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGEzMTkwZjJkZDVkM2I2ZDJmZGJjZWY4
ZTAyMGZlYjNjZmM3NTg1MDQuLmIwZjJlODAyZDcyN2M3ZjhlMzI5NGMxNTViOTFjYjJjOGRiZTll
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmNwcApAQCAtMjEzLDYgKzIxMyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUlu
ZGV4SW1wbChWaXJ0dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAg
VVNFUyhPcEVudW1lcmF0b3JTdHJ1Y3R1cmVQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAg
VVNFUyhPcEVudW1lcmF0b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVT
RVMoT3BHZXRCeVZhbCwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhPcEdldFByaXZhdGVOYW1l
LCBiYXNlLCBwcm9wZXJ0eSkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAg
ICAgVVNFUyhPcE92ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VW
YWx1ZSkKICAgICBVU0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTQyOCw2
ICs0MjksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQg
bnVtVmFycywgY29uc3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJbnN0YW5jZW9m
LCBkc3QpCiAgICAgREVGUyhPcEluc3RhbmNlb2ZDdXN0b20sIGRzdCkKICAgICBERUZTKE9wR2V0
QnlWYWwsIGRzdCkKKyAgICBERUZTKE9wR2V0UHJpdmF0ZU5hbWUsIGRzdCkKICAgICBERUZTKE9w
VHlwZW9mLCBkc3QpCiAgICAgREVGUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAg
ICBERUZTKE9wSXNFbXB0eSwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA1YTkzODQwNzMxNjYwN2QyZjE2ZWU2ZDZmMDdjMTY0NWJjYzU3
OGY1Li4zZDBlNTc2YmJmNDZlOWQzYTRjYWU2ZGQwZDMxZTc3Mjc3YjM5MjFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI1MSw2ICsxMjUx
LDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fb2Zmc2V0ID0gMDsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxPcEdldFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
CisgICAgICAgICAgICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQo
KTsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1
Y3R1cmVJRDsKKworICAgICAgICAgICAgaWYgKCghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtl
ZChwcm9wZXJ0eSkpICYmICghc3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQoc3RydWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCks
ICJDbGVhcmluZyBMTEludCBwcml2YXRlIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAg
IG1ldGFkYXRhLm1fc3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZz
ZXQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAg
ICB9KTsKKwogICAgICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0QnlJZD4oWyZdIChhdXRv
JiBtZXRhZGF0YSkgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX29sZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3Ry
dWN0dXJlSUQgPSBtZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9GaXRzLmgKaW5kZXggMGQ5NTcwOTI2YWIxNDczNzhlYzMxNzI4MzhkYjIzNTg4MmRi
N2JjZC4uMzlmZWUwYTY2OWEyODI2NTg1YTJhNDkyMmEzODJiZjZiOGEwYWFlMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRml0cy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
T3Bjb2RlU2l6ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1
ZGUgIlJlc3VsdFR5cGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgog
I2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtMjU2LDYgKzI1Nyw0NyBAQCBzdHJ1Y3Qg
Rml0czxQdXRCeUlkRmxhZ3MsIHNpemU+IHsKICAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0
QnlJZEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUo
ZWNtYU1vZGUpOwogICAgIH0KIH07CisKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVj
dCBGaXRzPFB1dEJ5VmFsRmxhZ3MsIHNpemU+IHsKKyAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlw
ZW5hbWUgVHlwZUJ5U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOworCisgICAgLy8gUHV0QnlWYWxG
bGFncyBpcyAyIGJvb2xlYW5zIGFuZCBhIDIgYml0IGVudW0sIGVuY29kZWQgYXM6CisgICAgLy8g
ICAgICAgICAgaXNTdHJpY3QKKyAgICAvLyAgICAgICAgICAgICB2CisgICAgLy8gICAgIDAwMDB8
MDB8MHwwIDwgaXNEaXJlY3QKKyAgICAvLyAgICAgICAgICAgXgorICAgIC8vICAgIFByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQgezAgPSBOb25lLCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KKyAgICBzdGF0
aWMgY29uc3RleHByIGludCBzX2lzRGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGludCBzX2lzU3RyaWN0Qml0ID0gMjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZh
dGVGaWVsZEFjY2Vzc0tpbmRNYXNrID0gMTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19w
cml2YXRlRmllbGRBY2Nlc3NLaW5kU2hpZnQgPSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2so
UHV0QnlWYWxGbGFncykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHN0YXRpYyBUYXJnZXRUeXBlIGNvbnZlcnQoUHV0QnlWYWxGbGFncyBmbGFncykKKyAgICB7Cisg
ICAgICAgIGF1dG8gaXNEaXJlY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVj
dCgpKTsKKyAgICAgICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdz
LmVjbWFNb2RlKCkuaXNTdHJpY3QoKSk7CisgICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNz
S2luZCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQo
KSk7CisgICAgICAgIHJldHVybiAocHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVG
aWVsZEFjY2Vzc0tpbmRTaGlmdCkgfCAoaXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKKyAgICB9
CisKKyAgICBzdGF0aWMgUHV0QnlWYWxGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAg
IHsKKyAgICAgICAgYXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNE
aXJlY3RCaXQpOworICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3Bp
ICYgc19pc1N0cmljdEJpdCk7CisgICAgICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJp
dmF0ZUZpZWxkQWNjZXNzS2luZD4oKGdwaSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2sp
ID4+IHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KTsKKyAgICAgICAgYXV0byBlY21hTW9k
ZSA9IGlzU3RyaWN0ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOwor
ICAgICAgICByZXR1cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPwor
ICAgICAgICAgICAgaXNEaXJlY3QgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1v
ZGUpIDogUHV0QnlWYWxGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKSA6CisgICAgICAgICAgICBhY2Nl
c3MgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRl
UHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVBy
aXZhdGVGaWVsZChlY21hTW9kZSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgRSwg
T3Bjb2RlU2l6ZSBzaXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxz
aXplb2YoRSkgIT0gc2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlw
ZT4+IDogcHVibGljIEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAg
IHVzaW5nIEJhc2UgPSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5k
ZXggZTRkYzk1Y2IwYTI2OTk1MTY2ZTA2NmY0ZTVkYjVkNTdlNzY4YjFkMC4uMWIwNzAwZGY2NzU1
YzJjNTY3ZmI4NTc5MWUwNmVlY2M0MmVhMGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgdihhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAg
dihjYWxsRnVuY3Rpb24sIG51bGxwdHIpIFwKICAgICB2KGhhc093blByb3BlcnR5RnVuY3Rpb24s
IG51bGxwdHIpIFwKKyAgICB2KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpIFwKIAogCiAj
ZGVmaW5lIERFQ0xBUkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDhlOTBmZDA3ZDBkMzcxMzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNw
cApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21t
YVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYv
U3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQdXRCeVZhbEZs
YWdzIGZsYWdzKQoreworICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlmIChmbGFn
cy5pc0RpcmVjdCgpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEaXJlY3QiKTsKKyAgICBp
ZiAoZmxhZ3MuaXNQcml2YXRlRmllbGRQdXQoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAi
UHJpdmF0ZUZpZWxkK1B1dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQor
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRkIik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5VmFsRmxhZ3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZh
bEZsYWdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjVmZmQ3OTdmNjU4Nzg3OWMwYzMyMTU5Yzk2NTAyODI4MmEz
OWZjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeVZhbEZsYWdzLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7
CisgICAgTm9uZSwKKyAgICBQdXQsCisgICAgQ3JlYXRlLAorfTsKKworY2xhc3MgUHV0QnlWYWxG
bGFncyB7CitwdWJsaWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0
ZShFQ01BTW9kZSBlY21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdz
KGZhbHNlLCBlY21hTW9kZSk7CisgICAgfQorCisgICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1l
YW5zIHRoYXQgd2Ugc3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCisg
ICAgLy8gcHJvdG90eXBlIGNoYWluIGhhcyBhIHNldHRlci4KKyAgICBjb25zdGV4cHIgc3RhdGlj
IFB1dEJ5VmFsRmxhZ3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOworICAgIH0KKworICAg
IGNvbnN0ZXhwciBzdGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQo
RUNNQU1vZGUgZWNtYU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICBj
b25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFN
b2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6UHV0LCBlY21hTW9kZSk7CisgICAgfQorCisgICAgYm9vbCBpc0Rp
cmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01BTW9kZSBlY21hTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWNtYU1vZGU7IH0KKyAgICBQcml2YXRlRmllbGRBY2Nlc3NL
aW5kIHByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQ7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6
Ok5vbmU7IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9w
cml2YXRlRmllbGRBY2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQor
ICAgIGJvb2wgaXNQcml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQgPT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9CisKK3ByaXZh
dGU6CisKKyAgICBjb25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9k
ZSBlY21hTW9kZSkKKyAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQorICAgICAgICAsIG1f
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQorICAg
ICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhw
ciBQdXRCeVZhbEZsYWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBl
Y21hTW9kZSkKKyAgICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCisgICAgICAgICwgbV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kKGFjY2VzcykKKyAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQor
ICAgIHsKKyAgICB9CisKKyAgICBib29sIG1faXNEaXJlY3Q7CisgICAgUHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CisgICAgRUNNQU1vZGUgbV9lY21hTW9k
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
UHJpbnRTdHJlYW07CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0
QnlWYWxGbGFncyk7CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRLaW5kLmgKaW5kZXggNjExMjc5ZjYwOWEwODU4OWFkY2U5MWMyYTVjOGFmNjQ4
MDgwYzRjNi4uZjkwZDUyOWQyYWViYjNjZDk1YzhiNDU3YjY0OGI1Zjc0YjhmYjEzYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCkBAIC0yNyw2ICsyNyw2IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCB9Owor
ZW51bSBQdXRLaW5kIHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZhdGVGaWVsZENyZWF0
ZSwgRGlyZWN0UHJpdmF0ZUZpZWxkUHV0IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggYmNmN2QzYWQ4NWViMWZjZmQ0MWZiN2Y4OTEwMjJlYjli
N2ZkN2Q1Ny4uNDYxZDlmYWRkNDhiMzViYzk0ZWRkNjEwYjczODdjZWE5MDJjMTRmNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1
bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAg
QVNTRVJUKGlzRnVuY3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAg
ICBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gZXhlY3V0
YWJsZS0+aW5zdGFuY2VGaWVsZExvY2F0aW9ucygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5j
dGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgdm0sIHNv
dXJjZSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0
TW9kZSwgZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygp
LCBlcnJvciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5
cGU6Ok5vbmUsIEV2YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExv
Y2F0aW9ucyk7CisgICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRp
bk1vZGUsIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBl
eGVjdXRhYmxlLT5zdXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUs
IG51bGxwdHIsIG51bGxwdHIsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaWYgKCFm
dW5jdGlvbikgewogICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggYTgwNTUwOGJmNzM3ZTExNDUyMTVmNWEyNTdmMWYyYzY2NTcyMDkxMy4uZWM4ZGI3
NzRlOWVjNTk4ZjI4NmZiNTQ3MzVlMjdlZDIwNzRlZWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTE4OTIsNiArMTg5MiwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxl
eGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAg
ICBTeW1ib2xUYWJsZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGVudHJ5LnZhbHVlLmlzQ29uc3QoKSA/IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSA6
IFByb3BlcnR5QXR0cmlidXRlOjpOb25lKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRk
KE5vTG9ja2luZ05lY2Vzc2FyeSwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7CisKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhp
biBhIG5lc3RlZCBzY29wZSAtLS0gb3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KKyAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKKyAg
ICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjY5Myw5ICsy
Njk4LDE1IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7Cisg
ICAgT3BHZXRQcml2YXRlTmFtZTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAg
ICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERp
cmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2Us
IHByb3BlcnR5LCB2YWx1ZSwgZWNtYU1vZGUoKSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1p
dCh0aGlzLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVj
dChlY21hTW9kZSgpKSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzE3LDYgKzI3Mjgs
MTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxk
KFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sK
KyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwg
UHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAg
ICByZXR1cm4gdmFsdWU7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJh
c2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxk
KGVjbWFNb2RlKCkpKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRTdXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNhbXBsZXJCZWdp
bjo6ZW1pdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0YjFlZmI4OWQ2MDg3YTRiZjAzOTVhNjFh
MmJiY2NiZmJjMTU1MGU1Li43NzQyNTMxNTQyZTQxNGRiODNiOTQwNTU3NjkxY2NjZDM1OTUxZTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCkBAIC04MTAsMTEgKzgxMCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdp
c3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0RGlyZWN0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRC
eVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJ
bnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklE
KiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIHZv
aWQgZW1pdFN1cGVyU2FtcGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxl
ckVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDFhZmMyZTRiYmNhMmZiZDk2ZmZiMjI2MzQ3MTA2MDFkNGU1NzJh
ZjQuLmI5YzcyOWMxMjRmMGYwNWI3N2U3YmVmNDc0MWZmMWQ5NTZmNWJjYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTU0NCwxMSArNTQ0LDMwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRCeUlkKGZ1bmN0aW9uLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmhvbWVPYmplY3RQcml2YXRlTmFtZSgpLCBob21lT2JqZWN0KTsKIH0KIAordm9pZCBQ
cm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIC8vIFdhbGsgdGhl
IGxpc3QgYW5kIGRlY2xhcmUgYW55IFByaXZhdGUgcHJvcGVydHkgbmFtZXMgKGUuZy4gYCNmb29g
KSBpbiB0aGUgcHJvdmlkZWQgc2NvcGUuCisgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBwID0g
dGhpczsgcDsgcCA9IHAtPm1fbmV4dCkgeworICAgICAgICBjb25zdCBQcm9wZXJ0eU5vZGUmIG5v
ZGUgPSAqcC0+bV9ub2RlOworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6
OlByaXZhdGUpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBjcmVhdGVQcml2YXRl
U3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1l
Q29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRDYWxs
KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wu
Z2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFy
Z3VtZW50cywgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVidWdnYWJsZUNh
bGw6Ok5vKTsKKworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2Nv
cGUsIHZhciwgc3ltYm9sLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogUmVn
aXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIHBy
b3RvdHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykK
IHsKLSAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1
ZSBwcm9wZXJ0aWVzLgogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lz
dGVySUQqIGRzdCA9IG51bGxwdHI7CisKKyAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0
IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIGZvciAoOyBwICYmIChwLT5t
X25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7
CiAgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHBy
b3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CiAKQEAgLTcxMCw2ICs3MjksOSBAQCBSZWdpc3Rl
cklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFu
dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09i
aiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAgIC8vIFByaXZhdGUgZmllbGRzIGFyZSBoYW5k
bGVkIGluIHRoZSBzeW50aGV0aWMgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyIGZ1bmN0aW9uLCBu
b3QgaGVyZS4KKyAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0
ZSkpOworCiAgICAgYm9vbCBzaG91bGRTZXRGdW5jdGlvbk5hbWUgPSBnZW5lcmF0b3Iuc2hvdWxk
U2V0RnVuY3Rpb25OYW1lKG5vZGUubV9hc3NpZ24pOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb3BlcnR5TmFtZTsKQEAgLTg0MCwxNiArODYyLDY2IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vz
c29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVyCiAgICAgfQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBpZiAo
YmFzZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdl
bmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERl
c3QuZ2V0KCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGVt
aXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgp
KTsKKwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKK1JlZ2lzdGVySUQq
IEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3Rl
cklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKKyAgICAgICAg
VmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBi
ZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFt
ZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChkc3QsIGJhc2UsIHByaXZhdGVO
YW1lLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Cisg
ICAgICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9y
LmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChkc3Qs
IGJhc2UsIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7CisgICAgfQorCisgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0R2V0QnlJZChkc3QsIGJhc2UsIG1faWRlbnQpOworfQorCitSZWdpc3RlcklE
KiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKQoreworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgcmV0dXJuIGVtaXRHZXRQcm9wZXJ0eVZhbHVl
KGdlbmVyYXRvciwgZHN0LCBiYXNlLCB0aGlzVmFsdWUpOworfQorCitSZWdpc3RlcklEKiBCYXNl
RG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRo
aXNWYWx1ZSkKK3sKKyAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVk
IGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCks
IHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UsIHByaXZhdGVOYW1lLmdldCgpLCB2
YWx1ZSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAg
ICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1
cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgdGhp
c1ZhbHVlLmdldCgpLCBtX2lkZW50LCB2YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLCBtX2lkZW50LCB2YWx1ZSk7Cit9CisKK1JlZ2lzdGVySUQq
IEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICByZXR1cm4gZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRv
ciwgYmFzZSwgdmFsdWUsIHRoaXNWYWx1ZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBBcmd1bWVudExpc3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIFJlZ2lzdGVySUQqIEFyZ3VtZW50TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0xNzM0LDExICsxODA2LDkg
QEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0T3B0
aW9uYWxDaGVjayhjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpKTsKICAgICB9CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVz
c2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgaWYgKGJhc2VJc1N1cGVyKSB7
Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvcik7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlv
bi5nZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBt
X2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0
aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpOworICAgIGVt
aXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZnVuY3Rpb24uZ2V0KCksIGJhc2UuZ2V0KCkp
OwogCiAgICAgaWYgKGlzT3B0aW9uYWxDaGFpbkJhc2UoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRPcHRpb25hbENoZWNrKGZ1bmN0aW9uLmdldCgpKTsKQEAgLTIxMTEsNiArMjE4MSwyMiBAQCBS
ZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5l
cmF0b3IuZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90
QWNjZXNzb3ItPmRpdm90RW5kKCkpOworCisgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVO
YW1lKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUu
Z2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFs
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVj
KGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwg
bV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2
YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgb2xk
VmFsdWUuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChiYXNlSXNTdXBlcikgewpA
QCAtMjMzNCw2ICsyNDIwLDIxIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3QoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3It
PmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQq
IHZhbHVlOworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlTmFtZSgpKSB7CisgICAgICAg
IEFTU0VSVCghYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpOworICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgp
LCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgdmFs
dWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0
KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwg
dmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIHByb3BEc3Qu
Z2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CiAgICAg
aWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7CiAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVy
YXRvci5lbnN1cmVUaGlzKCk7CkBAIC0zMTc2LDExICszMjc3LDcgQEAgUmVnaXN0ZXJJRCogQXNz
aWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
ID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJO
b2RlKCkpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwotICAgIH0g
ZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwg
Zm9yd2FyZFJlc3VsdC5nZXQoKSk7CisgICAgZW1pdFB1dFByb3BlcnR5KGdlbmVyYXRvciwgYmFz
ZS5nZXQoKSwgZm9yd2FyZFJlc3VsdC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZShmb3J3YXJkUmVzdWx0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogfQpAQCAt
MzE5MiwyMyArMzI4OSwxNSBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFz
ZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBz
dWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWU7CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKLSAgICBp
ZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7Ci0gICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgp
LCBtX2lkZW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBlbWl0R2V0UHJvcGVydHlWYWx1ZShn
ZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhp
c1ZhbHVlKTsKKwogICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5
QXNzaWdubWVudChnZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFs
dWUuZ2V0KCkpLCB2YWx1ZS5nZXQoKSwgbV9yaWdodCwgbV9vcGVyYXRvciwgT3BlcmFuZFR5cGVz
KFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBpZiAobV9iYXNlLT5p
c1N1cGVyTm9kZSgpKQotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5n
ZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOwotICAgIGVsc2UK
LSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQs
IHVwZGF0ZWRWYWx1ZSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldCA9IGVtaXRQdXRQcm9w
ZXJ0eShnZW5lcmF0b3IsIGJhc2UuZ2V0KCksIHVwZGF0ZWRWYWx1ZSwgdGhpc1ZhbHVlKTsKICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXQuZ2V0KCk7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTaG9ydENpcmN1aXRSZWFkTW9kaWZ5
RG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDY3MSw2ICs0
NzYwLDE3IEBAIHZvaWQgRGVmaW5lRmllbGROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2Fs
bERlZmluZVByb3BlcnR5KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lLmdl
dCgpLCB2YWx1ZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgQnl0ZWNvZGVHZW5lcmF0b3I6OlBy
b3BlcnR5Q29uZmlndXJhYmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5V3JpdGFibGUg
fCBCeXRlY29kZUdlbmVyYXRvcjo6UHJvcGVydHlFbnVtZXJhYmxlLCBtX3Bvc2l0aW9uKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2
YXRlTmFtZTogeworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm1f
aWRlbnQpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZh
dGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhwb3NpdGlvbigpLCBwb3NpdGlv
bigpLCBwb3NpdGlvbigpICsgbV9pZGVudC0+bGVuZ3RoKCkpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVO
YW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3VuZCk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIGNhc2UgRGVmaW5lRmllbGROb2RlOjpUeXBlOjpDb21wdXRlZE5hbWU6IHsKICAg
ICAgICAgLy8gRklYTUU6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgcHVibGljIGNsYXNzIGZpZWxk
cwogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4
MzMwCkBAIC00NjgxLDcgKzQ3ODEsNyBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIkNvbXB1dGVkIG5hbWVzIG11c3QgYmUg
c3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSArIDEpOwot
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVT
Y29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHZhcik7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJpdmF0ZU5hbWUuZ2V0KCksIHZhciwgbV9wb3NpdGlv
biwgbV9wb3NpdGlvbiArIG1faWRlbnQtPmxlbmd0aCgpKTsKQEAgLTQ3NzMsNiArNDg3Myw4IEBA
IFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsRGVmaW5lUHJv
cGVydHkoY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZU5hbWVSZWdpc3Rlci5nZXQoKSwgcHJv
dG90eXBlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAwLCBtX3Bvc2l0aW9uKTsKIAogICAgIGlm
IChtX2NsYXNzRWxlbWVudHMpIHsKKyAgICAgICAgbV9jbGFzc0VsZW1lbnRzLT5lbWl0RGVjbGFy
ZVByaXZhdGVGaWVsZE5hbWVzKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSk7
CisKICAgICAgICAgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdERlZmluZUNsYXNzRWxlbWVudHMobV9jbGFzc0VsZW1l
bnRzLCBjb25zdHJ1Y3Rvci5nZXQoKSwgcHJvdG90eXBlLmdldCgpLCBpbnN0YW5jZUZpZWxkTG9j
YXRpb25zKTsKICAgICAgICAgaWYgKCFpbnN0YW5jZUZpZWxkTG9jYXRpb25zLmlzRW1wdHkoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA3NzkxY2E2MTk0ZDhlZDg3ZDNkZGE2NDdiYWFmYmY1ZDNjYWMyZWY2Li5kYjI5N2I5N2Zh
NTU3Mzg3YTI4OGNkZjQ0OWY4MzkzZjcyNDNmZTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2lu
Y2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5j
bHVkZSAiUmVnRXhwUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNp
bmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgpAQCAtMTI2NSw2ICsxMjY2LDE4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc0FueUZvcmNlT1NSRXhpdHMgeyBmYWxzZSB9OwogfTsKIAordGVt
cGxhdGU8dHlwZW5hbWUgQnl0ZWNvZGU+CitFQ01BTW9kZSBlY21hTW9kZShCeXRlY29kZSBieXRl
Y29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9lY21hTW9kZTsKK30KKwordGVtcGxhdGU8
PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBlY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1
dEJ5VmFsRGlyZWN0IGJ5dGVjb2RlKQoreworICAgIHJldHVybiBieXRlY29kZS5tX2ZsYWdzLmVj
bWFNb2RlKCk7Cit9CisKIEJhc2ljQmxvY2sqIEJ5dGVDb2RlUGFyc2VyOjphbGxvY2F0ZVRhcmdl
dGFibGVCbG9jayhCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQVNTRVJUKGJ5
dGVjb2RlSW5kZXgpOwpAQCAtODIzNiw3ICs4MjQ5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdElu
ZGUKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21waWxlZEFzUHV0QnlJZCkKLSAgICAgICAg
ICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwgaWRlbnRpZmllck51bWJlciwgdmFs
dWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0SW5kZXgsIGJ5dGVjb2RlLm1fZWNt
YU1vZGUpOworICAgICAgICAgICAgaGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QsIG9zckV4aXRJbmRl
eCwgZWNtYU1vZGUoYnl0ZWNvZGUpKTsKICAgICB9CiAKICAgICBpZiAoIWNvbXBpbGVkQXNQdXRC
eUlkKSB7CkBAIC04MjQ3LDcgKzgyNjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeVZhbChCeXRlY29kZSBieXRlY29kZSwgQnl0ZWNvZGVJbmRleCBvc3JFeGl0SW5kZQogICAg
ICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxw
dHIpOyAvLyBMZWF2ZSByb29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICBhZGRWYXJB
cmdDaGlsZChudWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgbGVuZ3RoLgotICAgICAgICBhZGRU
b0dyYXBoKE5vZGU6OlZhckFyZywgaXNEaXJlY3QgPyBQdXRCeVZhbERpcmVjdCA6IFB1dEJ5VmFs
LCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKGJ5dGVjb2RlLm1fZWNtYU1vZGUp
KTsKKyAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxE
aXJlY3QgOiBQdXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhlY21h
TW9kZShieXRlY29kZSkpKTsKICAgICAgICAgbV9leGl0T0sgPSBmYWxzZTsgLy8gUHV0QnlWYWwg
YW5kIFB1dEJ5VmFsRGlyZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpZiB0aGV5IGNsb2JiZXIgZXhp
dCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSB0aGVtIGdlbmVyaWMuCiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4
IGExYWUzZTNjOWZjZTE2ODgzYTI4MGM4MTY5ZTRmYmJiMTY5YTc2MTEuLjEyMTJkNDA3YjRmY2M2
NzhmMzJjNjdiMzc0NjEyZjlmN2Q2ODdkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTI5OCw2ICsyOTgsNyBAQCBDYXBhYmlsaXR5TGV2
ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgY29uc3QgSQogCiAgICAgY2FzZSBvcF95aWVsZDoKICAgICBjYXNlIG9wX2NyZWF0ZV9nZW5l
cmF0b3JfZnJhbWVfZW52aXJvbm1lbnQ6CisgICAgY2FzZSBvcF9nZXRfcHJpdmF0ZV9uYW1lOiAv
LyBGSVhNRTogb3BfZ2V0X3ByaXZhdGVfbmFtZSB3aWxsIG5lZWQgREZHL0ZUTCBzdXBwb3J0IHRv
IHNoaXAgY2xhc3MgZmllbGRzLgogICAgIGNhc2UgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKICAg
ICBjYXNlIGxsaW50X2V2YWxfcHJvbG9ndWU6CiAgICAgY2FzZSBsbGludF9tb2R1bGVfcHJvZ3Jh
bV9wcm9sb2d1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggYWJiMWU1NjJkOTRhZDBlZDVjMTk2OGU1M2ZmMmUzNDAxMGNlM2U4Yi4u
ZTFjYWMxZjRlODUwNDRjZWQ1YjZjMzQwMDc0ZjJkNGM1Yzg2MTEyZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTE0MzgxLDcgKzE0
MzgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBKU1ZhbHUKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
IGdlbigKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCksIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCB1
c2VkUmVnaXN0ZXJzLCBpZGVudGlmaWVyLAogICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkoYmFzZUdQUiksIHZhbHVlUmVncywKLSAgICAgICAgc2NyYXRjaEdQUiwgZWNtYU1vZGUsIHB1
dEtpbmQpOworICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2luZCwgUHJpdmF0ZUZp
ZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aChtX2ppdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRl
eCAyMTE1NTBiODVhZDNkY2VmOGE1OWU2MTM5NzI3M2UxNDM2ZDJmNjhiLi4yNWEwNzVhNmI0ODA1
ZGM4YmMwYzJmMjMyYTc2ZmM2OTFlZDg2NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00MjA0LDcgKzQyMDQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICBqaXQuY29kZUJsb2NrKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2FsbFNpdGVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnVuYXZhaWxhYmxl
UmVnaXN0ZXJzKCksIGlkZW50aWZpZXIsIEpTVmFsdWVSZWdzKHBhcmFtc1swXS5ncHIoKSksCiAg
ICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHBhcmFtc1sxXS5ncHIoKSksIEdQUkluZm86
OnBhdGNocG9pbnRTY3JhdGNoUmVnaXN0ZXIsIGVjbWFNb2RlLAotICAgICAgICAgICAgICAgICAg
ICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAg
ICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QgPyBEaXJlY3QgOiBO
b3REaXJlY3QsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpOwogCiAgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLT5nZW5lcmF0ZUZhc3RQYXRoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpMYWJlbCBkb25lID0gaml0LmxhYmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdG9yL0RTTC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0b3IvRFNMLnJiCmluZGV4IDk0ZGUzOGNiNzE2NzhhZDg2YWJhYzZiN2M2Mjg3OWMxNmIx
MGM4MzEuLmQ5NjU4NWIxMDU3NzhlN2Q1MDE1YjBiNmM3Yzc1Y2NjYTIwNTlmMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiCkBAIC0xNDEsNiArMTQxLDcgQEAgbW9kdWxl
IERTTAogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKICNp
bmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIKKyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5j
bHVkZSAiVG9UaGlzU3RhdHVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0lDU3RhdHMuaAppbmRleCA5MDQwZGYzODIwNzY0ZWRmOGQ1MTYxMWY4NjBmYzRkNDI2NTZj
MTQ5Li45NmMxOWExN2JkYzJhN2QxMGYxNWY5YmNhMzkwMjE2MjFjOTlkYjgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0lDU3RhdHMuaApAQCAtNjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBtYWNybyhPcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdEJ1aWxkTGlzdCkgXAogICAgIG1hY3JvKE9w
ZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RCdWlsZExpc3QpIFwKKyAgICBtYWNybyhPcGVy
YXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSkgXAorICAg
IG1hY3JvKE9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXpl
KSBcCiAgICAgbWFjcm8oUHV0QnlJZEFkZEFjY2Vzc0Nhc2UpIFwKICAgICBtYWNybyhQdXRCeUlk
UmVwbGFjZVdpdGhKdW1wKSBcCiAgICAgbWFjcm8oUHV0QnlJZFNlbGZQYXRjaCkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDI2NDg1NGM2NjVlY2RmZGIwZDljZTFlNGIwN2Y3ZTNj
YmRmYmMyNzAuLjUxNjA4MzA3OWZlODM5ODI3MDk4MzE0MTY3MTc5YzM4NDFmMjFlYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5Miw2ICsyOTIsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1c2hfd2l0aF9z
Y29wZSkKICAgICAgICAgREVGSU5FX1NMT1dfT1AoY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQp
CiAgICAgICAgIERFRklORV9TTE9XX09QKGdldF9ieV92YWxfd2l0aF90aGlzKQorICAgICAgICBE
RUZJTkVfU0xPV19PUChnZXRfcHJpdmF0ZV9uYW1lKQogICAgICAgICBERUZJTkVfU0xPV19PUChw
dXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChwdXRfYnlfdmFsX3dp
dGhfdGhpcykKICAgICAgICAgREVGSU5FX1NMT1dfT1AocmVzb2x2ZV9zY29wZV9mb3JfaG9pc3Rp
bmdfZnVuY19kZWNsX2luX2V2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA0MDBlZTYz
NGQzMWI3MTdkOTk3YzFiYzI4NGJjMDhiZTEzMzk0OTc5Li4yNzU1N2IzYjA2NzhkNzk0MzVmZTk1
OGRkNzgwNTc1MTBkY2VlZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQwMSw3ICs0
MDEsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wPgog
ICAgICAgICBKdW1wTGlzdCBlbWl0RmxvYXRUeXBlZEFycmF5UHV0QnlWYWwoT3AsIFBhdGNoYWJs
ZUp1bXAmIGJhZFR5cGUsIFR5cGVkQXJyYXlUeXBlKTsKIAotICAgICAgICAvLyBJZGVudGlmaWVy
IGNoZWNrIGhlbHBlciBmb3IgUHV0QnlWYWwuCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9w
PgorICAgICAgICBFQ01BTW9kZSBlY21hTW9kZShPcCk7CisKKyAgICAgICAgLy8gRGV0ZXJtaW5l
cyB0aGUgdHlwZSBvZiBwcml2YXRlIGZpZWxkIGFjY2VzcyBmb3IgYSBieXRlY29kZS4KKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CisgICAgICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
cHJpdmF0ZUZpZWxkQWNjZXNzS2luZChPcCk7CisKKyAgICAgICAgLy8gSWRlbnRpZmllciBjaGVj
ayBoZWxwZXIgZm9yIEdldEJ5VmFsIGFuZCBQdXRCeVZhbC4KICAgICAgICAgdm9pZCBlbWl0QnlW
YWxJZGVudGlmaWVyQ2hlY2soUmVnaXN0ZXJJRCBjZWxsLCBSZWdpc3RlcklEIHNjcmF0Y2gsIENh
Y2hlYWJsZUlkZW50aWZpZXIsIEp1bXBMaXN0JiBzbG93Q2FzZXMpOwogCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE9wPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVDYWNoZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAppbmRleCA1NDg1ODM5MGVmYjdiMzZiNGY4ZTllZjhm
Y2VjZjE4YzA5ZTQyMGIzLi4yMzY4MzA0NWYxZmQxZjZhYTQ1ZTYxZDYzODlhZWYxZmMyODIwMWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hl
R2VuZXJhdG9yLmNwcApAQCAtMTM2LDExICsxMzYsMTEgQEAgdm9pZCBKSVRHZXRCeUlkV2l0aFRo
aXNHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIEpJVFB1
dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0b3IoCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZSwgY29u
c3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsCiAgICAg
SlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCAKLSAg
ICBFQ01BTW9kZSBlY21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQotICAgIDogSklUQnlJZEdlbmVy
YXRvcigKLSAgICAgICAgY29kZUJsb2NrLCBjb2RlT3JpZ2luLCBjYWxsU2l0ZSwgQWNjZXNzVHlw
ZTo6UHV0LCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSkKLSAgICAsIG1fZWNtYU1vZGUoZWNt
YU1vZGUpCi0gICAgLCBtX3B1dEtpbmQocHV0S2luZCkKKyAgICBFQ01BTW9kZSBlY21hTW9kZSwg
UHV0S2luZCBwdXRLaW5kLCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpCisgICAgICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4s
IGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQdXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQor
ICAgICAgICAsIG1fZWNtYU1vZGUoZWNtYU1vZGUpCisgICAgICAgICwgbV9wdXRLaW5kKHB1dEtp
bmQpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKHByaXZhdGVGaWVsZEFjY2Vz
c0tpbmQpCiB7CiAgICAgbV9zdHViSW5mby0+dXNlZFJlZ2lzdGVycy5jbGVhcihzY3JhdGNoKTsK
IH0KQEAgLTE1Miw2ICsxNTIsMTQgQEAgdm9pZCBKSVRQdXRCeUlkR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJiBqaXQpCiAKIFZfSklUT3BlcmF0aW9uX0dTc2lKSkMg
SklUUHV0QnlJZEdlbmVyYXRvcjo6c2xvd1BhdGhGdW5jdGlvbigpCiB7CisgICAgaWYgKG1fcHJp
dmF0ZUZpZWxkQWNjZXNzS2luZCAhPSBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKSB7Cisg
ICAgICAgIEFTU0VSVChtX3B1dEtpbmQgPT0gRGlyZWN0KTsKKyAgICAgICAgQVNTRVJUKG1fZWNt
YU1vZGUuaXNTdHJpY3QoKSk7CisgICAgICAgIGlmIChtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAg
ICB9CisKICAgICBpZiAobV9lY21hTW9kZS5pc1N0cmljdCgpKSB7CiAgICAgICAgIGlmIChtX3B1
dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREaXJl
Y3RTdHJpY3RPcHRpbWl6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
SW5saW5lQ2FjaGVHZW5lcmF0b3IuaAppbmRleCA5NzZmNzFiYmFhYzkxZDkzZTYwNzA2Nzc5NmM2
YzUyNGUwNDlkNWZkLi43MzI5ZDZiNzM4MTRkNmM0YmE1NTJhNTg5M2U3MmIwMjFlNmE1MTIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1
ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
UHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlB1dEtpbmQuaCIKICNpbmNsdWRlICJSZWdpc3Rl
clNldC5oIgogCkBAIC0xMzAsMTEgKzEzMSwxMiBAQCBjbGFzcyBKSVRQdXRCeUlkR2VuZXJhdG9y
IDogcHVibGljIEpJVEJ5SWRHZW5lcmF0b3IgewogcHVibGljOgogICAgIEpJVFB1dEJ5SWRHZW5l
cmF0b3IoKQogICAgICAgICA6IG1fZWNtYU1vZGUoRUNNQU1vZGU6OnN0cmljdCgpKQorICAgICAg
ICAsIG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25l
KQogICAgIHsgfQogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvcigKICAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgQ2FsbFNpdGVJbmRleCwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdp
c3RlcnMsIENhY2hlYWJsZUlkZW50aWZpZXIsIEpTVmFsdWVSZWdzIGJhc2UsCi0gICAgICAgIEpT
VmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQpOworICAg
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIEVDTUFNb2RlLCBQdXRLaW5k
LCBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVBY2Nlc3MpOwogICAgIAogICAgIHZvaWQg
Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwogICAgIApAQCAtMTQzLDYgKzE0NSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKICAgICBQdXRL
aW5kIG1fcHV0S2luZDsKKyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZDsKIH07CiAKIGNsYXNzIEpJVERlbEJ5VmFsR2VuZXJhdG9yIDogcHVibGljIEpJ
VElubGluZUNhY2hlR2VuZXJhdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVz
LmgKaW5kZXggOWI2YzA1MjQ4YmEyOTI5NmY5OWVkMzc2ZmI5NDgyOGZiYzkzM2NiZi4uZDUzZTY5
NzdkMzlkNzU5ZTY3NDEyZmQ5YWQxYjllNjc4MmI5N2QzMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRJbmxpbmVzLmgKQEAgLTY4Niw2ICs2ODYsMzYgQEAgQUxXQVlTX0lOTElORSBCaW5h
cnlBcml0aFByb2ZpbGUgSklUOjpjb3BpZWRBcml0aFByb2ZpbGUoQmluYXJ5T3AgYnl0ZWNvZGUp
CiAgICAgcmV0dXJuIGFyaXRoUHJvZmlsZTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3A+CitB
TFdBWVNfSU5MSU5FIEVDTUFNb2RlIEpJVDo6ZWNtYU1vZGUoT3Agb3ApCit7CisgICAgcmV0dXJu
IG9wLm1fZWNtYU1vZGU7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5SWQ+KE9wUHV0QnlJZCBvcCkKK3sKKyAgICByZXR1cm4gb3Au
bV9mbGFncy5lY21hTW9kZSgpOworfQorCit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIEVDTUFN
b2RlIEpJVDo6ZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkK
K3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5lY21hTW9kZSgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBPcD4KK1ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpwcml2YXRlRmllbGRBY2Nlc3NL
aW5kKE9wKQoreworICAgIHJldHVybiBQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lOworfQor
Cit0ZW1wbGF0ZTw+CitBTFdBWVNfSU5MSU5FIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgSklUOjpw
cml2YXRlRmllbGRBY2Nlc3NLaW5kPE9wUHV0QnlWYWxEaXJlY3Q+KE9wUHV0QnlWYWxEaXJlY3Qg
b3ApCit7CisgICAgcmV0dXJuIG9wLm1fZmxhZ3MucHJpdmF0ZUZpZWxkQWNjZXNzS2luZCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCAzYTQxZTc2MmVjOGQ4
M2NjNDJhY2UxZDEzYjJkNDc5NjJiNDY3NTc1Li4zZGU4NDI1M2JjMmZlMTIxZGNlMzUxMTA2MzBj
NWUzMDI0YzIzZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKQEAgLTY5Nyw2ICs2OTcsMTE3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAg
ICAgIHJlcGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBz
dHJ1Y3R1cmUsIGlkZW50aWZpZXIsIHNsb3QsICpzdHViSW5mbywgRGlyZWN0KTsKIH0KIAorfSAv
LyBleHRlcm4gIkMiCisKK3VzaW5nIFB1dFByaXZhdGVGaWVsZENhbGxiYWNrID0gc3RkOjpmdW5j
dGlvbjx2b2lkKFZNJiwgQ29kZUJsb2NrKiwgU3RydWN0dXJlKiwgUHV0UHJvcGVydHlTbG90Jiwg
Y29uc3QgSWRlbnRpZmllciYpPjsKK0FMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgcHV0UHJpdmF0
ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgYmFzZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFj
ayA9IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrKCkpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6
OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOworICAgIEFTU0VSVChpZGVudC5pc1ByaXZh
dGVOYW1lKCkpOworCisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFs
dWUpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
KyAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7
CisKKyAgICBQdXRQcm9wZXJ0eVNsb3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxv
Y2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIGJhc2VPYmplY3QtPnB1dFByaXZhdGVGaWVsZChn
bG9iYWxPYmplY3QsIGlkZW50LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKKworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJh
Y2sodm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBwdXRTbG90LCBpZGVudCk7Cit9CisKK0FM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIGNv
bnN0IFB1dFByaXZhdGVGaWVsZENhbGxiYWNrJiBjYWxsYmFjayA9IFB1dFByaXZhdGVGaWVsZENh
bGxiYWNrKCkpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZp
ZXIudWlkKCkpOworICAgIEFTU0VSVChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOworCisgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBTdHJ1Y3R1cmUqIG9sZFN0
cnVjdHVyZSA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICBQdXRQcm9wZXJ0eVNs
b3QgcHV0U2xvdChiYXNlT2JqZWN0LCB0cnVlLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkp
OworICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIGlkZW50
LCB2YWx1ZSwgcHV0U2xvdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgY2FsbGJhY2sodm0sIGNvZGVCbG9jaywg
b2xkU3RydWN0dXJlLCBwdXRTbG90LCBpZGVudCk7Cit9CisKK2V4dGVybiAiQyIgeworCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJf
dCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlm
aWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgZGVmaW5lUHJp
dmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlm
aWVyLCB2YWx1ZSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVm
aW5lUHJpdmF0ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRl
bnRpZmllcikKK3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CisKKyAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3
Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisK
KyAgICBkZWZpbmVQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNl
T2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgWz1dKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmpl
Y3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7
CisKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CisKKyAgICAgICAgaWYg
KHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUs
IGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBj
b2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVyZSwgaWRlbnRpZmllciwgcHV0U2xvdCwg
KnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpOworICAgIH0pOworfQorCit2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCBy
YXdDYWNoZWFibGVJZGVudGlmaWVyKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisK
KyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVy
OjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworCisgICAgcHV0UHJpdmF0ZUZp
ZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2
YWx1ZSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QgcmF3Q2FjaGVhYmxlSWRlbnRpZmllcikK
K3sKKyAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0g
REVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOworCisgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVyID0g
Q2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRlbnRp
Zmllcik7CisgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNzVHlw
ZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0
KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworCisgICAgcHV0UHJpdmF0ZUZpZWxkKHZt
LCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9iamVjdCwgaWRlbnRpZmllciwgdmFsdWUs
IFsmXShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVy
ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgewor
ICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmllbGRG
aWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0LT5jbGFzc0luZm8odm0pLCBpZGVudCwgcHV0
U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOworCisgICAgICAgIEFTU0VSVF9VTlVTRUQoYWNj
ZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+
YWNjZXNzVHlwZSkpOworCisgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nQnko
dm0sIGNvZGVCbG9jaywgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJl
cGF0Y2hQdXRCeUlEKGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlT2JqZWN0LCBvbGRTdHJ1
Y3R1cmUsIGlkZW50aWZpZXIsIHB1dFNsb3QsICpzdHViSW5mbywgRGlyZWN0UHJpdmF0ZUZpZWxk
UHV0KTsKKyAgICB9KTsKK30KKwogc3RhdGljIHZvaWQgcHV0QnlWYWwoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0LCBKU1Zh
bHVlIHZhbHVlLCBCeVZhbEluZm8qIGJ5VmFsSW5mbywgRUNNQU1vZGUgZWNtYU1vZGUpCiB7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5ZWEzY2JkOTM0ZWI0NzM2OTcxZDZmOWUxYjI3ZTc4MTg4
ZDQ2NDEwLi42NjcwNWU0NTk4YWY5NjdlMDkyMDUyNjg1ODE3NTdhOTg3YmFhZjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMTg4LDYgKzE4OCwxMCBA
QCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Ygogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZv
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3QoSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRp
bWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZf
SU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVG
aWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90
KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRC
YXNlLCB1aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsT3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsT3B0aW1p
emUoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBCeVZhbEluZm8qLCBFQ01BTW9kZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBlYTczMWMz
MDM5ODExYzAyNmM4NTU5OWNhNjA5NmI2ODI2ZjM4NmMyLi44NjhhMWQxMDU5MDlkMDE0ZTU4NzY0
MzdkMzI2YTNkMjQ5ZGRhMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIEpJVFB1dEJ5SWRHZW5lcmF0
b3IgSklUOjplbWl0UHV0QnlWYWxXaXRoQ2FjaGVkSWQoT3AgYnl0ZWNvZGUsIFB1dEtpbmQgcHV0
S2luZCwKIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9j
aywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJ
bmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwgcHJvcGVydHlO
YW1lLAotICAgICAgICBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVn
VDIsIGJ5dGVjb2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5dGVjb2RlKSwgcHV0
S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICAvLyBJQyBjYW4gd3JpdGUgbmV3IFN0cnVjdHVyZSB3aXRo
b3V0IHdyaXRlLWJhcnJpZXIgaWYgYSBiYXNlIGlzIGNlbGwuCiAgICAgLy8gRklYTUU6IFVzZSBV
bmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyIGluIEJhc2VsaW5lIGVmZmVjdGl2ZWx5IHRvIHJlZHVj
ZSBjb2RlIHNpemUuCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV92YWwoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMK
ICAgICAgICAgYmFzZSA9IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRl
Y29kZS5tX3Byb3BlcnR5OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAg
ICAgIGVjbWFNb2RlID0gYnl0ZWNvZGUubV9lY21hTW9kZTsKKyAgICAgICAgZWNtYU1vZGUgPSBK
SVQ6OmVjbWFNb2RlKGJ5dGVjb2RlKTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAt
NjU4LDggKzY1OCw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAog
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5kZXgpLCBDYWxsU2l0
ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbUlkZW50aWZp
ZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAotICAgICAgICBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGJ5dGVjb2RlLm1fZmxhZ3Mu
ZWNtYU1vZGUoKSwKLSAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAg
ICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCBlY21hTW9k
ZShieXRlY29kZSksCisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCwgcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQ
YXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtMTMx
Nyw3ICsxMzE3LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBKSVQ6OmVtaXRQdXRCeVZhbFdpdGhD
YWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5kLAogCiAgICAgSklUUHV0QnlJZEdl
bmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJ
bmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJV
bmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUsCi0gICAgICAgIEpTVmFsdWVSZWdz
OjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCBi
eXRlY29kZS5tX2VjbWFNb2RlLCBwdXRLaW5kKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxv
YWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGVjbWFNb2Rl
KGJ5dGVjb2RlKSwgcHV0S2luZCwgcHJpdmF0ZUZpZWxkQWNjZXNzS2luZChieXRlY29kZSkpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBkb25lQ2FzZXMuYXBwZW5kKGp1
bXAoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCmluZGV4IGZjMmU0NGQ3OTJhYWYwNDI4ZjIzMGFlZmRmOTY2NDgzZjRl
ZDliOGYuLmMwNDdkMmIxMzllNmEyYjVhYWQ1MmYzNGVmNzU4ZGY5NDMwYWFlYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTCiAgICAgICAgIGJh
c2UgPSBieXRlY29kZS5tX2Jhc2U7CiAgICAgICAgIHByb3BlcnR5ID0gYnl0ZWNvZGUubV9wcm9w
ZXJ0eTsKICAgICAgICAgdmFsdWUgPSBieXRlY29kZS5tX3ZhbHVlOwotICAgICAgICBlY21hTW9k
ZSA9IGJ5dGVjb2RlLm1fZWNtYU1vZGU7CisgICAgICAgIGVjbWFNb2RlID0gSklUOjplY21hTW9k
ZShieXRlY29kZSk7CiAgICAgfTsKIAogICAgIGlmIChpc0RpcmVjdCkKQEAgLTY2NCw3ICs2NjQs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29k
ZUluZGV4KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1
YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCiAgICAgICAgIENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21JZGVudGlmaWVyT3duZWRCeUNvZGVCbG9jayhtX2NvZGVCbG9jaywgKmlkZW50KSwK
ICAgICAgICAgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDMsIHJlZ1QyKSwKLSAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1fZmxhZ3MuZWNtYU1vZGUoKSwg
ZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgcmVnVDEsIGJ5dGVjb2RlLm1f
ZmxhZ3MuZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBQcml2YXRlRmll
bGRBY2Nlc3NLaW5kOjpOb25lKTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IGIxN2VjNzI0YjYxZWIxMTBiNDIyNzgzMGQyYTJkMGUy
YjI2ODgyZWMuLjQ0YmJhZmEwZmI5NTg3OWI4ODMxYWJkNmEzNTA5MzA0YWFkODA2MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApAQCAtNTIwLDYgKzUyMCwxMCBAQCBzdGF0
aWMgYXV0byBhcHByb3ByaWF0ZUdlbmVyaWNQdXRCeUlkRnVuY3Rpb24oY29uc3QgUHV0UHJvcGVy
dHlTbG90ICZzbG90LCBQdXRLaQogICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKSB7CiAgICAg
ICAgIGlmIChwdXRLaW5kID09IERpcmVjdCkKICAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25Q
dXRCeUlkRGlyZWN0U3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRl
RmllbGRDcmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVBy
aXZhdGVGaWVsZFN0cmljdDsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJpdmF0ZUZp
ZWxkUHV0KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3Q7CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0OwogICAgIH0K
ICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC01MzIsNiArNTM2LDEwIEBAIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlT3B0aW1pemluZ1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0
eVNsb3QgJnNsb3QsIFB1CiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0UHJp
dmF0ZUZpZWxkQ3JlYXRlKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWREZWZp
bmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKKyAgICAgICAgaWYgKHB1dEtpbmQgPT0gRGly
ZWN0UHJpdmF0ZUZpZWxkUHV0KQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRQ
dXRQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZTsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1
dEJ5SWRTdHJpY3RPcHRpbWl6ZTsKICAgICB9CiAgICAgaWYgKHB1dEtpbmQgPT0gRGlyZWN0KQpA
QCAtNjI1LDYgKzYzMyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5
SUQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBvbHlQcm90b0FjY2Vzc0NoYWluPiBwcm90b3R5cGVBY2Nlc3ND
aGFpbjsKICAgICAgICAgICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBjb25kaXRp
b25TZXQ7CiAgICAgICAgICAgICAgICAgaWYgKHB1dEtpbmQgPT0gTm90RGlyZWN0KSB7CisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChwdXRLaW5kICE9IERpcmVjdFByaXZhdGVGaWVsZFB1dCAm
JiBwdXRLaW5kICE9IERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gY2FjaGVTdGF0dXMgPSBwcmVwYXJlQ2hhaW5Gb3JDYWNoaW5nKGdsb2JhbE9iamVj
dCwgYmFzZUNlbGwsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3Rh
dHVzKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBAIC02
NDIsNiArNjUxLDEzIEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZVB1dEJ5SUQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ29kZUJsb2NrCiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9
PSBEaXJlY3RQcml2YXRlRmllbGRDcmVhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvblNl
dCA9IGdlbmVyYXRlQ29uZGl0aW9uc0ZvclByb3BlcnR5TWlzcyh2bSwgY29kZUJsb2NrLCBnbG9i
YWxPYmplY3QsIG5ld1N0cnVjdHVyZSwgaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjb25kaXRpb25TZXQuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdpdmVVcE9uQ2FjaGU7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAg
ICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OmNyZWF0ZVRyYW5zaXRpb24odm0sIGNvZGVCbG9jaywg
cHJvcGVydHlOYW1lLCBvZmZzZXQsIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRp
b25TZXQsIFdURk1vdmUocHJvdG90eXBlQWNjZXNzQ2hhaW4pKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgfHwgc2xvdC5pc0NhY2hl
YWJsZVNldHRlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDFmYzIzMjI4OTExYzg3ZWJhZWFhYjQwYzc3
NGM3MTZiY2JmNWMyZDUuLmM1MjNlOGE2MDA2ZGRjNTNkMjU5OWE0ZDI0YzZlOTRiNTRkY2FkYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJs
ZS5oIgogI2luY2x1ZGUgIlB1dEJ5SWRGbGFncy5oIgogI2luY2x1ZGUgIlByb3RvQ2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlNoYWRvd0NoaWNrZW4u
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXgg
MWQwNjE1YzcwMmY2MjFhMzEzMjZhZGQxMmI2NTUzZWY0MGY5ZDYzYy4uZDFmZDZlNjE1M2NjOGE4
NTY4Y2NlZWYyNzllZmJjZjU3MDllMGQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDcwLDYgKzEwNzAsNjQgQEAgTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpCiAgICAgTExJTlRfUkVUVVJOX1BST0ZJ
TEVEKGdldEJ5VmFsKHZtLCBnbG9iYWxPYmplY3QsIGNvZGVCbG9jaywgYmFzZVZhbHVlLCBzdWJz
Y3JpcHQsIGJ5dGVjb2RlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfcHJpdmF0ZV9uYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVj
b2RlID0gcGMtPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9iYXNlKTsKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3Byb3BlcnR5KTsKKyAg
ICBBU1NFUlQoc3Vic2NyaXB0LmlzU3ltYm9sKCkpOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVP
YmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBBU1NFUlQocHJvcGVydHku
aXNQcml2YXRlTmFtZSgpKTsKKworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJv
cGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKKyAgICBhc09i
amVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwg
c2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FM
V0FZU19BQ0NFU1NfU0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgp
KSB7CisgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2Nr
KTsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX3N0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7
CisgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxl
KCkuZ2V0KG9sZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGIgPSBi
YXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
U3RydWN0dXJlOjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQo
KS5nZXQoKSA9PSBiLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkuZ2V0
KCkpOworICAgICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9X
YXRjaHBvaW50KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBv
bHkgcHJvdG8gb3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXND
ZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVy
ZSh2bSk7CisgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgeworICAgICAgICAgICAgLy8gU3Rh
cnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICAgICAgbWV0YWRh
dGEubV9zdHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7
CisKKyAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFi
bGUoKSAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X3N0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOworICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX29mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgLy8gIFVwZGF0ZSB0aGUgY2FjaGVkIHByaXZhdGUgc3ltYm9sCisgICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fcHJvcGVydHkuc2V0KHZtLCBjb2RlQmxvY2ssIHN1YnNjcmlwdC5hc0Nl
bGwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZtLmhlYXAud3JpdGVC
YXJyaWVyKGNvZGVCbG9jayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBMTElOVF9SRVRVUk5fUFJPRklMRUQoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3Bl
cnR5KSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQog
ewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xMTExLDIwICsxMTY5LDQyIEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX2RpcmVjdCkKICAgICBKU1ZhbHVlIHZhbHVl
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fdmFsdWUpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9
IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0gICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2VjbWFNb2RlLmlzU3RyaWN0KCk7CisgICAgYm9vbCBpc1N0cmljdE1vZGUgPSBieXRlY29kZS5t
X2ZsYWdzLmVjbWFNb2RlKCkuaXNTdHJpY3QoKTsKKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNj
ZXNzID0gYnl0ZWNvZGUubV9mbGFncy5pc1ByaXZhdGVGaWVsZEFjY2VzcygpOwogICAgIGlmIChP
cHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBzdWJzY3JpcHQudHJ5R2V0QXNVaW50MzJJbmRleCgp
KSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nlc3MpOwogICAgICAgICBiYXNl
T2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsICppbmRleCwgdmFsdWUsIDAsIGlz
U3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhyb3cgOiBQdXREaXJlY3RJbmRleFNo
b3VsZE5vdFRocm93KTsKICAgICAgICAgTExJTlRfRU5EKCk7CiAgICAgfQogCisgICAgaWYgKHN1
YnNjcmlwdC5pc0RvdWJsZSgpKSB7CisgICAgICAgIEFTU0VSVCghaXNQcml2YXRlRmllbGRBY2Nl
c3MpOworICAgICAgICBkb3VibGUgc3Vic2NyaXB0QXNEb3VibGUgPSBzdWJzY3JpcHQuYXNEb3Vi
bGUoKTsKKyAgICAgICAgdWludDMyX3Qgc3Vic2NyaXB0QXNVSW50MzIgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3Vic2NyaXB0QXNEb3VibGUpOworICAgICAgICBpZiAoc3Vic2NyaXB0QXNEb3Vi
bGUgPT0gc3Vic2NyaXB0QXNVSW50MzIgJiYgaXNJbmRleChzdWJzY3JpcHRBc1VJbnQzMikpIHsK
KyAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgc3Vi
c2NyaXB0QXNVSW50MzIsIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNo
b3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CisgICAgICAgICAgICBM
TElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIERvbid0IHB1dCB0byBhbiBv
YmplY3QgaWYgdG9TdHJpbmcgdGhyZXcgYW4gZXhjZXB0aW9uLgogICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VM
WSh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSkKICAgICAgICAgTExJTlRfRU5EKCk7CiAKKyAgICBB
U1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpID09IGlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsK
ICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChwcm9wZXJ0eSkp
CiAgICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgu
dmFsdWUoKSwgdmFsdWUsIDAsIGlzU3RyaWN0TW9kZSA/IFB1dERpcmVjdEluZGV4U2hvdWxkVGhy
b3cgOiBQdXREaXJlY3RJbmRleFNob3VsZE5vdFRocm93KTsKICAgICBlbHNlIHsKKyAgICAgICAg
aWYgKGlzUHJpdmF0ZUZpZWxkQWNjZXNzKSB7CisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOworICAgICAgICAgICAgaWYgKGJ5dGVjb2Rl
Lm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBZGQoKSkKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0
LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJhc2VPYmplY3QtPnB1dFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgICAgICAg
ICBMTElOVF9FTkQoKTsgICAgCisgICAgICAgIH0KKwogICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgICAgICBDb21tb25TbG93UGF0aHM6
OnB1dERpcmVjdFdpdGhSZWlmeSh2bSwgZ2xvYmFsT2JqZWN0LCBiYXNlT2JqZWN0LCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgKaW5kZXggOGFkZWUxNmZiNWM5OTAwYTdiYjI4ZjQ3MDA3NDZkNzRjMmZi
ZjQ3Yy4uOWE3NWY2NWNlZmFmNzllNTIwOThlNDk2ZGMxZDA0MDZiMjIyNmYxYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTcyLDYgKzcyLDcg
QEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpOwogTExJ
TlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpOwogTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1bWVudF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRl
eCA1N2UzOTgyYjgzOWVhZjllYTk4Y2Y0ODI5MGQ2MTQyMzIwNDRhNWE2Li4yY2VmYjM3Nzk3NjBh
NWU4YWE0NGMwNWJkOWI3Y2M5ZDBlOTQ0MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTUxOSw3
ICsxNTE5LDYgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfYnlfaWQsIE9wUHV0QnlJZCwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXQKIAogZW5kKQogCi0KIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWFjcm8gZmluaXNoSW50R2V0QnlWYWwo
cmVzdWx0UGF5bG9hZCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNoKQpAQCAt
MTU5Nyw2ICsxNTk2LDI5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIGVuZCkKIAorbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVOYW1lLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBtZXRhZGF0
YSh0NSwgdDApCisKKyAgICAjIFNsb3cgcGF0aCBpZiB0aGUgcHJpdmF0ZSBmaWVsZCBpcyBzdGFs
ZQorICAgIGdldChtX3Byb3BlcnR5LCB0MCkKKyAgICBsb2FkcCBPcEdldFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9wcm9wZXJ0eVt0NV0sIHQxCisgICAgYnBuZXEgdDEsIHQwLCAub3BHZXRQcml2
YXRlTmFtZVNsb3cKKworICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRpIE9wR2V0UHJpdmF0
ZU5hbWU6Ok1ldGFkYXRhOjptX3N0cnVjdHVyZUlEW3Q1XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcEdldFByaXZhdGVOYW1l
U2xvdykKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpNZXRhZGF0YTo6bV9vZmZzZXRbdDVd
LCB0MgorICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxLCAub3BHZXRQcml2
YXRlTmFtZVNsb3cKKworICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZzZXQodDIsIHQzLCB0
MCwgdDEpCisgICAgdmFsdWVQcm9maWxlKE9wR2V0UHJpdmF0ZU5hbWUsIG1fcHJvZmlsZSwgdDUs
IHQwLCB0MSkKKyAgICByZXR1cm4odDAsIHQxKQorCisub3BHZXRQcml2YXRlTmFtZVNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKKyAgICBk
aXNwYXRjaCgpCitlbmQpCisKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVT
dHJ1Y3QsIG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVO
YW1lJSwgb3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggNGU1YThjMmI5ZDdhNmJhNTZkMjk2ZWI4MjU0OTExMmEy
MDQ5NWI1Zi4uZjI0MjlkZjJiZTk2ZTYxYjVlY2E1YWJiYTNlMWM4YzM4ODcyNjg3NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20KQEAgLTE1NjUsNyArMTU2NSw2IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X2J5
X2lkLCBPcFB1dEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0CiAKIGVu
ZCkKIAotCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWwsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1hY3JvIGZp
bmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkKICAgICAgICAgZ2V0KG1fZHN0LCBzY3JhdGNo
KQpAQCAtMTY0OSw2ICsxNjQ4LDI5IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3Zh
bCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAKIGVuZCkK
IAorbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfcHJpdmF0ZV9uYW1lLCBPcEdldFByaXZhdGVO
YW1lLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKKyAgICBt
ZXRhZGF0YSh0MiwgdDApCisKKyAgICAjIFNsb3cgcGF0aCBpZiB0aGUgcHJpdmF0ZSBmaWVsZCBp
cyBzdGFsZQorICAgIGdldChtX3Byb3BlcnR5LCB0MCkKKyAgICBsb2FkcCBPcEdldFByaXZhdGVO
YW1lOjpNZXRhZGF0YTo6bV9wcm9wZXJ0eVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIHQwLCAub3BH
ZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGdldChtX2Jhc2UsIHQwKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0UHJpdmF0ZU5hbWVTbG93KQorICAg
IGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0M10sIHQxCisgICAgbG9hZGkgT3BHZXRQcml2
YXRlTmFtZTo6TWV0YWRhdGE6Om1fc3RydWN0dXJlSURbdDJdLCB0MAorICAgIGJpbmVxIHQwLCB0
MSwgLm9wR2V0UHJpdmF0ZU5hbWVTbG93CisKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9vZmZzZXRbdDJdLCB0MQorICAgIGxvYWRQcm9wZXJ0eUF0VmFyaWFibGVPZmZz
ZXQodDEsIHQzLCB0MCkKKyAgICB2YWx1ZVByb2ZpbGUoT3BHZXRQcml2YXRlTmFtZSwgbV9wcm9m
aWxlLCB0MiwgdDApCisgICAgcmV0dXJuKHQwKQorCisub3BHZXRQcml2YXRlTmFtZVNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKKyAgICBk
aXNwYXRjaCgpCitlbmQpCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3Ry
dWN0LCBvc3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFt
ZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCBy
ZXR1cm4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDFh
NDQ4YzI1NThmMmY1Zjk4ZmQyNjBlMmZlYzUzMDhhMzY4NWQ2ZmIuLmM0NDgxYTk5ODU5MmMwZWY4
NzJmYTI2ZTNlMzc5OWI4ZjQ4YzljMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
QVNUQnVpbGRlci5oCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXIqIHByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKKyAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwg
RG90VHlwZSB0eXBlLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVuZCkKICAgICB7CiAgICAgICAg
IGlmIChiYXNlLT5pc1N1cGVyTm9kZSgpKQogICAgICAgICAgICAgdXNlc1N1cGVyUHJvcGVydHko
KTsKICAgICAgICAgCi0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJz
ZXJBcmVuYSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOworICAg
ICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERvdEFjY2Vz
c29yTm9kZShsb2NhdGlvbiwgYmFzZSwgKnByb3BlcnR5LCB0eXBlKTsKICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CkBAIC02NTEsNiArNjUxLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5vZGUtPmlzQXNzaWdubWVudExvY2F0aW9uKCk7CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZh
dGVMb2NhdGlvbihjb25zdCBFeHByZXNzaW9uJiBub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5vZGUtPmlzUHJpdmF0ZUxvY2F0aW9uKCk7CisgICAgfQorCiAgICAgYm9vbCBpc09iamVjdExp
dGVyYWwoY29uc3QgRXhwcmVzc2lvbiYgbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiBub2Rl
LT5pc09iamVjdExpdGVyYWwoKTsKQEAgLTE0MzgsMTIgKzE0NDMsMTIgQEAgRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24KICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFj
Y2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGUgPSBudWxs
cHRyOwogICAgIGlmICghcHJldmlvdXNCYXNlV2FzU3VwZXIgJiYgKGRvdC0+aWRlbnRpZmllcigp
ID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSB8
fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmNhbGxQcml2YXRlTmFtZSgpKSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBseUNo
aWxkRGVwdGgpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBk
b3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBs
eUNoaWxkRGVwdGgpOwogICAgIGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90
LT5pZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5hcHBs
eVB1YmxpY05hbWUoKSB8fCBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmFwcGx5UHJpdmF0ZU5hbWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6
IFRoaXMgY2hlY2sgaXMgb25seSBuZWVkZWQgYmVjYXVzZSB3ZSBoYXZlbid0IHRhdWdodCB0aGUg
Ynl0ZWNvZGUgZ2VuZXJhdG9yIHRvIGlubGluZQogICAgICAgICAvLyBSZWZsZWN0LmFwcGx5IHll
dC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA2NjguCiAg
ICAgICAgIGlmICghZG90LT5iYXNlKCktPmlzUmVzb2x2ZU5vZGUoKSB8fCBzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSo+KGRvdC0+YmFzZSgpKS0+aWRlbnRpZmllcigpICE9ICJSZWZsZWN0IikKLSAg
ICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZv
dCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGREZXB0aCk7CisgICAgICAg
ICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUo
bG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFy
Z3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERlcHRoKTsK
ICAgICB9IGVsc2UgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAKICAgICAgICAgJiYgZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5oYXNPd25Qcm9wZXJ0eQogICAgICAg
ICAmJiBhcmdzLT5tX2xpc3ROb2RlCkBAIC0xNDU2LDEwICsxNDYxLDEwIEBAIEV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uCiAgICAgICAgIC8vIDxyZXNvbHZlTm9kZT4uaGFzT3duUHJvcGVydHkoPHJl
c29sdmVOb2RlPikKICAgICAgICAgLy8gaS5lOgogICAgICAgICAvLyBvLmhhc093blByb3BlcnR5
KHApCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEhhc093blByb3BlcnR5RnVu
Y3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOworICAgICAgICBub2RlID0gbmV3
IChtX3BhcnNlckFyZW5hKSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRp
b24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CiAgICAgfQogICAgIGlmICghbm9kZSkKLSAgICAg
ICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFy
dCwgZGl2b3RFbmQpOworICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlv
bkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRv
dC0+dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwogICAgIG5vZGUt
PnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdEVuZCgpLm9mZnNl
dCk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CkBAIC0xNjAwLDcgKzE2MDUsNyBAQCBFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90
QWNjZXNzb3JOb2RlKj4obG9jKTsKIAogICAgIGlmIChvcCA9PSBPcGVyYXRvcjo6RXF1YWwpCi0g
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24s
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkb3QtPmRpdm90KCksIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGRvdC0+dHlwZSgpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3Qo
KSwgc3RhcnQsIGVuZCk7CiAKICAgICBpZiAob3AgPT0gT3BlcmF0b3I6OkNvYWxlc2NlRXEgfHwg
b3AgPT0gT3BlcmF0b3I6Ok9yRXEgfHwgb3AgPT0gT3BlcmF0b3I6OkFuZEVxKSB7CiAgICAgICAg
IGF1dG8qIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFNob3J0Q2lyY3VpdFJlYWRNb2RpZnlE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHBy
LCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBzdGFydCwgZW5kKTsKQEAgLTE2MDgsNyArMTYx
Myw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KIAotICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBS
ZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CisgICAg
UmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+dHlw
ZSgpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgc3RhcnQsIGVuZCk7CiAg
ICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90RW5k
KCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKaW5kZXggOTE3MTc4OTZlNDQ0ODViZWI3OTQwNzA4MGJlMjZmOWIzMzk4YTll
ZC4uMzY0OGE0NDg0M2I3MmNlOTg1MTcxNzUzMGZmNTA2ZWM2YThiODE5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTk0NSwxMCArOTQ1LDExIEBAIHRlbXBsYXRl
IDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUg
TGV4ZXI8TENoYXI+OjpwCiAgICAgICAgICAgICByZXR1cm4ga2V5d29yZCA9PSBSRVNFUlZFRF9J
Rl9TVFJJQ1QgJiYgIXN0cmljdE1vZGUgPyBJREVOVCA6IGtleXdvcmQ7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCi0gICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBt
X3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CisKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1
cnJlbnQgPT0gJyMnOworICAgIGJvb2wgaXNCdWlsdGluTmFtZSA9IG1fY3VycmVudCA9PSAnQCcg
JiYgbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uOwogICAgIGJvb2wgaXNXZWxsS25vd25TeW1ib2wg
PSBmYWxzZTsKLSAgICBpZiAoaXNQcml2YXRlTmFtZSkgeworICAgIGlmIChpc0J1aWx0aW5OYW1l
KSB7CiAgICAgICAgIEFTU0VSVChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24pOwogICAgICAgICBz
aGlmdCgpOwogICAgICAgICBpZiAobV9jdXJyZW50ID09ICdAJykgewpAQCAtOTU2LDggKzk1Nywx
MiBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPExDaGFyPjo6cAogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICAKKwogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBj
dXJyZW50U291cmNlUHRyKCk7CisKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgc2hp
ZnQoKTsKKwogICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSB8fCBtX2N1cnJlbnQg
PT0gJ1xcJyk7CiAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCiAgICAgICAgIHNo
aWZ0KCk7CkBAIC05NjksNyArOTc0LDggQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRl
bnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAK
ICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllciB8fCBtX3BhcnNpbmdCdWlsdGluRnVuY3Rp
b24pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXJMZW5ndGggPSBjdXJyZW50U291cmNlUHRyKCkg
LSBpZGVudGlmaWVyU3RhcnQ7Ci0gICAgICAgIGlmIChtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb24g
JiYgaXNQcml2YXRlTmFtZSkgeworICAgICAgICBpZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50
aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CisgICAgICAgIGlmIChtX3BhcnNpbmdCdWls
dGluRnVuY3Rpb24gJiYgaXNCdWlsdGluTmFtZSkgewogICAgICAgICAgICAgaWYgKGlzV2VsbEtu
b3duU3ltYm9sKQogICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fYXJlbmEtPm1ha2VJZGVudGlm
aWVyKG1fdm0sIG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkubG9va1VwV2VsbEtu
b3duU3ltYm9sKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCkpOwogICAgICAgICAg
ICAgZWxzZQpAQCAtOTkxLDIwICs5OTcsMjEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRl
SWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAg
ICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKLSAgICBpZiAo
VU5MSUtFTFkoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSAmJiAhbGV4ZXJGbGFncy5jb250
YWlucyhMZXhlckZsYWdzOjpJZ25vcmVSZXNlcnZlZFdvcmRzKSkgJiYgIWlzUHJpdmF0ZU5hbWUp
IHsKKyAgICBhdXRvIGlkZW50VHlwZSA9IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElE
RU5UOworICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFs
ZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSAmJiAh
aXNCdWlsdGluTmFtZSkgewogICAgICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7
CiAgICAgICAgIGlmIChyZW1haW5pbmcgPCBtYXhUb2tlbkxlbmd0aCkgewogICAgICAgICAgICAg
Y29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50cnkoKmlkZW50
KTsKICAgICAgICAgICAgIEFTU0VSVCgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHx8ICFl
bnRyeSk7CiAgICAgICAgICAgICBpZiAoIWVudHJ5KQotICAgICAgICAgICAgICAgIHJldHVybiBJ
REVOVDsKKyAgICAgICAgICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgICAgICAgICAgSlNU
b2tlblR5cGUgdG9rZW4gPSBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4oZW50cnktPmxleGVyVmFs
dWUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkg
fHwgc3RyaWN0TW9kZSA/IHRva2VuIDogSURFTlQ7CisgICAgICAgICAgICByZXR1cm4gKHRva2Vu
ICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRva2VuIDogaWRlbnRUeXBl
OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgcmV0dXJuIGlkZW50
VHlwZTsKICAgICB9CiAKLSAgICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsK
IH0KIAogdGVtcGxhdGUgPD4KQEAgLTEwMjEsNyArMTAyOCwxMiBAQCB0ZW1wbGF0ZSA8Ym9vbCBz
aG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFVD
aGFyPjo6cAogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCBpc1ByaXZhdGVOYW1lID0gbV9j
dXJyZW50ID09ICcjJzsKICAgICBjb25zdCBVQ2hhciogaWRlbnRpZmllclN0YXJ0ID0gY3VycmVu
dFNvdXJjZVB0cigpOworCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHNoaWZ0KCk7
CisKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICBBU1NFUlQoaXNTaW5nbGVDaGFyYWN0
ZXJJZGVudFN0YXJ0KG1fY3VycmVudCkgfHwgVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpIHx8
IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNTaW5nbGVDaGFyYWN0ZXJJZGVudFBh
cnQobV9jdXJyZW50KSkgewpAQCAtMTA0NSw2ICsxMDU3LDkgQEAgdGVtcGxhdGUgPGJvb2wgc2hv
dWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxVQ2hh
cj46OnAKICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAg
ICAgCisgICAgaWYgKGlzUHJpdmF0ZU5hbWUpCisgICAgICAgIHJldHVybiBQUklWQVRFTkFNRTsK
KwogICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpICYmICFsZXhl
ckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29yZHMpKSkgewogICAg
ICAgICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChyZW1haW5p
bmcgPCBtYXhUb2tlbkxlbmd0aCkgewpAQCAtMTA2OSw2ICsxMDg0LDE0IEBAIEpTVG9rZW5UeXBl
IExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0
YSogdG9rZW5EYXRhCiAgICAgQVNTRVJUKG1fYnVmZmVyMTYuaXNFbXB0eSgpKTsKICAgICBBU1NF
UlQoIXRva2VuRGF0YS0+ZXNjYXBlZCk7CiAKKyAgICBhdXRvIGlkZW50Q2hhcnNTdGFydCA9IGlk
ZW50aWZpZXJTdGFydDsKKyAgICBib29sIGlzUHJpdmF0ZU5hbWUgPSAqaWRlbnRpZmllclN0YXJ0
ID09ICcjJzsKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAgICAgKytpZGVudENoYXJzU3Rh
cnQ7CisKKyAgICBKU1Rva2VuVHlwZSBpZGVudFR5cGUgPSBpc1ByaXZhdGVOYW1lID8gUFJJVkFU
RU5BTUUgOiBJREVOVDsKKyAgICBBU1NFUlQoIWlzUHJpdmF0ZU5hbWUgfHwgaWRlbnRpZmllclN0
YXJ0ICE9IGN1cnJlbnRTb3VyY2VQdHIoKSk7CisKICAgICBhdXRvIGZpbGxCdWZmZXIgPSBbJl0g
KGJvb2wgaXNTdGFydCA9IGZhbHNlKSB7CiAgICAgICAgIC8vIFx1WFhYWCB1bmljb2RlIGNoYXJh
Y3RlcnMgb3IgU3Vycm9nYXRlIHBhaXJzLgogICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9
IGN1cnJlbnRTb3VyY2VQdHIoKSkKQEAgLTEwODgsNyArMTExMSw3IEBAIEpTVG9rZW5UeXBlIExl
eGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2VuRGF0YSog
dG9rZW5EYXRhCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcikKICAgICAg
ICAgICAgICAgICByZWNvcmRVbmljb2RlQ29kZVBvaW50KGNoYXJhY3Rlci52YWx1ZSgpKTsKICAg
ICAgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKLSAgICAgICAg
ICAgIHJldHVybiBJREVOVDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAg
IH0KIAogICAgICAgICBBU1NFUlQoVTE2X0lTX1NVUlJPR0FURShtX2N1cnJlbnQpKTsKQEAgLTEx
MDQsMTAgKzExMjcsMTAgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNl
SWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgc2hpZnQo
KTsKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVudFNv
dXJjZVB0cigpOwotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIHJldHVybiBpZGVudFR5
cGU7CiAgICAgfTsKIAotICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBmaWxsQnVmZmVyKGlkZW50aWZp
ZXJTdGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOworICAgIEpTVG9rZW5UeXBlIHR5cGUgPSBm
aWxsQnVmZmVyKGlkZW50Q2hhcnNTdGFydCA9PSBjdXJyZW50U291cmNlUHRyKCkpOwogICAgIGlm
IChVTkxJS0VMWSh0eXBlICYgRXJyb3JUb2tlbkZsYWcpKQogICAgICAgICByZXR1cm4gdHlwZTsK
IApAQCAtMTE0MCwxMyArMTE2MywxMyBAQCBKU1Rva2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBl
Pjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRva2VuRGF0YQogICAgICAg
ICBBU1NFUlQoc2hvdWxkQ3JlYXRlSWRlbnRpZmllcik7CiAgICAgICAgIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlKiBlbnRyeSA9IEpTQzo6bWFpblRhYmxlLmVudHJ5KCppZGVudCk7CiAgICAgICAgIGlm
ICghZW50cnkpCi0gICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgICAgICByZXR1cm4g
aWRlbnRUeXBlOwogICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9r
ZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKICAgICAgICAgaWYgKCh0b2tlbiAhPSBSRVNF
UlZFRF9JRl9TVFJJQ1QpIHx8IHN0cmljdE1vZGUpCiAgICAgICAgICAgICByZXR1cm4gVU5FWFBF
Q1RFRF9FU0NBUEVfRVJST1JUT0s7CiAgICAgfQogCi0gICAgcmV0dXJuIElERU5UOworICAgIHJl
dHVybiBpZGVudFR5cGU7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgY2hhcmFjdGVy
UmVxdWlyZXNQYXJzZVN0cmluZ1Nsb3dDYXNlKExDaGFyIGNoYXJhY3RlcikKQEAgLTI0NzMsMTQg
KzI0OTYsMjEgQEAgc3RhcnQ6CiAgICAgICAgIG1faGFzTGluZVRlcm1pbmF0b3JCZWZvcmVUb2tl
biA9IHRydWU7CiAgICAgICAgIG1fbGluZVN0YXJ0ID0gbV9jb2RlOwogICAgICAgICBnb3RvIHN0
YXJ0OwotICAgIGNhc2UgQ2hhcmFjdGVySGFzaDoKKyAgICBjYXNlIENoYXJhY3Rlckhhc2g6IHsK
ICAgICAgICAgLy8gSGFzaGJhbmcgaXMgb25seSBwZXJtaXR0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRo
ZSBzb3VyY2UgdGV4dC4KLSAgICAgICAgaWYgKHBlZWsoMSkgPT0gJyEnICYmICFjdXJyZW50T2Zm
c2V0KCkpIHsKKyAgICAgICAgYXV0byBuZXh0ID0gcGVlaygxKTsKKyAgICAgICAgaWYgKG5leHQg
PT0gJyEnICYmICFjdXJyZW50T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAg
ICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50Owog
ICAgICAgICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgaXQgY291bGQgYmUgYSB2YWxpZCBQcml2
YXRlTmFtZS4KKyAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpICYm
IChpc1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQobmV4dCkgfHwgbmV4dCA9PSAnXFwnKSkgewor
ICAgICAgICAgICAgbGV4ZXJGbGFncy5yZW1vdmUoTGV4ZXJGbGFnczo6RG9udEJ1aWxkS2V5d29y
ZHMpOworICAgICAgICAgICAgZ290byBwYXJzZUlkZW50OworICAgICAgICB9CiAgICAgICAgIGdv
dG8gaW52YWxpZENoYXJhY3RlcjsKKyAgICB9CiAgICAgY2FzZSBDaGFyYWN0ZXJQcml2YXRlSWRl
bnRpZmllclN0YXJ0OgogICAgICAgICBpZiAobV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uKQogICAg
ICAgICAgICAgZ290byBwYXJzZUlkZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCA4ZDMyMGU3ZDk0ZTY0YTlkNzlhYTU3MTkzNDk0
OTQxODU1ZDJiYjU4Li5lN2U4NmQzNTg4ZmQ4NDhiM2NjZWY1MjFkNzQ0ZTg1ZTBkMmU5MWQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApA
QCAtMzI3LDEwICszMjcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCisgICAgaW5saW5lIEJhc2VEb3ROb2RlOjpCYXNlRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQorICAg
ICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgRG90QWNjZXNz
b3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5
cGUpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQog
ICAgIHsKICAgICB9CiAgICAgCkBAIC00MTgsMTEgKzQyNCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25D
YWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25D
YWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRz
Tm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAg
ICA6IEJhc2VEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlwZSkKICAgICAgICAgLCBU
aHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCi0g
ICAgICAgICwgbV9iYXNlKGJhc2UpCi0gICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAg
LCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQpAQCAtNDM3LDIwICs0NDEsMjAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1
bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNp
emVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCi0gICAgICAgIDogRnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1
bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNp
emVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZv
dFN0YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JB
cHBseShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxs
T3JBcHBseSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBp
ZGVudCwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3QgZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGJhc2Us
IGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpCiAgICAgICAg
ICwgbV9kaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkoZGlzdGFuY2VUb0lubmVybW9zdENh
bGxPckFwcGx5KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSGFzT3duUHJvcGVydHlGdW5j
dGlvbkNhbGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlv
biwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKKyAgICBp
bmxpbmUgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpIYXNPd25Qcm9wZXJ0eUZ1
bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEFy
Z3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkK
KyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgdHlw
ZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgIHsKICAgICB9CiAKQEAg
LTc3NywyMSArNzgxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bG9jYXRpb24pCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQog
ICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZv
dEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQog
ICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRz
KHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9k
aWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVy
YXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1v
ZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBEb3RUeXBlIHR5cGUsIE9wZXJhdG9y
IG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5v
ZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4
cHJlc3Npb25EYXRhKGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jh
c2UoYmFzZSkKLSAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmln
aHQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgICAgICAsIG1fcmlnaHRIYXNBc3Np
Z25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcAppbmRleCBiY2Q5ZWY5OGJlYjRiZThlZTFlYTY0YmVlMzQ0YzEyODVmYjA5ZDIwLi42
NGE2NmY3NjVjOGY0ZDI4NDk2ZGE5Y2U2YzQ0YWJiMDhhYTg4MWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMzM1LDcgKzMzNSw3IEBAIGJvb2wgUHJvcGVydHlM
aXN0Tm9kZTo6aGFzU3RhdGljYWxseU5hbWVkUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJv
cE5hbWUpCiBib29sIFByb3BlcnR5TGlzdE5vZGU6OnNob3VsZENyZWF0ZUxleGljYWxTY29wZUZv
ckNsYXNzKFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCiB7CiAgICAgd2hpbGUgKGxpc3QpIHsKLSAg
ICAgICAgaWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKKyAgICAgICAg
aWYgKGxpc3QtPm1fbm9kZS0+aXNDb21wdXRlZENsYXNzRmllbGQoKSB8fCBsaXN0LT5tX25vZGUt
PmlzUHJpdmF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGxpc3QgPSBs
aXN0LT5tX25leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4
IDVkMGNhZWZiYWNmZWFmYmYwZDZkNDc5OGZhYjE4YzBlMTJlMDFkZDMuLmI0ZDJhNTFjMmZhNjQ1
ZTY5ZmE3NjE5MmM5MTcwMTliNzMxYWFkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKQEAgLTE4NSw2ICsxODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVh
bCBib29sIGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
ICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Fzc2lnbm1lbnRM
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzTG9jYXRpb24oKTsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0Fzc2lnblJlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTcxOSw3ICs3MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBlbnVtIGNsYXNzIENsYXNz
RWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0YXRpYywgTGFzdFRhZyB9Owog
ICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9
IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYs
IFNwcmVhZCA9IDMyIH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQ4X3QgeyBDb25zdGFudCA9
IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYs
IFNwcmVhZCA9IDMyLCBQcml2YXRlID0gNjQgfTsKICAgICAgICAgZW51bSBQdXRUeXBlIDogdWlu
dDhfdCB7IFVua25vd24sIEtub3duRGlyZWN0IH07CiAKICAgICAgICAgUHJvcGVydHlOb2RlKGNv
bnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTczOCw2ICs3MzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBpc0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzUHJv
cGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzSW5zdGFu
Y2VDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSAm
JiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVw
bGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQorICAg
ICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIFByaXZhdGU7IH0K
ICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Np
b247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJu
IGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFtZSgpOyB9CiAgICAgICAgIHZvaWQgc2V0
SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUgPSB0
cnVlOyB9CkBAIC03NDgsNyArNzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lv
bjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNzaWduOwotICAgICAgICB1bnNpZ25lZCBt
X3R5cGUgOiA2OworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiA3OwogICAgICAgICB1bnNpZ25l
ZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAgdW5zaWduZWQgbV9wdXRUeXBlIDog
MTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Q2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxlbWVudFRhZyBzaG91bGRuJ3QgdXNl
IG1vcmUgdGhhbiB0d28gYml0cyIpOwpAQCAtNzc2LDYgKzc3OCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqLCBSZWdpc3RlcklEKiwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiopOwogCisg
ICAgICAgIHZvaWQgZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqIHNjb3BlKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QgPSBudWxscHRyKSBmaW5hbAogICAgICAgICB7CkBAIC04MjAsOSArODI0LDMwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAg
ICAgfTsKIAotICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBlbnVtIGNsYXNz
IERvdFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSB9OworICAgIGNsYXNzIEJhc2VEb3ROb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vzc29y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgICAgICBCYXNlRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOworCisg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9Cisg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50OyB9CisgICAgICAgIERvdFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQor
ICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gRG90
VHlwZTo6UHJpdmF0ZU5hbWU7IH0KKworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJvcGVy
dHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRz
dCwgUmVnaXN0ZXJJRCogYmFzZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRQcm9wZXJ0
eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHZhbHVl
LCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHZhbHVlKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IG1fYmFzZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKKyAgICAgICAgRG90
VHlwZSBtX3R5cGU7CisgICAgfTsKKworICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSBmaW5hbCA6
IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUpOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50OyB9CkBAIC04MzEsMTAgKzg1Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIGZpbmFsOwogCiAgICAgICAgIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFtZTsgfQogICAgICAg
ICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQot
Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIFNwcmVhZEV4cHJlc3Npb25Ob2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewpAQCAtOTQ3LDkgKzk3MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1f
c3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAgfTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBCYXNl
RG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgRnVuY3Rpb25DYWxs
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRy
KSBvdmVycmlkZTsKQEAgLTk1Nyw4ICs5ODAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdz
OwogICAgIH07CiAKQEAgLTk5NSw3ICsxMDE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxE
b3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIENhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1v
c3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFs
OwpAQCAtMTAwNCw3ICsxMDI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3Mg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwg
c2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CisgICAgICAgIEFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0
Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsK
QEAgLTEwMTMsNyArMTAzNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSGFzT3du
UHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERv
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CisgICAgICAgIEhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsK
QEAgLTE0NzUsMjggKzE0OTYsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzIDogMTsKICAgICB9OwogCi0gICAgY2xhc3MgQXNzaWduRG90Tm9k
ZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKKyAgICBjbGFzcyBBc3NpZ25Eb3ROb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3RO
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwor
ICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90VHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwog
Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBi
b29sIG1fcmlnaHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgUmVhZE1vZGlm
eURvdE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVT
dWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgZmluYWwgOiBw
dWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBEb3RUeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogCi0gICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBPcGVyYXRvciBtX29w
ZXJhdG9yOwogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50cyA6IDE7CkBAIC0yMjkz
LDcgKzIzMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlZmluZUZpZWxkTm9k
ZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVu
dW0gY2xhc3MgVHlwZSB7IE5hbWUsIENvbXB1dGVkTmFtZSB9OworICAgICAgICBlbnVtIGNsYXNz
IFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSwgQ29tcHV0ZWROYW1lIH07CiAgICAgICAgIERlZmlu
ZUZpZWxkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgRXhw
cmVzc2lvbk5vZGUqLCBUeXBlKTsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZDQyYWFjMjI4OTUzODEwYmU4YmMzZjljNjE3M2NjNmUy
MWJkODhkMC4uNjRlMmFhZjVlNTNiZmUxYTM1OGRkNmQxM2EwMzM3YTE5YjM5Yzc3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtODI2LDYgKzgyNiw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVmFyaWFibGVEZWNsCiAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSAwOwog
ICAgICAgICBkZWNsYXJhdGlvbnMrKzsKICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXplciA9IGZh
bHNlOworCisgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVz
ZSBhIHByaXZhdGUgbmFtZSB0byBkZWNsYXJlIGEgdmFyaWFibGUiKTsKICAgICAgICAgaWYgKG1h
dGNoU3BlY0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChMRVQp
ICYmIChkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8
fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKSwg
CiAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1l
IGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpAQCAtMTI4OCw2ICsxMjkwLDggQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRGUKICAgICAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJpbmdL
aW5kOjpEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoZGVzdHJ1Y3R1cmluZ0tp
bmRUb1ZhcmlhYmxlS2luZE5hbWUoa2luZCkpOworICAgICAgICAgICAgaWYgKGtpbmQgIT0gRGVz
dHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAg
IGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFt
ZSBhcyBhICIsIGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKICAg
ICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBv
ciBhICcpJyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwogICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRy
dWUobWF0Y2goTEVUKSAmJiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVU
b0xldCB8fCBraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvQ29uc3QpLCAi
Q2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4aWNhbERlY2xh
cmF0aW9uIik7CkBAIC0yOTUzLDYgKzI5NTcsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5TmFtZSwgIkNhbm5vdCBwYXJzZSBjb21wdXRl
ZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENM
T1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBSSVZBVEVOQU1FOiB7CisgICAgICAgICAgICBB
U1NFUlQoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpOworICAgICAgICAgICAgSlNU
b2tlbiB0b2tlbiA9IG1fdG9rZW47CisgICAgICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OworICAgICAgICAgICAgZmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpT
dGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBjYW5ub3QgYmUgcHJpdmF0ZSIpOworICAgICAg
ICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBpc1NldHRlciwgIkNhbm5vdCBwYXJzZSBjbGFz
cyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsKKyAgICAgICAgICAgIEFTU0VSVChpZGVudCk7
CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoQW5kVXBk
YXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHBy
aXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUt
PmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRE
dXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgZmllbGQgdHdpY2Ui
KTsKKyAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5
cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtl
eXdvcmRUb2tlbkZsYWcpCiAgICAgICAgICAgICAgICAgZ290byBuYW1lZEtleXdvcmQ7CkBAIC0y
OTY4LDggKzI5ODUsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShw
cm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICB9IGVsc2UgaWYg
KE9wdGlvbnM6OnVzZVB1YmxpY0NsYXNzRmllbGRzKCkgJiYgIW1hdGNoKE9QRU5QQVJFTikgJiYg
dGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgcGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6TWV0aG9kTW9kZSkgewogICAgICAgICAgICAgQVNTRVJUKCFpc0dldHRlciAmJiAh
aXNTZXR0ZXIpOwotICAgICAgICAgICAgaWYgKGlkZW50KQorICAgICAgICAgICAgaWYgKGlkZW50
KSB7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0
eU5hbWVzLmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRlY2xhcmUgY2xhc3MgZmllbGQgbmFtZWQgJ2Nv
bnN0cnVjdG9yJyIpOworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQg
PT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvclByaXZhdGVGaWVsZCwgIkNhbm5vdCBkZWNsYXJl
IHByaXZhdGUgY2xhc3MgZmllbGQgbmFtZWQgJyNjb25zdHJ1Y3RvciciKTsKKyAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkUHJvcGVydHlOYW1lKSB7CiAgICAgICAgICAg
ICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJp
Y0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRGaWVsZHMrKyk7CkBAIC0zMDMzLDYgKzMwNTIs
MTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tlbkxvY2F0aW9uKCku
ZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBh
IGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVByaXZhdGVDbGFzc0ZpZWxkcygpKSB7CisgICAgICAgIC8vIEZhaWwgaWYgdGhlcmUgYXJlIG5v
IHBhcmVudCBwcml2YXRlIG5hbWUgc2NvcGVzIGFuZCBhbnkgdXNlZC1idXQtdW5kZWNsYXJlZCBw
cml2YXRlIG5hbWVzLgorICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGNvcHlVbmRlY2xhcmVk
UHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCksICJDYW5ub3QgcmVmZXJlbmNlIHVuZGVjbGFyZWQg
cHJpdmF0ZSBuYW1lcyIpOworICAgIH0KICAgICBhdXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRl
eHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBpbmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxl
eGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3RvciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVu
dHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJp
YWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4cHJlc3Npb247CkBAIC0zMDU2LDYgKzMwNzks
OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21w
dXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBl
ID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4u
bV90eXBlKSB7CisgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CisgICAgICAgICAgICB0eXBlID0g
RGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRlTmFtZTsKKyAgICAgICAgICAgIEZBTExUSFJP
VUdIOwogICAgICAgICBjYXNlIFNUUklORzoKICAgICAgICAgY2FzZSBJREVOVDoKICAgICAgICAg
bmFtZWRLZXl3b3JkOgpAQCAtMzA5NSw2ICszMTIxLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFu
Y2UKICAgICAgICAgaWYgKGNvbnN1bWUoRVFVQUwpKQogICAgICAgICAgICAgaW5pdGlhbGl6ZXIg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogCisgICAgICAgIGlmICh0eXBl
ID09IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWUpCisgICAgICAgICAgICBjdXJy
ZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIGZhbHNlKTsKKwogICAgICAgICBUcmVlU3Rh
dGVtZW50IGRlZmluZUZpZWxkID0gY29udGV4dC5jcmVhdGVEZWZpbmVGaWVsZChmaWVsZExvY2F0
aW9uLCBpZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUpOwogICAgICAgICBjb250ZXh0LmFwcGVuZFN0
YXRlbWVudChzb3VyY2VFbGVtZW50cywgZGVmaW5lRmllbGQpOwogICAgIH0KQEAgLTQ3OTgsNiAr
NDgyNywyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkQ2FsbE9yQXBwbHlEZXB0aChQYXJz
ZXJUeXBlKiwgVk0mLCBPcHRpb25hbDx0eXBlbmFtZSBQYQogewogfQogCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgorYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6dXNlUHJpdmF0ZU5hbWUo
Y29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7CisgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5n
RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoYXV0byBtYXliZUN1
cnJlbnQgPSBmaW5kUHJpdmF0ZU5hbWVTY29wZSgpKSB7CisgICAgICAgIFNjb3BlUmVmIGN1cnJl
bnQgPSBtYXliZUN1cnJlbnQudmFsdWUoKTsKKyAgICAgICAgaWYgKCFjdXJyZW50LT5oYXNQcml2
YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICAgICAgY3VycmVudC0+dXNlUHJpdmF0ZU5hbWUoKmlk
ZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHBy
ZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewpAQCAtNDk5OSw4ICs1MDQ0LDIxIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25U
cml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24g
ZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAg
bmV4dEV4cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtleXdvcmRzIHwgTGV4
ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7CisgICAgICAgICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBh
dXRvIHR5cGUgPSBEb3RUeXBlOjpOYW1lOworICAgICAgICAgICAgICAgIGlmIChtYXRjaChQUklW
QVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAg
ICAgICAgICAgICAgZmFpbElmVHJ1ZShiYXNlSXNTdXBlciwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0
ZSBuYW1lcyBmcm9tIHN1cGVyIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShj
dXJyZW50U2NvcGUoKS0+ZXZhbENvbnRleHRUeXBlKCkgPT0gRXZhbENvbnRleHRUeXBlOjpJbnN0
YW5jZUZpZWxkRXZhbENvbnRleHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aGFzUHJpdmF0ZU5hbWUoKmlkZW50KSwgIkNhbm5v
dCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRlIGZpZWxkICciLCBpZGVudC0+aW1wbCgpLCAi
JyIpOworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVO
YW1lKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgcHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNs
YXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1l
ID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJs
ZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJp
dmF0ZU5hbWU7CisgICAgICAgICAgICAgICAgICAgIG1fdG9rZW4ubV90eXBlID0gSURFTlQ7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhw
ZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIGFmdGVyICIsIG9wdGlvbmFsQ2hhaW5CYXNlID8gIic/Lici
IDogIicuJyIpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vz
cyhzdGFydExvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0
YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAg
IGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhzdGFydExvY2F0aW9uLCBiYXNlLCBpZGVu
dCwgdHlwZSwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZFBvc2l0aW9u
KCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShiYXNlSXNTdXBlciAmJiBjdXJyZW50
U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICBjdXJyZW50
RnVuY3Rpb25TY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3VwZXJQcm9wZXJ0eSgp
OwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTUxOTUsNiArNTI1Myw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVU
T0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChjb250ZXh0LmlzUmVzb2x2ZShl
eHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkgJyIsIG1fcGFyc2VyU3Rh
dGUubGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZShjb250ZXh0LmlzUHJpdmF0ZUxvY2F0aW9uKGV4cHIpLCAi
Q2Fubm90IGRlbGV0ZSBwcml2YXRlIGZpZWxkICIsIG1fcGFyc2VyU3RhdGUubGFzdFByaXZhdGVO
YW1lLT5pbXBsKCkpOwogICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUo
bG9jYXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3Rh
Y2tEZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgpAQCAtNTI3MSw3ICs1MzMwLDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHZv
aWQgUGFyc2VyPExleGVyVHlwZT46OnByaW50VW5leHBlY3RlZFRva2VuVGV4dChXCiAgICAgY2Fz
ZSBJTlZBTElEX1BSSVZBVEVfTkFNRV9FUlJPUlRPSzoKICAgICAgICAgb3V0LnByaW50KCJJbnZh
bGlkIHByaXZhdGUgbmFtZSAnIiwgZ2V0VG9rZW4oKSwgIiciKTsKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgCisKKyAgICBjYXNlIFBSSVZBVEVOQU1FOgorICAgICAgICBvdXQucHJpbnQo
IlVuZXhwZWN0ZWQgcHJpdmF0ZSBuYW1lICIsIGdldFRva2VuKCkpOworICAgICAgICByZXR1cm47
CisKICAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6CiAgICAgICAgIG91dC5wcmludCgi
VW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tlbigpLCAiJyIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNTRiMzk3MzA5ZWEyZmNjZjM3MzFmYmU5OThkYWI1
OTljOWJiZTAxNi4uMWY1ZDkzMmMzZjU3NWViMjA1NTc0MDRlNTY0MTg3ZmJmNzViOTY2OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0yOTAsNiArMjkwLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNHZW5lcmF0b3JCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNH
ZW5lcmF0b3JCb3VuZGFyeTsgfQogICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb247IH0KICAgICBib29sIGlzQXN5bmNGdW5jdGlvbkJvdW5k
YXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeTsgfQorICAgIGJv
b2wgaXNQcml2YXRlTmFtZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzU2NvcGU7IH0K
ICAgICBib29sIGlzQ2xhc3NTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbGFzc1Njb3BlOyB9
CiAKICAgICBib29sIGhhc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQXJndW1lbnRz
OyB9CkBAIC0zMDksNiArMzEwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hbGxvd3NMZXhpY2Fs
RGVjbGFyYXRpb25zID0gdHJ1ZTsKICAgICB9CiAKKyAgICB2b2lkIHNldElzUHJpdmF0ZU5hbWVT
Y29wZSgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBpc1ByaXZhdGVOYW1l
U2NvcGUgaXMgYW4gYWxpYXMgZm9yIGlzQ2xhc3NTY29wZSAtLS0gVGhpcyBpcyBwb3RlbnRpYWxs
eSBtaXNsZWFkaW5nLAorICAgICAgICAvLyBwYXJ0aWN1bGFybHkgd2hlbiBwYXJzaW5nIGRpcmVj
dCBldmFsIGNvZGUgd2hpY2ggb2NjdXJzIHdpdGhpbiBhIGNsYXNzLgorICAgICAgICBzZXRJc0Ns
YXNzU2NvcGUoKTsKKyAgICB9CisKICAgICB2b2lkIHNldElzQ2xhc3NTY29wZSgpCiAgICAgewog
ICAgICAgICBtX2lzQ2xhc3NTY29wZSA9IHRydWU7CkBAIC00NzUsNyArNDgzLDQ0IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2xleGljYWxWYXJpYWJsZXMuY29udGFpbnMoaWRl
bnQuZ2V0KCkpOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgaGFzUHJpdmF0ZU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICByZXR1cm4gbV9sZXhpY2FsVmFyaWFi
bGVzLmhhc1ByaXZhdGVOYW1lKGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHlVbmRlY2xh
cmVkUHJpdmF0ZU5hbWVzVG8oU2NvcGUmIG90aGVyKQorICAgIHsKKyAgICAgICAgbV9sZXhpY2Fs
VmFyaWFibGVzLmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8ob3RoZXIubV9sZXhpY2FsVmFy
aWFibGVzKTsKKyAgICB9CisKKyAgICBib29sIGhhc1VzZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5h
bWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0
ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogbV9sZXhp
Y2FsVmFyaWFibGVzLnByaXZhdGVOYW1lcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5
LnZhbHVlLmlzVXNlZCgpICYmICFlbnRyeS52YWx1ZS5pc0RlY2xhcmVkKCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERl
Y2xhcmF0aW9ucyk7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy51c2VQcml2YXRlTmFtZShp
ZGVudCk7CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRl
TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2Fs
bG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sg
cmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgICAg
ICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xh
cmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSBib29sIGhhc0RlY2xhcmVkUGFy
YW1ldGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGhh
c0RlY2xhcmVkUGFyYW1ldGVyKGlkZW50LmltcGwoKSk7CkBAIC05MTAsNyArOTU1LDcgQEAgcHVi
bGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0
IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0LCBPcHRpb25hbDxp
bnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6Om51bGxv
cHQsIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qID0gbnVsbHB0cik7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmll
ciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6bnVsbG9wdCwgY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCogPSBudWxscHRyLCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+KiA9IG51bGxwdHIpOwogCiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsgfQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbkJlZm9yZUxhc3RUb2tlbigpIGNv
bnN0IHsgcmV0dXJuIG1fbGV4ZXItPmxhc3RUb2tlbkxvY2F0aW9uKCk7IH0KQEAgLTExODMsNiAr
MTIyOCw0NCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFj
aywgaSk7CiAgICAgfQogCisgICAgT3B0aW9uYWw8U2NvcGVSZWY+IGZpbmRQcml2YXRlTmFtZVNj
b3BlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAgICAg
ICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICB3aGlsZSAo
aSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAg
aS0tOworCisgICAgICAgIGlmIChtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNjb3BlKCkp
CisgICAgICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBTY29wZVJlZiBwcml2YXRlTmFt
ZVNjb3BlKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpKTsKKyAg
ICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOworICAgICAgICB3aGls
ZSAoaSAmJiAhbV9zY29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAg
ICAgaS0tOworCisgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRlTmFtZVNj
b3BlKCkpOworICAgICAgICByZXR1cm4gU2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CisgICAg
fQorCisgICAgYm9vbCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpCisg
ICAgeworICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gcHJpdmF0ZU5hbWVTY29wZSgpOworICAg
ICAgICB1bnNpZ25lZCBpID0gY3VycmVudC5pbmRleCgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkg
JiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGkt
LTsKKworICAgICAgICBpZiAoIWkpCisgICAgICAgICAgICByZXR1cm4gIWN1cnJlbnQtPmhhc1Vz
ZWRCdXRVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzKCk7CisKKyAgICAgICAgY3VycmVudC0+Y29weVVu
ZGVjbGFyZWRQcml2YXRlTmFtZXNUbyhtX3Njb3BlU3RhY2tbaV0pOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKICAgICBTY29wZVJlZiBjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlv
bk5vbkxleGljYWxTY29wZSgpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0
YWNrLnNpemUoKSAtIDE7CkBAIC0xNDYyLDYgKzE1NDUsMTYgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hBbmRVcGRhdGUoSlNUb2tlblR5cGUgZXhwZWN0ZWQsIGNv
bnN0IEpTVG9rZW4mIHRva2VuKQorICAgIHsKKyAgICAgICAgaWYgKG1hdGNoKGV4cGVjdGVkKSkg
eworICAgICAgICAgICAgbV90b2tlbiA9IHRva2VuOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIAogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBtYXRjaENvbnRleHR1YWxLZXl3b3JkKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiAgICAgewpAQCAtMTcxNSw2ICsxODA4LDggQEAgcHJpdmF0ZToKIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIGlzU2ltcGxl
QXNzaWdubWVudFRhcmdldChUcmVlQnVpbGRlciYsIFRyZWVFeHByZXNzaW9uKTsKIAorICAgIEFM
V0FZU19JTkxJTkUgYm9vbCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyKik7CisKICAg
ICBBTFdBWVNfSU5MSU5FIGludCBpc0JpbmFyeU9wZXJhdG9yKEpTVG9rZW5UeXBlKTsKICAgICBi
b29sIGFsbG93QXV0b21hdGljU2VtaWNvbG9uKCk7CiAgICAgCkBAIC0xODA5LDYgKzE5MDQsNyBA
QCBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblBhcnNlUGhhc2UgZnVuY3Rpb25QYXJzZVBoYXNl
IHsgRnVuY3Rpb25QYXJzZVBoYXNlOjpCb2R5IH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGxhc3RJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBs
YXN0RnVuY3Rpb25OYW1lIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBs
YXN0UHJpdmF0ZU5hbWUgeyBudWxscHRyIH07CiAgICAgICAgIGJvb2wgYWxsb3dBd2FpdCB7IHRy
dWUgfTsKICAgICAgICAgYm9vbCBpc1BhcnNpbmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIgeyBmYWxz
ZSB9OwogICAgIH07CkBAIC0xOTU5LDcgKzIwNTUsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci1zdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9y
JiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9wdGlvbmFsPGludD4gZnVu
Y3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29uc3QgVmVjdG9yPEpTVGV4
dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKK3N0ZDo6dW5pcXVlX3B0cjxQYXJz
ZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25z
dCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBQYXJz
aW5nQ29udGV4dCBwYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVj
dG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJp
YWJsZXNVbmRlclREWiwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVs
ZExvY2F0aW9ucykKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwpAQCAt
MTk3NCw2ICsyMDcwLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgQVNTRVJUKG1f
c291cmNlLT5zdGFydENvbHVtbigpID4gT3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSk7CiAg
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSBtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKS56ZXJvQmFz
ZWRJbnQoKTsKIAorICAgIGlmIChpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgJiYgdmFyaWFibGVz
VW5kZXJURFogJiYgdmFyaWFibGVzVW5kZXJURFotPnByaXZhdGVOYW1lc1NpemUoKSkgeworICAg
ICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SXNQcml2YXRlTmFtZVNjb3BlKCk7CisgICAgICAgIHZh
cmlhYmxlc1VuZGVyVERaLT5jb3B5UHJpdmF0ZU5hbWVzVG8oY3VycmVudFNjb3BlKCktPmxleGlj
YWxWYXJpYWJsZXMoKSk7CisgICAgfQorCiAgICAgYXV0byBwYXJzZVJlc3VsdCA9IHBhcnNlSW5u
ZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBwYXJzaW5nQ29udGV4dCwgZnVuY3Rpb25Db25zdHJ1
Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAKICAg
ICBpbnQgbGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKQEAgLTIwNTgsNiArMjE1
OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBEZXJpdmVkQ29u
dGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlID0gRGVyaXZlZENvbnRleHRUeXBlOjpOb25lLAog
ICAgIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUsCiAgICAgRGVidWdnZXJQYXJzZURhdGEqIGRlYnVnZ2VyUGFyc2VEYXRhID0gbnVsbHB0ciwK
KyAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiB2YXJpYWJsZXNVbmRlclREWiA9IG51bGxw
dHIsCiAgICAgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0
aW9ucyA9IG51bGxwdHIsCiAgICAgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24gPSBmYWxz
ZSkKIHsKQEAgLTIwNzAsNyArMjE3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChz
b3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4Qml0KCkpIHsKICAgICAgICAgUGFyc2VyPExl
eGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBz
Y3JpcHRNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZEZvclRvcExldmVsRnVuY3Rpb24sIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNFdmFsTm9kZTxQYXJz
ZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUsIGRlYnVnZ2VyUGFyc2VEYXRhLCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24pOwotICAgICAgICByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9k
ZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpID8gUGFy
c2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0
LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9k
ZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdU
Rjo6bnVsbG9wdCwgdmFyaWFibGVzVW5kZXJURFosIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwog
ICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0
aW4pIHsKQEAgLTIwODMsNyArMjE4NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRD
b25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uID09IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSwgIkJ1aWx0aW5FeGVjdXRhYmxlcydzIHNwZWNpYWwgY29uc3RydWN0b3JzIHNob3VsZCBhbHdh
eXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBh
cnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFy
c2VNb2RlLCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1
bmN0aW9uLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZh
bENvbnRleHRUeXBlLCBkZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9u
KTsKLSAgICAgICAgcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1l
LCBwYXJzZU1vZGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpF
dmFsIDogUGFyc2luZ0NvbnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVs
ZExvY2F0aW9ucyk7CisgICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihl
cnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5n
Q29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZh
cmlhYmxlc1VuZGVyVERaLCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggZGUwZWJlYWY4
NWZkNzEyMzcxN2Y4NzcxMTI3ZjcxOTIzZmZlNjc0OC4uN2IzYzFlYzNiN2Y2YTZiMTFiZmM0NWY0
YmM5MWQwNDgxMmY0Y2QyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAgRE9V
QkxFLAogICAgIEJJR0lOVCwKICAgICBJREVOVCwKKyAgICBQUklWQVRFTkFNRSwKICAgICBTVFJJ
TkcsCiAgICAgVEVNUExBVEUsCiAgICAgUkVHRVhQLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBhYWIwYjc0ZGFhODkwNjQ0NjgwYmNiZDJmMDg4
ZWFiZGNhOTNkZDA2Li40M2Y1YTkyZWM3NmJiNjViODc2ZDg1ODdkMTk0NDEyYTJhMDczOTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtNzMs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlc29sdmVFdmFsRXhwciwgUmVzb2x2ZUV4cHIs
IEludGVnZXJFeHByLCBEb3VibGVFeHByLCBTdHJpbmdFeHByLCBCaWdJbnRFeHByLAogICAgICAg
ICBUaGlzRXhwciwgTnVsbEV4cHIsIEJvb2xFeHByLCBSZWdFeHBFeHByLCBPYmplY3RMaXRlcmFs
RXhwciwKICAgICAgICAgRnVuY3Rpb25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgSW1wb3J0
RXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxFeHByLAotICAgICAgICBOZXdFeHByLCBQ
cmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHByLCBPcHRpb25hbENoYWluLAor
ICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5hcnlFeHBy
LCBPcHRpb25hbENoYWluLCBQcml2YXRlRG90RXhwciwKICAgICAgICAgQ29uZGl0aW9uYWxFeHBy
LCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlM
aXRlcmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAg
IEFycmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNS
ZXN1bHQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4
cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpIHsgcmV0dXJuIE51bGxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tl
dEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lv
blR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
RG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIERvdFR5cGUg
dHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gdHlwZSA9PSBEb3RUeXBlOjpQcml2YXRlTmFt
ZSA/IFByaXZhdGVEb3RFeHByIDogRG90RXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJu
LCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50KSB7IHJldHVybiBZYXJyOjpoYXNFcnJvcihZ
YXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnN0cmluZygpLCBmbGFncy5zdHJpbmcoKSkpID8gMCA6
IFJlZ0V4cEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIE5ld0V4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhw
cjsgfQpAQCAtNDAzLDcgKzQwMywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTG9jYXRpb24o
RXhwcmVzc2lvblR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlID09IFJlc29s
dmVFeHByIHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgICAg
ICByZXR1cm4gdHlwZSA9PSBSZXNvbHZlRXhwciB8fCB0eXBlID09IERvdEV4cHIgfHwgdHlwZSA9
PSBQcml2YXRlRG90RXhwciB8fCB0eXBlID09IEJyYWNrZXRFeHByOworICAgIH0KKworICAgIGJv
b2wgaXNQcml2YXRlTG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0eXBlID09IFByaXZhdGVEb3RFeHByOwogICAgIH0KIAogICAgIGJvb2wgaXNBc3Np
Z25tZW50TG9jYXRpb24oRXhwcmVzc2lvblR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDhlNjkxNTFj
N2I2Y2IzMTExYjBmZTc3Y2U4OTczMDc0MDYyZjVmNWEuLjFmNTcwODhhMzRjNjYzY2E3MDJmNzdk
NDc3NDA2OTZlMjY3Njg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMjksNiArMjksMTYgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK1ZhcmlhYmxlRW52aXJvbm1lbnQmIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om9w
ZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKK3sKKyAgICBtX21hcCA9
IG90aGVyLm1fbWFwOworICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZl
cnl0aGluZ0NhcHR1cmVkOworICAgIG1fcmFyZURhdGEucmVzZXQoKTsKKyAgICBpZiAob3RoZXIu
bV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJs
ZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKm90aGVyLm1fcmFyZURhdGEpOworICAgIHJldHVybiAq
dGhpczsKK30KKwogdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0NhcHR1
cmVkSWZEZWZpbmVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
CiB7CiAgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKQEAgLTgw
LDYgKzkwLDcgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlhYmxlRW52aXJv
bm1lbnQmIG90aGVyKQogewogICAgIG1fbWFwLnN3YXAob3RoZXIubV9tYXApOwogICAgIG1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOworICAgIG1f
cmFyZURhdGEuc3dhcChvdGhlci5tX3JhcmVEYXRhKTsKIH0KIAogdm9pZCBWYXJpYWJsZUVudmly
b25tZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpCkBAIC0xMDAsNyArMTExLDcgQEAgQ29tcGFjdFZhcmlhYmxlRW52
aXJvbm1lbnQ6OkNvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQKICAgICA6IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQoZW52LmlzRXZlcnl0aGluZ0NhcHR1
cmVkKCkpCiB7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxVbmlxdWVkU3RyaW5nSW1wbCosIFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeT4sIDMyPiBzb3J0ZWRFbnRyaWVzOwotICAgIHNvcnRlZEVudHJp
ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYuc2l6ZSgpKTsKKyAgICBzb3J0ZWRFbnRyaWVz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZW52Lm1hcFNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBw
YWlyIDogZW52KQogICAgICAgICBzb3J0ZWRFbnRyaWVzLmFwcGVuZCh7IHBhaXIua2V5LmdldCgp
LCBwYWlyLnZhbHVlIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDUzMmQxNDZlZmQxZmNhZTUzMjY5ZTc1ZGY2ZjVm
ZGJlYTE5OTJjNTIuLjE3N2Y4ODE1YmMzYTM3ZTRlYWQ2YmQ2MDFhY2NmNGZhYzAxM2YyMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5oCkBAIC0yNyw2ICsyNyw4IEBACiAKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9JdGVyYXRvclJhbmdlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00Miw2ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzRnVuY3Rpb247IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQYXJh
bWV0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1BhcmFtZXRlcjsgfQogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1By
aXZhdGVOYW1lOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsg
bV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25z
dCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTUzLDYgKzU2LDcgQEAgcHVibGljOgogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0Z1bmN0aW9uKCkgeyBtX2JpdHMgfD0gSXNGdW5jdGlv
bjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1BhcmFtZXRlcigpIHsgbV9iaXRzIHw9
IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRh
dGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTmFtZSgpIHsgbV9iaXRz
IHw9IElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFy
KCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTc0LDcgKzc4LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgSXNJbXBvcnRlZE5hbWVzcGFjZSA9IDEgPDwgNiwKICAgICAgICAgSXNGdW5jdGlvbiA9
IDEgPDwgNywKICAgICAgICAgSXNQYXJhbWV0ZXIgPSAxIDw8IDgsCi0gICAgICAgIElzU2xvcHB5
TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5CisgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAorICAgICAgICBJc1ByaXZhdGVOYW1lID0gMSA8PCAxMCwK
ICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC04MywxNSArODgsNTUg
QEAgc3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRz
PFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeT4KICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwogfTsKIAorc3RydWN0IFByaXZhdGVOYW1lRW50cnkgewor
cHVibGljOgorICAgIFByaXZhdGVOYW1lRW50cnkodWludDE2X3QgdHJhaXRzID0gMCkgeyBtX2Jp
dHMgPSB0cmFpdHM7IH0KKworICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNs
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0K
KworICAgIHVpbnQxNl90IGJpdHMoKSBjb25zdCB7IHJldHVybiBtX2JpdHM7IH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQcml2YXRlTmFtZUVudHJ5JiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2JpdHMgPT0gb3RoZXIubV9iaXRzOworICAgIH0KKworICAgIGVu
dW0gVHJhaXRzIDogdWludDE2X3QgeworICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCisgICAgICAg
IElzRGVjbGFyZWQgPSAxIDw8IDEsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICB1aW50MTZfdCBt
X2JpdHMgeyAwIH07Cit9OworCitzdHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHMgOiBI
YXNoVHJhaXRzPFByaXZhdGVOYW1lRW50cnk+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gZmFsc2U7Cit9OworCiBjbGFzcyBWYXJpYWJsZUVudmlyb25tZW50IHsK
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhY2tlZFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eUhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFja2VkUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgUHJpdmF0ZU5hbWVFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hU
cmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnlIYXNoVHJh
aXRzPiBQcml2YXRlTmFtZXM7CiBwdWJsaWM6Ci0gICAgVmFyaWFibGVFbnZpcm9ubWVudCgpID0g
ZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50KFZhcmlhYmxlRW52aXJvbm1lbnQmJiBv
dGhlcikgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRv
cj0oY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYpID0gZGVmYXVsdDsKLSAgICBWYXJpYWJsZUVu
dmlyb25tZW50JiBvcGVyYXRvcj0oVmFyaWFibGVFbnZpcm9ubWVudCYmKSA9IGRlZmF1bHQ7Cisg
ICAgVmFyaWFibGVFbnZpcm9ubWVudCgpIHsgfQorICAgIFZhcmlhYmxlRW52aXJvbm1lbnQoVmFy
aWFibGVFbnZpcm9ubWVudCYmIG90aGVyKQorICAgICAgICA6IG1fbWFwKFdURk1vdmUob3RoZXIu
bV9tYXApKQorICAgICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKFdURk1vdmUob3RoZXIubV9yYXJl
RGF0YSkpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50KGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnQmIG90aGVyKQorICAgICAgICA6IG1fbWFwKG90aGVyLm1fbWFwKQorICAg
ICAgICAsIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQob3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJl
ZCkKKyAgICAgICAgLCBtX3JhcmVEYXRhKG90aGVyLm1fcmFyZURhdGEgPyBXVEY6Om1ha2VVbmlx
dWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCpvdGhlci5tX3JhcmVEYXRhKSA6IG51
bGxwdHIpCisgICAgeworICAgIH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBvcGVyYXRvcj0o
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpOwogCiAgICAgQUxXQVlTX0lOTElORSBN
YXA6Oml0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgTWFwOjppdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX21hcC5lbmQoKTsgfQpAQCAt
OTksNyArMTQ0LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX21hcC5lbmQoKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpIHsgcmV0dXJuIG1fbWFwLmFkZChpZGVudGlmaWVyLCBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkoKSk7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGFkZChjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZGQoaWRlbnRpZmllci5pbXBsKCkp
OyB9Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
YXAuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXAuc2l6ZSgpICsgcHJpdmF0ZU5hbWVzU2l6ZSgpOyB9CisgICAgQUxXQVlTX0lO
TElORSB1bnNpZ25lZCBtYXBTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGNvbnRhaW5zKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGlkZW50aWZp
ZXIpOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIHJlbW92ZShjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5yZW1vdmUoaWRlbnRpZmll
cik7IH0KICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgZmluZChjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKSB7IHJldHVybiBtX21hcC5maW5kKGlkZW50
aWZpZXIpOyB9CkBAIC0xMTYsMTEgKzE2MiwxMDQgQEAgcHVibGljOgogICAgIGJvb2wgaXNFdmVy
eXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkOyB9
CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fbWFwLnNpemUoKTsgfQogCisg
ICAgdXNpbmcgUHJpdmF0ZU5hbWVzUmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5h
bWVzOjppdGVyYXRvcj47CisKKyAgICBBTFdBWVNfSU5MSU5FIE1hcDo6QWRkUmVzdWx0IGRlY2xh
cmVQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNs
YXJlUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJp
dmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CisKKyAgICBNYXA6OkFkZFJlc3VsdCBkZWNs
YXJlUHJpdmF0ZU5hbWUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
cikKKyAgICB7CisgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50
aWZpZXIuZ2V0KCkpOworICAgICAgICBtZXRhLnNldElzRGVjbGFyZWQoKTsKKyAgICAgICAgYXV0
byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJ
c1ByaXZhdGVOYW1lKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50
cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICByZXR1cm4gbV9tYXAuYWRkKGlkZW50aWZpZXIs
IGVudHJ5KTsKKyAgICB9CisgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9
IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0
SXNVc2VkKCk7CisgICAgICAgIGlmIChtZXRhLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgIGZp
bmQoaWRlbnRpZmllciktPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIFByaXZhdGVOYW1lc1JhbmdlIHByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgewor
ICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBiZSBndWFyZGVkIHRvIHBy
ZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4KKyAgICAgICAgQVNTRVJU
KHByaXZhdGVOYW1lc1NpemUoKSA+IDApOworICAgICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFu
Z2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVnaW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgcHJp
dmF0ZU5hbWVzU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLnNpemUoKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaGFzUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIGlmICgh
bV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmNvbnRhaW5zKGlkZW50aWZpZXIuaW1wbCgpKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVByaXZhdGVOYW1lc1RvKFZhcmlhYmxl
RW52aXJvbm1lbnQmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRh
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW90aGVyLm1fcmFyZURhdGEpCisg
ICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAgICAgICBpZiAocHJpdmF0ZU5hbWVzU2l6ZSgpID4g
MCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIShlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiBlbnRyeS52YWx1ZS5p
c0RlY2xhcmVkKCkpKQorICAgICAgICAgICAgICAgICAgICBvdGhlci5tX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY29weVVuZGVjbGFyZWRQ
cml2YXRlTmFtZXNUbyhWYXJpYWJsZUVudmlyb25tZW50JiBvdXRlcikgY29uc3QgeworICAgICAg
ICAvLyBVc2VkIGJ5IHRoZSBQYXJzZXIgdG8gdHJhbnNmZXIgcmVjb3JkZWQgdXNlcyBvZiBQcml2
YXRlTmFtZXMgZnJvbSBhbgorICAgICAgICAvLyBpbm5lciBQcml2YXRlTmFtZUVudmlyb25tZW50
IGludG8gYW4gb3V0ZXIgb25lLCBpbiBjYXNlIGEgUE5FIGlzIHVzZWQKKyAgICAgICAgLy8gZWFy
bGllciBpbiB0aGUgc291cmNlIGNvZGUgdGhhbiBpdCBpcyBkZWZpbmVkLgorICAgICAgICBpZiAo
cHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCkgeworICAgICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDog
cHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNVc2Vk
KCkgJiYgIWVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgb3V0
ZXIuZ2V0T3JBZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCkpLnNldElzVXNlZCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFJhcmVEYXRhIHsKKyAg
ICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAgIFJhcmVEYXRh
KCkgeyB9CisgICAgICAgIFJhcmVEYXRhKFJhcmVEYXRhJiYgb3RoZXIpCisgICAgICAgICAgICA6
IG1fcHJpdmF0ZU5hbWVzKFdURk1vdmUob3RoZXIubV9wcml2YXRlTmFtZXMpKQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgUmFyZURhdGEoY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7
CisgICAgICAgIFJhcmVEYXRhJiBvcGVyYXRvcj0oY29uc3QgUmFyZURhdGEmKSA9IGRlZmF1bHQ7
CisgICAgICAgIFByaXZhdGVOYW1lcyBtX3ByaXZhdGVOYW1lczsKKyAgICB9OworCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50OwogCiAgICAgTWFw
IG1fbWFwOwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCB7IGZhbHNlIH07CisKKyAg
ICBQcml2YXRlTmFtZUVudHJ5JiBnZXRPckFkZFByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJbXBs
KiBpbXBsKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgbV9y
YXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4o
KTsKKworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGltcGws
IFByaXZhdGVOYW1lRW50cnkoMCkpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICB9CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9
OwogCiBjbGFzcyBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggNjAxZDAxOWRmOTNmOGYyZjhj
YzZjMWY1OTFhOTQxNTQ4ZGMwN2ZjYi4uNWVjZTZkYTE2YjA2MDczMjk1YTRhNmI2NjgxYjllZmU1
ODRkNmY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmNwcApAQCAtODU2LDYgKzg1NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGVuY29kZShlbmNvZGVyLCB7ICpzb3VyY2UgfSk7CiAgICAgfQorCisgICAgU291cmNlVHlw
ZTxUPiogZGVjb2RlQXNQdHIoRGVjb2RlciYgZGVjb2RlcikgY29uc3QKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCF0aGlzLT5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gdGhpcy0+
dGVtcGxhdGUgYnVmZmVyPFQ+KCktPmRlY29kZShkZWNvZGVyKTsKKyAgICB9CiB9OwogCiBjbGFz
cyBDYWNoZWRTaW1wbGVKdW1wVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlPiB7CkBAIC0xMDAzLDIzICsxMDA5LDQ1IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA6IDE7CiB9OwogCitjbGFzcyBDYWNo
ZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGEmIHJhcmVE
YXRhKQorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVE
YXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0Cisg
ICAgeworICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9w
cml2YXRlTmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoTWFwPENhY2hl
ZFJlZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6
UGFja2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFByaXZhdGVOYW1lRW50cnksIElk
ZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+LCBQ
cml2YXRlTmFtZUVudHJ5SGFzaFRyYWl0cz4gbV9wcml2YXRlTmFtZXM7Cit9OworCiBjbGFzcyBD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVu
dmlyb25tZW50PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52KQogICAgIHsKICAgICAgICAgbV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZCA9IGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogICAgICAgICBtX21h
cC5lbmNvZGUoZW5jb2RlciwgZW52Lm1fbWFwKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUo
ZW5jb2RlciwgZW52Lm1fcmFyZURhdGEuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikgY29uc3QKICAgICB7
CiAgICAgICAgIGVudi5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZDsKICAgICAgICAgbV9tYXAuZGVjb2RlKGRlY29kZXIsIGVudi5tX21hcCk7CisgICAgICAg
IGlmICghbV9yYXJlRGF0YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGVudi5tX3JhcmVEYXRh
ID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+ZGVjb2RlKGRlY29kZXIsICplbnYubV9yYXJlRGF0YSk7Cisg
ICAgICAgIH0KICAgICB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzRXZlcnl0aGluZ0NhcHR1
cmVkOwogICAgIENhY2hlZEhhc2hNYXA8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJ
bXBsLCBVbmlxdWVkU3RyaW5nSW1wbCwgV1RGOjpQYWNrZWRQdHJUcmFpdHM8VW5pcXVlZFN0cmlu
Z0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5SGFzaFRyYWl0cz4gbV9tYXA7CisgICAgQ2FjaGVkUHRyPENhY2hlZFZhcmlhYmxlRW52aXJv
bm1lbnRSYXJlRGF0YT4gbV9yYXJlRGF0YTsKIH07CiAKIGNsYXNzIENhY2hlZENvbXBhY3RWYXJp
YWJsZUVudmlyb25tZW50IDogcHVibGljIENhY2hlZE9iamVjdDxDb21wYWN0VmFyaWFibGVFbnZp
cm9ubWVudD4gewpAQCAtMTE0Nyw2ICsxMTc1LDIyIEBAIHByaXZhdGU6CiAgICAgaW50cHRyX3Qg
bV9iaXRzOwogfTsKIAorY2xhc3MgQ2FjaGVkU3ltYm9sVGFibGVSYXJlRGF0YSA6IHB1YmxpYyBD
YWNoZWRPYmplY3Q8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+IHsKK3B1YmxpYzoK
KyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTeW1ib2xUYWJsZTo6U3lt
Ym9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEpCisgICAgeworICAgICAgICBtX3ByaXZhdGVOYW1l
cy5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9wcml2YXRlTmFtZXMpOworICAgIH0KKworICAg
IHZvaWQgZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFN5bWJvbFRhYmxlOjpTeW1ib2xUYWJsZVJh
cmVEYXRhJiByYXJlRGF0YSkgY29uc3QKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5hbWVzLmRl
Y29kZShkZWNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCitwcml2YXRl
OgorICAgIENhY2hlZEhhc2hTZXQ8Q2FjaGVkUmVmUHRyPENhY2hlZFVuaXF1ZWRTdHJpbmdJbXBs
PiwgSWRlbnRpZmllclJlcEhhc2g+IG1fcHJpdmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVk
U3ltYm9sVGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlPiB7CiBwdWJsaWM6
CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3ltYm9sVGFibGUmIHN5
bWJvbFRhYmxlKQpAQCAtMTE1Nyw2ICsxMjAxLDcgQEAgcHVibGljOgogICAgICAgICBtX25lc3Rl
ZExleGljYWxTY29wZSA9IHN5bWJvbFRhYmxlLm1fbmVzdGVkTGV4aWNhbFNjb3BlOwogICAgICAg
ICBtX3Njb3BlVHlwZSA9IHN5bWJvbFRhYmxlLm1fc2NvcGVUeXBlOwogICAgICAgICBtX2FyZ3Vt
ZW50cy5lbmNvZGUoZW5jb2Rlciwgc3ltYm9sVGFibGUubV9hcmd1bWVudHMuZ2V0KCkpOworICAg
ICAgICBtX3JhcmVEYXRhLmVuY29kZShlbmNvZGVyLCBzeW1ib2xUYWJsZS5tX3JhcmVEYXRhLmdl
dCgpKTsKICAgICB9CiAKICAgICBTeW1ib2xUYWJsZSogZGVjb2RlKERlY29kZXImIGRlY29kZXIp
IGNvbnN0CkBAIC0xMTcwLDYgKzEyMTUsMTEgQEAgcHVibGljOgogICAgICAgICBTY29wZWRBcmd1
bWVudHNUYWJsZSogc2NvcGVkQXJndW1lbnRzVGFibGUgPSBtX2FyZ3VtZW50cy5kZWNvZGUoZGVj
b2Rlcik7CiAgICAgICAgIGlmIChzY29wZWRBcmd1bWVudHNUYWJsZSkKICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLT5tX2FyZ3VtZW50cy5zZXQoZGVjb2Rlci52bSgpLCBzeW1ib2xUYWJsZSwgc2Nv
cGVkQXJndW1lbnRzVGFibGUpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxT
eW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPmRlY29kZShkZWNvZGVyLCAqc3ltYm9sVGFibGUtPm1fcmFyZURhdGEpOworICAgICAgICB9
CisKICAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlOwogICAgIH0KIApAQCAtMTE4MCw2ICsxMjMw
LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7CiAg
ICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOwogICAgIENhY2hlZFB0cjxDYWNoZWRTY29wZWRB
cmd1bWVudHNUYWJsZT4gbV9hcmd1bWVudHM7CisgICAgQ2FjaGVkUHRyPENhY2hlZFN5bWJvbFRh
YmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiB9OwogCiBjbGFzcyBDYWNoZWRKU1ZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKaW5kZXggYjRiNzE2MzM3
MzRlM2NhZDk5NTdlN2NkZmRjZGM3MzMyZGU4OWVjMy4uYWZkY2M5MDI5MTM3M2Y1MGQwNTcwZTM4
YzhkOTM1YTBhYmZjOWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2VuZXJh
dGVVbmxpbmtlZENvZGVCbG9ja0ltcGwoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzCiAgICAg
dHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3RO
b2RlIFJvb3ROb2RlOwogICAgIGJvb2wgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZXhlY3V0
YWJsZSAmJiBleGVjdXRhYmxlLT5pc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24oKTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Um9vdE5vZGU+IHJvb3ROb2RlID0gcGFyc2U8Um9vdE5vZGU+KAotICAgICAg
ICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0
aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tU
eXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5
cGUsIG51bGxwdHIsIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CisgICAgICAg
IHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtlZENvZGVCbG9ja1R5
cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJvciwgbnVsbHB0ciwg
Q29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2YWxDb250ZXh0VHlw
ZSwgbnVsbHB0ciwgdmFyaWFibGVzVW5kZXJURFosIG51bGxwdHIsIGlzSW5zaWRlT3JkaW5hcnlG
dW5jdGlvbik7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcAppbmRleCA5YTMwMGU3MzY3ODg5MmIwNTQ2ODkwNWVlZTZhNjQwMWM5OTk1ODYzLi4zNTQ0
MTVmOTUyOGFkYmI5YzJlZDVlMTVjMzUyNTcwMDU1NzYwMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zMCw2ICsz
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2RlZmluZSBJTklUSUFMSVpFX0tFWVdPUkQobmFtZSkg
LCBuYW1lIyNLZXl3b3JkKElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lKSkKICNkZWZp
bmUgSU5JVElBTElaRV9QUklWQVRFX05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlTmFtZShtX2J1
aWx0aW5OYW1lcy0+bmFtZSMjUHJpdmF0ZU5hbWUoKSkKICNkZWZpbmUgSU5JVElBTElaRV9TWU1C
T0wobmFtZSkgLCBuYW1lIyNTeW1ib2wobV9idWlsdGluTmFtZXMtPm5hbWUjI1N5bWJvbCgpKQor
I2RlZmluZSBJTklUSUFMSVpFX1BSSVZBVEVfRklFTERfTkFNRShuYW1lKSAsIG5hbWUjI1ByaXZh
dGVGaWVsZChJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiIyIgI25hbWUpKQogCiBDb21tb25J
ZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmllcnMoVk0mIHZtKQogICAgIDogbnVsbElkZW50aWZp
ZXIoKQpAQCAtNDMsNiArNDQsNyBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRpZmll
cnMoVk0mIHZtKQogICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKElOSVRJ
QUxJWkVfS0VZV09SRCkKICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlf
TkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lE
RU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9TWU1CT0wpCisgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BSSVZBVEVfRklFTEQoSU5JVElBTElaRV9QUklW
QVRFX0ZJRUxEX05BTUUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDhkYmM2ZDdhYzE4N2I3MTlkMDQ1MjY1NzAy
ODA5NjE2MjI5ZDU4ZGMuLjg1NThiYWI5MGNlNWQ4YmIzZGQxMDhlMDg0NWY4YTUyOTRmNDVmNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaApAQCAtMjA5LDYgKzIwOSw5IEBACiAgICAgbWFjcm8od3JpdGFibGUpIFwKICAgICBtYWNy
byh5ZWFyKQogCisjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklWQVRFX0ZJ
RUxEKG1hY3JvKSBcCisgICAgbWFjcm8oY29uc3RydWN0b3IpCisKICNkZWZpbmUgSlNDX0NPTU1P
Tl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhhd2FpdCkgXAog
ICAgIG1hY3JvKGJyZWFrKSBcCkBAIC0zMjMsNiArMzI2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZ
TUJPTChKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xP
QkFMKQogI3VuZGVmIEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tOT1dOX1NZ
TUJPTF9HTE9CQUwKIAorI2RlZmluZSBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklF
TERfR0xPQkFMKG5hbWUpIGNvbnN0IElkZW50aWZpZXIgbmFtZSMjUHJpdmF0ZUZpZWxkOworICAg
ICAgICBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChKU0NfSURFTlRJ
RklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMKQorI3VuZGVmIEpTQ19JREVOVElGSUVS
X0RFQ0xBUkVfUFJJVkFURV9GSUVMRF9HTE9CQUwKKwogICAgICAgICAvLyBDYWxsZXJzIG9mIHRo
aXMgbWV0aG9kIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpZGVudGlmaWVycyBnaXZlbiB0byB0aGlz
IG1ldGhvZCAKICAgICAgICAgLy8gc3Vydml2ZSB0aGUgbGlmZXRpbWUgb2YgQ29tbW9uSWRlbnRp
ZmllcnMgYW5kIHJlbGF0ZWQgVk0uCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBw
ZW5kRXh0ZXJuYWxOYW1lKGNvbnN0IElkZW50aWZpZXImIHB1YmxpY05hbWUsIGNvbnN0IElkZW50
aWZpZXImIHByaXZhdGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGEzOWMxMzc1NzU2ZmNkNTlmMjY0NWIwMDgxNGE2
MGE4NjhmYjE5YWMuLmU2ZDdhOTZlZTkyZTQzOGZjOWMwYWQwZDkxOGQ4YmM4ZjY1YzY4N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMTMzMSw2ICsxMzMxLDI4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlf
dmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklMRUQoYmFzZVZhbHVlLmdldChnbG9iYWxP
YmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfcHJpdmF0ZV9uYW1lKQoreworICAgIEJFR0lOKCk7CisKKyAgICBhdXRvIGJ5dGVjb2RlID0g
cGMtPmFzPE9wR2V0UHJpdmF0ZU5hbWU+KCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBHRVRf
QyhieXRlY29kZS5tX2Jhc2UpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEdF
VF9DKGJ5dGVjb2RlLm1fcHJvcGVydHkpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc3Vic2NyaXB0
LmlzU3ltYm9sKCkpOworCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xv
YmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBhdXRvIHByb3BlcnR5ID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKKyAgICBDSEVDS19FWENFUFRJ
T04oKTsKKyAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKKworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OkdldE93blByb3BlcnR5KTsKKyAgICBhc09iamVjdChiYXNlVmFsdWUpLT5nZXRQcml2YXRlRmll
bGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CisKKyAgICBSRVRVUk5fUFJPRklMRUQoc2xvdC5nZXRWYWx1ZShnbG9iYWxPYmplY3QsIHByb3Bl
cnR5KSk7Cit9CisKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlz
KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCmluZGV4IGJlMzc0YTBlNjI2ZjJkZjgzMzBiYWM0OTIzODk2MDgxYzRh
YTQzOWQuLmE3NmJmM2VhYmU0YTBmNWU0NDc1MGY3MTY1MDM5N2RjZGQ5ODZkNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNzUs
NiArMjc1LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXN5bmNf
Z2VuZXJhdG9yKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX3Jlc3Qp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZGVmaW5lX2RhdGFfcHJvcGVydHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCA4
YzljYTAzNDc2MDQ5NmIwYTZhZWFmMGY4MjZmYjM2NDY2M2RjMGQ3Li40MTRlN2JkZjc3YWI0ZmM3
NjRiNTY1ZGY2ZjFiZDRhMGQ2NGIzMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzI0LDYgKzMyNCwxNiBAQCBKU09i
amVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBy
ZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyB1
bmluaXRpYWxpemVkIHZhcmlhYmxlLiIpOwogfQogCitKU09iamVjdCogY3JlYXRlSW52YWxpZFBy
aXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2Vz
cyBpbnZhbGlkIHByaXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90
aGluZyk7Cit9CisKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2
YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCiBF
eGNlcHRpb24qIHRocm93T3V0T2ZNZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaApp
bmRleCBlOWE1MjMxZmM1NjRiMDdkZDM5ZDFjYWMxNDY5MDk1YTNkYmQ0MTJjLi5lMWI3ZTAyMTE4
ZDQ4YjVmNTQ0ODc0NWJkMzY0YTJlOTM5OTczYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCkBAIC01Myw2ICs1Myw4IEBAIEpTT2Jq
ZWN0KiBjcmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1
ZU5vdEZ1bmN0aW9uKEpTR2xvCiBKU09iamVjdCogY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIEpTT2JqZWN0KiBjcmVhdGVOb3RBRnVuY3Rpb25F
cnJvcihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9y
SW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKTsK
K0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCop
OworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqKTsKIFN0cmluZyBlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5
RXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggY2VhOGY4NGJjYjkyNzg3
YWY3MGU4M2FhZGUyM2YwNDM3NWNiMDg5ZS4uNmJhZGM2NzA4NmU3YzJhNTlkMjcwZmM4NmQzMTJh
M2RlMDU4ZjU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtMjk0LDYgKzI5NCwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBoYXNPd25MZW5ndGhQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
TwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0YXJnZXQtPmhhc093blByb3BlcnR5KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoKSkpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY3Jl
YXRlUHJpdmF0ZVN5bWJvbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKFN5bWJvbDo6Y3JlYXRlKHZtLCBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVs
bFN5bWJvbCgpLmdldCgpKSk7Cit9CisKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXNzZXJ0Q2FsbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKQEAgLTEyMjUsNiArMTIzMSwxMSBAQCBj
YXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVh
dHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6
Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBT
dHJpbmcoKSwgZ2xvYmFsRnVuY0RhdGVUaW1lRm9ybWF0KSk7CiAgICAgICAgIH0pOwogCisgICAg
Ly8gUHJpdmF0ZVN5bWJvbHMgLyBQcml2YXRlTmFtZXMKKyAgICBtX2xpbmtUaW1lQ29uc3RhbnRz
W3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50OjpjcmVhdGVQcml2YXRlU3lt
Ym9sKV0uaW5pdExhdGVyKFtdIChjb25zdCBJbml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Cisg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBjcmVhdGVQcml2YXRlU3lt
Ym9sKSk7CisgICAgICAgIH0pOworCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKSAmJiBFTkFCTEUo
V0VCQVNTRU1CTFlfU1RSRUFNSU5HX0FQSSkKICAgICAvLyBXZWJBc3NlbWJseSBTdHJlYW1pbmcg
QVBJCiAgICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1Rp
bWVDb25zdGFudDo6d2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5nSW50ZXJuYWwpXS5pbml0TGF0
ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDJmZDZkOTc0OWQxYzZiYzAyNWUzZjRhZjRk
NDFmNzg0YzQ4OTNkNTYuLmNmMzNkMjZhOTM0MTkyNmRjM2IyNzI2MzRhMzczZWIxNGYyODZiMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMTgwLDYgKzE4
MCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gYmVpbmcgcmV0dXJuZWQuIE9uY2UgdGhpcyBpcyBmaXhl
ZCB3ZSBzaG91bGQgbWlncmF0ZSBjb2RlICYgcmVtb3ZlIHRoaXMgbWV0aG9kLgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAorICAgIHN0YXRpYyBib29s
IGdldFByaXZhdGVGaWVsZFNsb3QoSlNPYmplY3QqLCBKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5
TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgaW5saW5lIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkKEpT
R2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAgICBpbmxpbmUg
dm9pZCBwdXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIGlubGluZSB2b2lkIGRlZmluZVByaXZhdGVGaWVs
ZChKU0dsb2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90
Jik7CisKICAgICB1bnNpZ25lZCBnZXRBcnJheUxlbmd0aCgpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSgpKSkKQEAgLTE0NDQsNiAr
MTQ0OSw3OCBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNPYmplY3Q6OmRvUHV0UHJvcGVydHlTZWN1
cml0eUNoZWNrKEpTT2JqZWN0KiwgSlNHbG9iYWxPYmplYwogewogfQogCitKU09iamVjdCogY3Jl
YXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBj
cmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CisKK0FMV0FZ
U19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdChKU09iamVjdCogb2Jq
ZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgQVNTRVJUKHByb3BlcnR5TmFtZS5pc1By
aXZhdGVOYW1lKCkpOworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBvYmplY3QtPnN0cnVjdHVyZSh2bSk7CisKKyAgICB1bnNpZ25l
ZCBhdHRyaWJ1dGVzOworICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
KHZtLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOworICAgIGlmIChvZmZzZXQgPT0gaW52YWxp
ZE9mZnNldCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgSlNWYWx1ZSB2YWx1ZSA9IG9i
amVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7CisgICAgQVNTRVJUKHZhbHVlKTsKKyAgICBpZiAodmFs
dWUuaXNDZWxsKCkpIHsKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gdmFsdWUuYXNDZWxsKCk7Cisg
ICAgICAgIEpTVHlwZSB0eXBlID0gY2VsbC0+dHlwZSgpOworICAgICAgICBVTlVTRURfUEFSQU0o
Y2VsbCk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodHlwZSwgdHlwZSAhPSBHZXR0ZXJTZXR0ZXJU
eXBlICYmIHR5cGUgIT0gQ3VzdG9tR2V0dGVyU2V0dGVyVHlwZSk7CisgICAgICAgIC8vIEZJWE1F
OiBGb3Igbm93LCBwcml2YXRlIGZpZWxkcyBkbyBub3Qgc3VwcG9ydCBnZXR0ZXIvc2V0dGVyIGZp
ZWxkcy4gTGF0ZXIgb24sIHdlIHdpbGwgbmVlZCB0byBmaWxsIGluIGFjY2Vzc29yIG1ldGFkYXRh
IGhlcmUsCisgICAgICAgIC8vIGFzIGluIEpTT2JqZWN0OjpnZXRPd25Ob25JbmRleFByb3BlcnR5
U2xvdCgpCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQ0MzUKKyAgICB9CisKKyAgICBzbG90LnNldFZhbHVlKG9iamVjdCwgYXR0cmlidXRlcywg
dmFsdWUsIG9mZnNldCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBib29sIEpTT2Jq
ZWN0OjpnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGlmICghSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QodGhpcywgZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKGdsb2Jh
bE9iamVjdCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZhbHNlKTsKKyAg
ICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgdHJ1ZSk7Cit9CisKK2lubGluZSB2b2lkIEpTT2JqZWN0Ojpw
dXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90KQor
eworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMsIFByb3Bl
cnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eSk7CisgICAgaWYgKCFKU09i
amVjdDo6Z2V0UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgc2xvdCkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FT
U0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1
dERpcmVjdCh2bSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9CisKK2lubGluZSB2
b2lkIEpTT2JqZWN0OjpkZWZpbmVQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVy
dHlTbG90JiBwdXRTbG90KQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXMsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0
eSk7CisgICAgaWYgKEpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMsIGdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKGdsb2JhbE9i
amVjdCkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHZvaWQoKSk7CisgICAg
fQorICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKworICAgIHNjb3Bl
LnJlbGVhc2UoKTsKKyAgICBwdXREaXJlY3Qodm0sIHByb3BlcnR5TmFtZSwgdmFsdWUsIHB1dFNs
b3QpOworfQorCiAvLyBJdCBtYXkgc2VlbSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlz
IGxhcmdlIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlCiAvLyBzaW5jZSB0aGlzIGlzIGZ1
bmN0aW9uIHZlcnkgaG90IGluIHZhcmlhYmxlIGxvb2t1cAogdGVtcGxhdGU8Ym9vbCBjaGVja051
bGxTdHJ1Y3R1cmU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmlu
ZGV4IDFmZTdkNjcyOWQyOTc1ZmFhZjlhMjMxYjNlZDE1NmUyOGIwNzU2ZWQuLjBlYjUyNzhmNDMy
ZTRhNDVjYjkwYWZjZDRhMzMwODEwNjhkZmU0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU2NvcGUuY3BwCkBAIC0zMzcsNiArMzM3LDEwIEBAIHZvaWQgSlNTY29wZTo6Y29s
bGVjdENsb3N1cmVWYXJpYWJsZXNVbmRlclREWihKU1Njb3BlKiBzY29wZSwgVmFyaWFibGVFbnZp
cm9ubWVuCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1f
bG9jayk7CiAgICAgICAgIGZvciAoYXV0byBlbmQgPSBzeW1ib2xUYWJsZS0+ZW5kKGxvY2tlciks
IGl0ZXIgPSBzeW1ib2xUYWJsZS0+YmVnaW4obG9ja2VyKTsgaXRlciAhPSBlbmQ7ICsraXRlcikK
ICAgICAgICAgICAgIHJlc3VsdC5hZGQoaXRlci0+a2V5KTsKKyAgICAgICAgaWYgKHN5bWJvbFRh
YmxlLT5oYXNQcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvIG5hbWUgOiBz
eW1ib2xUYWJsZS0+cHJpdmF0ZU5hbWVzKCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LnVzZVBy
aXZhdGVOYW1lKG5hbWUpOyAgICAKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYjZmZjM5MTdjNzdmM2Q3Yzdl
YzFhOGVkOTFkMGNkYjUwMjQ2ZTdmMy4uNTU3NzFkZGRmNzBiYmM2NDJmMjQ1NTQzN2RkZmQ0ZjFk
NWQ0OTIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5o
CkBAIC01MDksNiArNTA5LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJl
YW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVB1YmxpY0NsYXNzRmllbGRzLCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB0aGUgcGFyc2VyIHdpbGwgdW5kZXJzdGFuZCBwdWJsaWMgZGF0
YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikgXAogICAgIHYoQm9vbCwgdXNlUmFuZG9taXppbmdF
eGVjdXRhYmxlSXNsYW5kQWxsb2NhdGlvbiwgZmFsc2UsIE5vcm1hbCwgIkZvciB0aGUgYXJtNjQg
RXhlY3V0YWJsZUFsbG9jYXRvciwgaWYgdHJ1ZSwgc2VsZWN0IHdoaWNoIHJlZ2lvbiB0byB1c2Ug
cmFuZG9tbHkuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nIHRoYXQganVtcCBpc2xhbmRzIHdv
cmsuIikgXAogICAgIHYoQm9vbCwgZXhwb3NlUHJvZmlsZXJzT25HbG9iYWxPYmplY3QsIGZhbHNl
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGV4cG9zZSBmdW5jdGlvbnMgdG8gZW5hYmxlL2Rp
c2FibGUgYm90aCB0aGUgc2FtcGxpbmcgcHJvZmlsZXIgYW5kIHRoZSBzdXBlciBzYW1wbGVyIikg
XAorICAgIHYoQm9vbCwgdXNlUHJpdmF0ZUNsYXNzRmllbGRzLCBmYWxzZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHJpdmF0ZSBkYXRhIGZpZWxkcyBpbnNp
ZGUgY2xhc3Nlcy4iKSBcCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewogICAgIFNhbWVPcHRp
b24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5jcHAKaW5k
ZXggY2JhYjQ2Y2U1NDU0ZTIzZjM0ODJlYmRiYzBiNjljYTI2OTU2N2ZmNS4uMTY0Y2E2ZDQzMTBl
NmJiMzhlNjQ3ZTJmNmJlMmY5ZjdkOWYzMjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N5bWJvbFRhYmxlLmNwcApAQCAtMTgxLDYgKzE4MSwxMSBAQCBTeW1ib2xUYWJs
ZSogU3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KFZNJiB2bSkKICAgICAgICAgICAgIGZvciAo
OyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0
YS0+bV91bmlxdWVUeXBlU2V0TWFwLnNldChpdGVyLT5rZXksIGl0ZXItPnZhbHVlKTsKICAgICAg
ICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMpCisgICAgICAgICAgICAgICAgcmVzdWx0LT5tX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5hZGQobmFtZSk7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5o
CmluZGV4IGUyMzRkMzE0YzY5ZWQyZDExMTMyMzkxNGJhMjdkM2Q5MzE1NTI2NzYuLjMxZjgxZmFl
MDJmYjIwMWQzMjE4YmIwZmI0YzUyZDIyMWY0Y2Q2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIldh
dGNocG9pbnQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N5bWJvbEltcGwuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQ1MCw2ICs0NTAs
OCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4sIFJlZlB0cjxUeXBlU2V0PiwgSWRlbnRpZmllclJlcEhhc2g+IFVuaXF1ZVR5cGVTZXRNYXA7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFZhck9mZnNldCwgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4gT2Zmc2V0VG9WYXJpYWJsZU1hcDsKICAgICB0eXBlZGVmIFZlY3RvcjxTeW1ib2xUYWJsZUVu
dHJ5Kj4gTG9jYWxUb0VudHJ5VmVjOworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gUHJpdmF0ZU5hbWVTZXQ7CisgICAgdHlw
ZWRlZiBXVEY6Okl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgUHJpdmF0ZU5hbWVTZXQ6Oml0ZXJhdG9y
PiBQcml2YXRlTmFtZUl0ZXJhdG9yUmFuZ2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CiAgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCkBAIC01OTQsNyArNTk2LDI1IEBAIHB1YmxpYzoKICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICBhZGQobG9ja2VyLCBrZXksIHN0ZDo6
Zm9yd2FyZDxFbnRyeT4oZW50cnkpKTsKICAgICB9Ci0gICAgCisKKyAgICBib29sIGhhc1ByaXZh
dGVOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgJiYgbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuc2l6ZSgpOyB9CisgICAgQUxXQVlTX0lOTElORSBQcml2YXRlTmFtZUl0ZXJhdG9y
UmFuZ2UgcHJpdmF0ZU5hbWVzKCkKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0
b3JSYW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hl
Y2tWYWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQoaGFzUHJpdmF0ZU5hbWVzKCkpOworICAgICAg
ICByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UobV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYmVn
aW4oKSwgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpOworICAgIH0KKworICAgIHZv
aWQgYWRkUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGtleSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChrZXkgJiYgIWtleS0+aXNTeW1ib2woKSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGVS
YXJlRGF0YT4oKTsKKworICAgICAgICBBU1NFUlQoIW1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmNvbnRhaW5zKGtleSkpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQo
a2V5KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbnRyeT4KICAgICB2b2lkIHNl
dChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBVbmlxdWVkU3RyaW5nSW1wbCoga2V5LCBFbnRy
eSYmIGVudHJ5KQogICAgIHsKQEAgLTcyOSwxOCArNzQ5LDIxIEBAIHByaXZhdGU6CiAgICAgU2Nv
cGVPZmZzZXQgbV9tYXhTY29wZU9mZnNldDsKIHB1YmxpYzoKICAgICBtdXRhYmxlIENvbmN1cnJl
bnRKU0xvY2sgbV9sb2NrOwotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3VzZXNOb25TdHJpY3RF
dmFsIDogMTsKLSAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8vIE5vbi1m
dW5jdGlvbiBMZXhpY2FsU2NvcGUuCi0gICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAzOyAvLyBT
Y29wZVR5cGUKLSAgICAKKwogICAgIHN0cnVjdCBTeW1ib2xUYWJsZVJhcmVEYXRhIHsKICAgICAg
ICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBVbmlxdWVJRE1hcCBt
X3VuaXF1ZUlETWFwOwogICAgICAgICBPZmZzZXRUb1ZhcmlhYmxlTWFwIG1fb2Zmc2V0VG9WYXJp
YWJsZU1hcDsKICAgICAgICAgVW5pcXVlVHlwZVNldE1hcCBtX3VuaXF1ZVR5cGVTZXRNYXA7CiAg
ICAgICAgIFdyaXRlQmFycmllcjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOworICAgICAgICBQcml2
YXRlTmFtZVNldCBtX3ByaXZhdGVOYW1lczsKICAgICB9OworCitwcml2YXRlOgorICAgIHVuc2ln
bmVkIG1fdXNlc05vblN0cmljdEV2YWwgOiAxOworICAgIHVuc2lnbmVkIG1fbmVzdGVkTGV4aWNh
bFNjb3BlIDogMTsgLy8gTm9uLWZ1bmN0aW9uIExleGljYWxTY29wZS4KKyAgICB1bnNpZ25lZCBt
X3Njb3BlVHlwZSA6IDM7IC8vIFNjb3BlVHlwZQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN5bWJv
bFRhYmxlUmFyZURhdGE+IG1fcmFyZURhdGE7CiAKICAgICBXcml0ZUJhcnJpZXI8U2NvcGVkQXJn
dW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAxNWZlYzc3ZTg5MGI5YmQzMjRmMTg3NmRmZWU3N2Yx
NTM3OWU4MjQ2Li5kNWZhNzM1YTBmYmI0ZTkwNDU2ZDZiN2M1NmQwMjQwMjgyYmY3MjdhIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDIwLTA1LTI5ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0pTQ10gQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgY2xhc3MgZmllbGRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBhbmRzIHVw
b24gdGhlIGVhcmxpZXIgcHVibGljIGZpZWxkcyBwYXRjaCwgYWRkaW5nIGEgbnVtYmVyIG9mIHBy
aXZhdGUKKyAgICAgICAgZmllbGQgdGVzdHMuCisKKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmll
bGRzLXByaXZhdGUtYXMtZnVuY3Rpb24uanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQtYnl0ZWNvZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRl
bnNpb25zLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmll
bGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11c2UtZXZhbC5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanM6CisgICAgICAgICog
c3RyZXNzL2dldC1wcml2YXRlLWZpZWxkLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mvb3B0
aW9uYWwtY2hhaW5pbmctYW5kLXByaXZhdGUtZmllbGRzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZhdGUuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIwLTA1LTI3ICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZvci1vZiBzaG91bGQg
Y2hlY2sgdGhlIGl0ZXJhYmxlIGlzIGEgSlNBcnJheSBmb3IgRmFzdEFycmF5IGluIERGRyBpdGVy
YXRvcl9vcGVuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0
ZS1hcy1mdW5jdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFz
LWZ1bmN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4YTExNjNlMTY3ZWQwZDZjNWY2NzY1NmQwMWIzNGQ4
OGNiNzRmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1hcy1mdW5jdGlvbi5qcwpAQCAtMCwwICsxLDE4IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkg
eworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAi
ICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsKKyAgICAjbSA9ICgpID0+
IDI1OworCisgICAgbWV0aG9kKCkgeworICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgIH0K
K30KKworbGV0IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDI1KTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2Rl
LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtY2FjaGVkLWJ5dGVjb2Rl
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQyYTRmNDM1NGY4OTdmMTEzNzQwODcxMjYwNDZjNmYxZGZkM2U3ZTkK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1j
YWNoZWQtYnl0ZWNvZGUuanMKQEAgLTAsMCArMSwxOCBAQAorLy9AIHJ1bkJ5dGVjb2RlQ2FjaGUo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkg
eworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAi
ICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitjbGFzcyBDIHsKKyAgICAjZiA9IDM7CisK
KyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0
IGMgPSBuZXcgQygpOworYXNzZXJ0KGMubWV0aG9kKCksIDMpOworCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9mLWxpbmUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUtb3V0LW9mLWxpbmUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWI1M2Y2YjIzMTA3ZGRhYTJiNDViYzNmMDU4ZWFiZjExY2YwMTkzYQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6
ZS1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDQ4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigK
KyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09
IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4
cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMoYSwg
YikgeworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBh
ICYmIGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBl
Y3RlZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKKy8vIFRoZSBiYXNlIGNsYXNzIGlz
IGRlY2xhcmVkIGluIGV2YWwgc3BlY2lmaWNhbGx5IHNvIHRoYXQgaXQgY2FuIGFkZCBlbm91Z2gK
Ky8vIHByb3BlcnRpZXMgdG8gdGhlIGNsYXNzIHRvIHN0b3JlIHByaXZhdGUgZmllbGRzIGluIG91
dC1vZi1saW5lIHByb3BlcnR5IHN0b3JhZ2UuCitsZXQgQmFzZSA9IGV2YWwoYChjbGFzcyBCYXNl
IHsKKyAgLy8gTWV0aG9kcworICBjb25zdHJ1Y3RvcigpIHsKKyAgICAvLyBEZWZpbmUgcHJvcGVy
dGllcworICAgICR7QXJyYXkoMjAwKS5tYXAoKF8sIGkpID0+IGAgIHRoaXMueCR7aX0gPSAke2l9
O1xuYCkuam9pbigiIil9CisgIH0KK30pYCk7CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJl
dmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LmZyZWV6ZSh0aGlz
KSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNGcm96ZW4odGhpcyksICJPYmpl
Y3QuaXNGcm96ZW4odGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRo
aXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChp
KSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7Cisg
IGFzc2VydC5lcXVhbHMoYy54MTUwID09PSAxNTApOworICBjLngxNTAgPSAwLjE7CisgIGFzc2Vy
dC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdl
dCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3Qo
Mik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzIGIvSlNUZXN0
cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0MmNj
MGZmOTJkNmJhYzljODRkOTA2OTQzNGYzYjc3ZDdkZjViMjIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMKQEAgLTAsMCArMSw0
MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKwor
bGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNz
YWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4
cHJ9YCk7CisgIH0sIHsKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8fCAoYSA9
PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBiKSkKKyAgICAgIHJldHVybjsK
KworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7CisgIH0K
K30pOworCitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy54ID0gMTsK
KyAgfQorfQorCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVu
ZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5mcmVlemUodGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9
IChhc3NlcnQoT2JqZWN0LmlzRnJvemVuKHRoaXMpLCAiT2JqZWN0LmlzRnJvemVuKHRoaXMpIiks
IHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7
IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQ
cml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAwLjE7CisgIGFzc2Vy
dC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdl
dCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3Qo
Mik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanMgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NjFmNzE4ZDk3NDI3MGFjOGExOWU1ZjdiZjA1MjAwZGViOTM3NmNkCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanMKQEAgLTAs
MCArMSwzOSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0x
IikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUsIG0pIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKG0pOworfQorCitmdW5jdGlvbiBhc3NlcnRBcnJheUNvbnRlbnQo
YSwgZSkgeworICAgIGFzc2VydChhLmxlbmd0aCwgZS5sZW5ndGgsICJTaXplIG9mIGFycmF5cyBk
b2Vzbid0IG1hdGNoIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKQor
ICAgICAgICBhc3NlcnQoYVtpXSwgZVtpXSwgImFbIiArIGkgKyAiXSA9ICIgKyBhW2ldICsgIiBi
dXQgZVsiICsgaSArICJdID0gIiArIGVbaV0pOworfQorCitsZXQgYXJyID0gW107CisKK2NsYXNz
IFByb3h5QmFzZSB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBuZXcgUHJv
eHkodGhpcywgeworICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAob2JqLCBwcm9wKSB7CisgICAg
ICAgICAgICAgICAgYXJyLnB1c2gocHJvcCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9ialtw
cm9wXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQorCitjbGFzcyBUZXN0
IGV4dGVuZHMgUHJveHlCYXNlIHsKKyAgICAjZiA9IDM7CisgICAgbWV0aG9kKCkgeworICAgICAg
ICByZXR1cm4gdGhpcy4jZjsKKyAgICB9Cit9CisKK2xldCB0ID0gbmV3IFRlc3QoKTsKK2xldCBy
ID0gdC5tZXRob2QoKTsKK2Fzc2VydChyLCAzLCAiRXhwZWN0ZWQ6IDMgYnV0IGdvdDogIiArIHIp
OworCithc3NlcnRBcnJheUNvbnRlbnQoYXJyLCBbJ21ldGhvZCddKTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42OWQ4NjIxNjAxZDVkZTM0YTQyODM0NmQ1MWNjZjgyMmZiZjU2MGE5Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtb3V0LW9mLWxpbmUuanMK
QEAgLTAsMCArMSwyOCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikKKworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBh
KTsKK30KKworbGV0IGtsYXNzU291cmNlID0gYAordmFyIEMgPSBjbGFzcyB7CisgICAgYXNzZXJ0
T3V0T2ZMaW5lVmFsdWUoKSB7CisgICAgICAgIGFzc2VydCh0aGlzLiNmMjAwLCAiZm9vIik7Cisg
ICAgfQorYDsKKworCitmb3IgKGxldCBpID0gMDsgaSA8IDIwMDsgaSsrKSB7CisgICAga2xhc3NT
b3VyY2UgKz0gIiAgICAjZiIgKyBpICsgIjtcbiI7Cit9CisKK2tsYXNzU291cmNlICs9ICIgICAg
I2YyMDAgPSBcImZvb1wiO1xufSI7CisKK2V2YWwoa2xhc3NTb3VyY2UpOworCitmb3IgKGxldCBp
ID0gMDsgaSA8IDI7IGkrKykgeworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLmFzc2VydE91
dE9mTGluZVZhbHVlKCk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZp
ZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGluZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGlu
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MmRiOGIxNmFlMGQ1Y2I3ZjNmNTU4NTI3ZTQwMGViNTIyYzFiMzYx
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
cHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsNTIgQEAKKy8vQCBy
ZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQg
PSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7
CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVk
ICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9
LCB7CisgIGZhbHNlKGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IHRydWUp
CisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRv
IGJlIGZhbHNlLCBidXQgd2FzICR7ZXhwcn1gKQorICB9LAorICBlcXVhbHMoYSwgYikgeworICAg
IGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09
IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9
IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKKy8vIFRoZSBiYXNlIGNsYXNzIGlzIGRlY2xhcmVk
IGluIGV2YWwgc3BlY2lmaWNhbGx5IHNvIHRoYXQgaXQgY2FuIGFkZCBlbm91Z2gKKy8vIHByb3Bl
cnRpZXMgdG8gdGhlIGNsYXNzIHRvIHN0b3JlIHByaXZhdGUgZmllbGRzIGluIG91dC1vZi1saW5l
IHByb3BlcnR5IHN0b3JhZ2UuCitsZXQgQmFzZSA9IGV2YWwoYChjbGFzcyBCYXNlIHsKKyAgLy8g
TWV0aG9kcworICBjb25zdHJ1Y3RvcigpIHsKKyAgICAvLyBEZWZpbmUgcHJvcGVydGllcworICAg
ICR7QXJyYXkoMjAwKS5tYXAoKF8sIGkpID0+IGAgIHRoaXMueCR7aX0gPSAke2l9O1xuYCkuam9p
bigiIil9CisgIH0KK30pYCk7CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVu
c2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRo
aXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0LmZhbHNlKE9iamVjdC5pc0V4dGVuc2libGUo
dGhpcyksICJPYmplY3QuaXNFeHRlbnNpYmxlKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBn
ZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisK
K2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZl
bnRFeHRlbnNpb25zOworICBhc3NlcnQuZXF1YWxzKGMueDE1MCA9PT0gMTUwKTsKKyAgYy54MTUw
ID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFz
c2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsK
K3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVz
dChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXBy
ZXZlbnQtZXh0ZW5zaW9ucy5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRl
LXByZXZlbnQtZXh0ZW5zaW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzYwOTcyNzgxNGZjNjA1ZTEwNGM2
NjRkNmUzZTYwZTJkNGM1YzMyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xh
c3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzCkBAIC0wLDAgKzEsNDcgQEAK
Ky8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBh
c3NlcnQgPSBPYmplY3QuYXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9
ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4
cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWAp
OworICB9LCB7CisgIGZhbHNlKGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09
IHRydWUpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2FnZSB8fCAiZXhw
ciJ9IHRvIGJlIGZhbHNlLCBidXQgd2FzICR7ZXhwcn1gKQorICB9LAorICBlcXVhbHMoYSwgYikg
eworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYm
IGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1
Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LnByZXZl
bnRFeHRlbnNpb25zKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0LmZhbHNlKE9iamVj
dC5pc0V4dGVuc2libGUodGhpcyksICJPYmplY3QuaXNFeHRlbnNpYmxlKHRoaXMpIiksIHRoaXMu
I2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVybiB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMu
I2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRl
RmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zOworICBjLnggPSAwLjE7CisgIGFzc2VydC5lcXVh
bHMoYy5nZXQoKSwgNDIpOworICBjLnNldChpKTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBp
KTsKK30KK25vSW5saW5lKHRlc3QpOworCit0ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citm
b3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytpKQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGluZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0LW9mLWxpbmUuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzYxYjMwZTYyZTI4MzlhZDQ3NTIzMWYzN2NhNGRmYzUxMTYxMGQ1NAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwtb3V0
LW9mLWxpbmUuanMKQEAgLTAsMCArMSw1MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1
bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxz
ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0g
dG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVz
c2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtl
eHByfWApCisgIH0sCisgIGVxdWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09
IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisK
KyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9
KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkg
c28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8g
c3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xl
dCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2UgeworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9y
KCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywg
aSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKwor
Y2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2Ugewor
ICAjaSA9IChPYmplY3Quc2VhbCh0aGlzKSwgNDIpOworICAjYXNzZXJ0ID0gKGFzc2VydChPYmpl
Y3QuaXNTZWFsZWQodGhpcyksICJPYmplY3QuaXNTZWFsZWQodGhpcykiKSwgdGhpcy4jaSArIDEp
OworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7
IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54MTUwID09PSAxNTApOwor
ICBjLngxNTAgPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChp
KTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0
ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytp
KQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtc2VhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNlYWwu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDgzZTdhYjM1ZDdjMTRhNmM3NjkxMjYyNmNmZDEyODE3YzVhMGIwOQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXNl
YWwuanMKQEAgLTAsMCArMSw0MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVD
bGFzc0ZpZWxkcz0xIikKKworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9u
IGFzc2VydChleHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUg
dHJ1ZSwgYnV0IHdhcyAke2V4cHJ9YCk7CisgIH0sIHsKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBp
ZiAoYSA9PT0gYiB8fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBi
KSkKKyAgICAgIHJldHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0
byBiZSAke2J9YCk7CisgIH0KK30pOworCitjbGFzcyBCYXNlIHsKKyAgY29uc3RydWN0b3IoKSB7
CisgICAgdGhpcy54ID0gMTsKKyAgfQorfQorCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZl
bnRFeHRlbnNpb25zIGV4dGVuZHMgQmFzZSB7CisgICNpID0gKE9iamVjdC5zZWFsKHRoaXMpLCA0
Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc1NlYWxlZCh0aGlzKSwgIk9iamVjdC5p
c1NlYWxlZCh0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4j
aTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsK
KyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYy54
ID0gMC4xOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIDQyKTsKKyAgYy5zZXQoaSk7CisgIGFz
c2VydC5lcXVhbHMoYy5nZXQoKSwgaSk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordGVzdCgwKTsK
K3Rlc3QoMSk7Cit0ZXN0KDIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAyMDA7ICsraSkKKyAgdGVz
dChpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVz
ZS1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtdXNlLWV2YWwu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjk3ODgwNTdiMWJmNDk1NTBhMGU4ZjNkOThhOTQxYTgzN2NmMTFjMwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXVz
ZS1ldmFsLmpzCkBAIC0wLDAgKzEsMTUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2
YXRlQ2xhc3NGaWVsZHM9MSIsICItLXVzZVB1YmxpY0NsYXNzRmllbGRzPTEiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgbWVzc2FnZSkgeworICAgIGlmICghYSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKG1lc3NhZ2UpOworfQorCitsZXQgaW5zdCA9IG5ldyBjbGFzcyB7CisgIGEgPSBldmFsKCIo
aSkgPT4gaS4jYiIpOworCisgICNiID0ge307Cit9OworCitpbnN0LmEoaW5zdCkueCA9IDE7Cith
c3NlcnQoaW5zdC5hKGluc3QpLnggPT0gMSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmll
bGRzLXN0cmVzcy1pbnN0YW5jZS5qcwppbmRleCBlNTE2Mjk5YTc5MmM2Mzg0Yjg0MmM2OTdmNDFm
Y2VkN2Y1Y2ZmZmNmLi41MDY5YTdkYTVhMTU1ZGNjMDYwNGU0NjMyYjkwZTgzMDkzOWZlODM2IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMKQEAg
LTEsMTEgKzEsMTUgQEAKLS8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJsaWNDbGFzc0ZpZWxk
cz10cnVlIikKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz10cnVl
IiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQogCiBjbGFzcyBBIHsKICAgICBhID0g
MDsKICAgICBiID0gMTsKKyAgICAjYyA9IDA7CisgICAgI2QgPSAxOwogICAgIGUgPSBmdW5jdGlv
biAoKSB7IHJldHVybiAwOyB9OworICAgICNmID0gZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9Owog
ICAgIFsiZyJdID0gMDsKICAgICBoID0gZXZhbCgidHJ1ZSIpOworICAgICNpID0gZXZhbCgiZmFs
c2UiKTsKIH0KIAogZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtZmllbGQuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZXQt
cHJpdmF0ZS1maWVsZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTYzMzYyZmFhNjNlNDA1NjI1ZDFmZWNlY2U5
OWJjZDI2NmI5ZWE5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZh
dGUtZmllbGQuanMKQEAgLTAsMCArMSwyOSBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKy8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRl
Q2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTEludCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9
MSIpCisKKy8vIEdldEJ5VmFsRGlyZWN0IHNob3VsZCB0aHJvdyB3aGVuIHRoZSByZWNlaXZlciBk
b2VzIG5vdCBoYXZlIHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBwcm9wZXJ0eQorbGV0IGksIHRocmV3
ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeCA9IGk7CisgICAgY29uc3RydWN0b3IoKSB7IGlm
IChpID09PSAzMCkgcmV0dXJuIHsgW1N5bWJvbC50b1N0cmluZ1RhZ106ICJ3aXRob3V0ICN4In07
IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeDsgfQorICAgIGdldCBbU3ltYm9s
LnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRoICN4IjsgfQorfQorCit0cnkgeworICAgIGZv
ciAoaSA9IDA7IGkgPCA1MDsgKytpKSB7CisgICAgICAgIGxldCBjID0gbmV3IEM7CisgICAgICAg
IGxldCByZXN1bHQgPSBDLngoYyk7CisgICAgICAgIGlmIChyZXN1bHQgIT09IGkpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIEMueCgke2N9KSB0byBiZSAke2l9LCBidXQg
Zm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQorfSBjYXRjaCAoZSkgeworICAgIHRocmV3ID0gdHJ1
ZTsKKyAgICBpZiAoaSAhPT0gMzAgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlwZUVycm9yKSB7Cisg
ICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWluaW5nLWFuZC1wcml2YXRl
LWZpZWxkcy5qcyBiL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWluaW5nLWFuZC1wcml2YXRl
LWZpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDJjZjEyYjY0YTE2NDMwMmVkMjdmNWI5MWUwNzU0NDcx
ZTExN2U2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvb3B0aW9uYWwtY2hhaW5p
bmctYW5kLXByaXZhdGUtZmllbGRzLmpzCkBAIC0wLDAgKzEsOTMgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiAoYSwgZSkgPT4geworICAgICAgICBpZiAoYSAhPT0gZSkgCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEp
OworICAgIH0sCisKKyAgICB0aHJvd3M6IChleHBlY3RlZEV4Y2VwdGlvbiwgZnVuY3RvciwgbSkg
PT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3RvcigpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEV4Y2VwdGlv
bikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworICAgICAgICB9CisgICAg
fQorfTsKKworKCgpID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3Qn
OworICAgIAorICAgICAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVybiBv
Py4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1
ZShDLmFjY2VzcyhjKSwgJ3Rlc3QnKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2Vz
cyh1bmRlZmluZWQpLCB1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNj
ZXNzKG51bGwpLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgICAgIEMuYWNjZXNzKHt9KTsKKyAgICB9LCAiT2JqZWN0IHdpdGhv
dXQgcHJpdmF0ZSBmaWVsZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisKKy8vIENoYWluZWQgY2Fz
ZQorKCgpID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2ZpZWxkID0gJ3Rlc3QnOworICAg
IAorICAgICAgICBzdGF0aWMgY2hhaW5lZEFjY2VzcyhvKSB7CisgICAgICAgICAgICByZXR1cm4g
by5wcml2YXRlPy4jZmllbGQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBD
OworICAgIGxldCBvID0ge3ByaXZhdGU6IGN9OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNoYWluZWRBY2Nlc3Mobyks
ICd0ZXN0Jyk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNjZXNzKHt9KSwg
dW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmNoYWluZWRBY2Nlc3Moe3By
aXZhdGU6IG51bGx9KSwgdW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgKCkgPT4geworICAgICAgICBvLnByaXZhdGUgPSB7fTsKKyAgICAgICAgQy5jaGFp
bmVkQWNjZXNzKG8pOworICAgIH0sICJPYmplY3Qgd2l0aG91dCBwcml2YXRlIGZpZWxkIHNob3Vs
ZCB0aHJvdyIpOworfSkoKTsKKworKCgpID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI2Zp
ZWxkOworCisgICAgICAgIHNldEZpZWxkKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI2ZpZWxkID0g
djsKKyAgICAgICAgfQorICAgIAorICAgICAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAg
ICAgIHJldHVybiBvLiNmaWVsZD8ucHJvcGVydHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKyAg
ICAgICAgYy5zZXRGaWVsZCh7cHJvcGVydHk6ICd0ZXN0J30pOworICAgICAgICBhc3NlcnQuc2Ft
ZVZhbHVlKEMuYWNjZXNzKGMpLCAndGVzdCcpOworCisgICAgICAgIGMuc2V0RmllbGQodW5kZWZp
bmVkKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcyhjKSwgdW5kZWZpbmVkKTsK
KworICAgICAgICBjLnNldEZpZWxkKG51bGwpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMu
YWNjZXNzKGMpLCB1bmRlZmluZWQpOworICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgICAgIEMuYWNjZXNzKHt9KTsKKyAgICB9LCAiT2JqZWN0IHdpdGhv
dXQgcHJpdmF0ZSBmaWVsZCBzaG91bGQgdGhyb3ciKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZS1hY2Nlc3MtaW4tY29tcHV0ZWQtcHJvcGVydHkuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE5ZDhlMjE5MjNmMjAyNGQwMjIwMmYzYTJlMTZiYjQ5ZTFmOTViM2QK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWlu
LWNvbXB1dGVkLXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsMjAgQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VQdWJsaWNDbGFzc0ZpZWxkcz0xIiwgIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHRocm93czogKGV4cGVjdGVkRXJyb3IsIGZ1bmN0b3Ip
ID0+IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikp
CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiAr
IGV4cGVjdGVkRXJyb3IubmFtZSArICIgYnV0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgY2xh
c3MgQmFzZSB7CisgICAgICAgIFt7fS4jeF0gPSAxOyAKKyAgICAgICAgI3ggPSAiZm9vIjsKKyAg
ICB9Cit9KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3Qt
YWRkcHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHByaXZh
dGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTMxMzU0Njg2OTI3ZjM2Y2VkOWE5OWFlZTc0NDkxZDhmN2YyMzM3
NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFk
ZHByaXZhdGUuanMKQEAgLTAsMCArMSwzNCBAQAorLy8gVE9ETzogLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikgLS0gQ3VycmVudGx5LCBlYWdlciBKSVQgaXMg
bm90IHN1cHBvcnRlZCBmb3IgcHJpdmF0ZSBmaWVsZCBhY2Nlc3MuCisvL0AgcnVuRGVmYXVsdCgi
LS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQoIi0tdXNlUHJpdmF0ZUNs
YXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEi
KQorCisvLyBQcml2YXRlRmllbGQgIkNyZWF0ZSIgYWNjZXNzIHNob3VsZCB0aHJvdyBpZiB3cml0
aW5nIHRvIGEgbm9uLWV4aXN0ZW50IFByaXZhdGVOYW1lLgorbGV0IGMsIGkgPSAwLCB0aHJldyA9
IGZhbHNlOworY2xhc3MgQyB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBp
IDwgMjkgPyB0aGlzIDogYzsKKyAgICB9Cit9CisKK2NsYXNzIENDIGV4dGVuZHMgQyB7CisgICAg
I3ggPSBpKys7CisgICAgeCgpIHsgcmV0dXJuIHRoaXMuI3g7IH0KK30KKworYyA9IG5ldyBDQzsK
K3RyeSB7CisgICAgZm9yIChsZXQgaiA9IDE7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGxldCB4
ID0gbmV3IENDOworICAgICAgICBpZiAoeC54KCkgIT09IGopCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkIHgueCgpIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3gueCgpfWAp
OworICAgIH0KK30gY2F0Y2ggKGUpIHsKKyAgICB0aHJldyA9IHRydWU7CisgICAgaWYgKGkgIT09
IDMwIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgeworICAgICAgICB0aHJvdyBlOwor
ICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIFR5
cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1wdXRwcml2YXRlLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Mzg2NTNkZDIy
MjE3ZDFkMTZlNzA2N2Q4YWQyNDU5OGM0NThjYzg4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcwpAQCAtMCwwICsxLDMyIEBA
CisvLyBUT0RPOiAvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEi
KSAtLSBDdXJyZW50bHksIGVhZ2VyIEpJVCBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIGZp
ZWxkIGFjY2Vzcy4KKy8vQCBydW5EZWZhdWx0KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikK
Ky8vQCBydW5Ob0pJVCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9MTElu
dCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKKy8vIFByaXZhdGVGaWVsZCAiUHV0IiBh
Y2Nlc3Mgc2hvdWxkIHRocm93IGlmIHdyaXRpbmcgdG8gYSBub24tZXhpc3RlbnQgUHJpdmF0ZU5h
bWUuCitsZXQgYywgaSA9IDAsIHRocmV3ID0gZmFsc2U7CitjbGFzcyBDIHsKKyAgICAjeDsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsgcmV0dXJuIGkgPCAzMCA/IHRoaXMgOiB7IFtTeW1ib2wudG9TdHJp
bmdUYWddOiAid2l0aG91dCAjeCIgfTsgfQorICAgIHN0YXRpYyB4KG9iaikgeyByZXR1cm4gb2Jq
LiN4ID0gaSsrOyB9CisgICAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkgeyByZXR1cm4gIndp
dGggI3giIH0KK30KKwordHJ5IHsKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IDUwOyArK2opIHsK
KyAgICAgICAgbGV0IG9iaiA9IG5ldyBDOworICAgICAgICBsZXQgcmVzdWx0ID0gQy54KG9iaik7
CisgICAgICAgIGlmIChyZXN1bHQgIT09IGopCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkIEMueCgke29ian0pIHRvIGJlICR7an0sIGJ1dCBmb3VuZCAke3Jlc3VsdH1gKTsK
KyAgICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIC8vIHJ2YWwgb2Yg
QXNzaWdubWVudEV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGJlZm9yZSBQcml2YXRlRmllbGRGaW5k
KCN4LCBscmVmKSBpcyBwZXJmb3JtZWQsCisgICAgLy8gdGh1cyBgaWAgaGFzIGFscmVhZHkgYmVl
biBpbmNyZW1lbnRlZC4KKyAgICBpZiAoaSAhPT0gMzEgfHwgZS5jb25zdHJ1Y3RvciAhPT0gVHlw
ZUVycm9yKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfQorCitpZiAoIXRocmV3KQorICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgVHlwZUVycm9yLCBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA3YmVkMDY0NGFiMjU4ZDVkMTA0ODUxMDhm
MmM1OGZjNjg4MjQ5MTMzLi44M2JmNjdlOTJjYTI3NjQyNGZjMDlhZWQzNTAzMDdlMDE2ZTQ0MWY1
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC02LDYgKzYsNyBAQCBmbGFnczoKICAgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQ6IHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQKICAgV2Vha1JlZjogdXNlV2Vh
a1JlZnMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzogdXNlUHVibGljQ2xhc3NGaWVsZHMKKyAgY2xh
c3MtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcwogc2tpcDoKICAgZmVhdHVy
ZXM6CiAgICAgLSBTaGFyZWRBcnJheUJ1ZmZlcgpAQCAtMTQsNyArMTUsNiBAQCBza2lwOgogICAg
ICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkzMQogICAgIC0g
cmVnZXhwLWxvb2tiZWhpbmQKIAotICAgIC0gY2xhc3MtZmllbGRzLXByaXZhdGUKICAgICAtIGNs
YXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWMKICAg
ICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401081</attachid>
            <date>2020-06-04 15:17:42 -0700</date>
            <delta_ts>2020-06-05 04:25:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-206431-20200604181741.patch</filename>
            <type>text/plain</type>
            <size>195528</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NjI0NjU4MDYxNGQ2N2IxNWFlNDgyMTk5MmE5Njc2ZTg5MmIzZTVkLi5kMmIyNmFkYmQ3ZGRmYjU3
Mjc4ZDk1MTdmODkzZWE5ZmFmNTdmMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzEgQEAKKzIwMjAtMDYtMDQgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBjbGFzcyBmaWVsZHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjQzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIEV4cGFuZGluZyB1
cG9uIHRoZSBlYXJsaWVyIHB1YmxpYyBjbGFzcyBmaWVsZHMgcGF0Y2gsIHdlIGltcGxlbWVudCB0
aGUgcmVtYWluaW5nIChhbmQKKyAgICAgICAgc2lnbmlmaWNhbnQgcGFydHMpIG9mIHRoZSBpbnN0
YW5jZSBmaWVsZHMgKGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvKS4KKwor
ICAgICAgICBUaGVyZSBhcmUgYSB2YXJpZXR5IG9mIGtleSBjaGFuZ2VzIGhlcmU6CisKKyAgICAg
ICAgICAgIC0gUGFyc2VyIG5vdyB1bmRlcnN0YW5kcyB0aGUgY29uY2VwdCBvZiBwcml2YXRlIG5h
bWVzIChUb2tlbiBQUklWQVRFTkFNRSkuCisgICAgICAgICAgICAtIDEgbmV3IG9wY29kZSAob3Bf
Z2V0X3ByaXZhdGVfbmFtZSksIG9uZSBjaGFuZ2VkIG9wY29kZSAob3BfcHV0X2J5X3ZhbF9kaXJl
Y3QpLgorICAgICAgICAgICAgLSBBIG1ldGhvZCBmb3IgY3JlYXRpbmcgU3ltYm9sIG9iamVjdHMg
d2l0aCBhIG51bGwgUHJpdmF0ZVN5bWJvbEltcGwgaXMgZXhwb3NlZCBhcyBhCisgICAgICAgICAg
ICAgIExpbmtUaW1lQ29uc3RhbnQgKEBjcmVhdGVQcml2YXRlU3ltYm9sKS4KKyAgICAgICAgICAg
IC0gTnVsbCBQcml2YXRlIFN5bWJvbHMgYXJlIHN0b3JlZCBieSBuYW1lIChub3QgYSB2YWxpZCBp
ZGVudGlmaWVyKSBpbiBhIEpTU2NvcGUsIGFuZAorICAgICAgICAgICAgICBhcmUgbG9hZGVkIGZy
b20gdGhlIG91dGVyIHNjb3BlIHdoZW5ldmVyIHRoZXkgYXJlIHVzZWQgYnkgdGhlIG1vZGlmaWVk
IG9wY29kZXMuCisKKyAgICAgICAgVGhlIGNoYW5nZXMgdG8gb3BfcHV0X2J5X3ZhbF9kaXJlY3Qg
aW5jbHVkZSBhIG5ldyBieXRlY29kZSBvcGVyYW5kIChQdXRCeVZhbEZsYWdzKSB3aGljaCBhcmUK
KyAgICAgICAgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG92ZXJ3cml0aW5nIG9yIGRlZmlu
aW5nIGEgbmV3IHByaXZhdGUgZmllbGQuIFNwZWNpZmljYWxseSwgd2hlbiBpdAorICAgICAgICBj
b21lcyB0byBwcml2YXRlIGZpZWxkIGFjY2Vzc2VzLCBpdCdzIG5lY2Vzc2FyeSB0byB0aHJvdyBh
biBleGNlcHRpb24gd2hlbiBhY2Nlc3NpbmcgYSBmaWVsZAorICAgICAgICB3aGljaCBkb2VzIG5v
dCBleGlzdCwgb3Igd2hlbiBhdHRlbXB0aW5nIHRvIGRlZmluZSBhIHByaXZhdGUgZmllbGQgd2hp
Y2ggaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBkZWZpbmVkLgorCisgICAgICAgIER1cmluZyB0
aGUgZXZhbHVhdGlvbiBvZiBhIGNsYXNzIGV4cHJlc3Npb24sIGJlZm9yZSB0aGUgY2xhc3MgZWxl
bWVudCBsaXN0IGlzIGV2YWx1YXRlZCAoaW4gY2FzZQorICAgICAgICBhbnkgY29tcHV0ZWQgcHJv
cGVydHkgbmFtZXMgZXhwcmVzc2lvbnMgcmVmZXIgdG8gYSBuZXcgcHJpdmF0ZSBmaWVsZCksIGEg
bmV3IFByaXZhdGVTeW1ib2wgaXMKKyAgICAgICAgY3JlYXRlZCBmb3IgZWFjaCBpbmRpdmlkdWFs
IHByaXZhdGUgZmllbGQgbmFtZSwgYW5kIHN0b3JlZCBpbiB0aGUgY2xhc3MgbGV4aWNhbCBzY29w
ZS4KKworICAgICAgICBQcml2YXRlIGZpZWxkIG5hbWVzIGFyZSBsb2FkZWQgZnJvbSBzY29wZSBi
ZWZvcmUgdGhlaXIgdXNlLiBUaGlzIHByZXZlbnRzIG11bHRpcGxlIGV2YWx1YXRpb25zCisgICAg
ICAgIG9mIHRoZSBzYW1lIGNsYXNzIHNvdXJjZSBmcm9tIGFjY2Vzc2luZyBlYWNoIG90aGVyJ3Mg
cHJpdmF0ZSBmaWVsZHMsIGJlY2F1c2UgdGhlIHZhbHVlcyBvZiB0aGUKKyAgICAgICAgc3ltYm9s
cyBsb2FkZWQgZnJvbSB0aGUgY2xhc3Mgc2NvcGUgd291bGQgYmUgZGlzdGluY3QuIFRoaXMgaXMg
cmVxdWlyZWQgYnkgdGhlIHByb3Bvc2FsIHRleHQsCisgICAgICAgIGFuZCBpcyB0aGUga2V5IHJl
YXNvbiB3aHkgd2UgdXNlIEJ5VmFsIGxvb2t1cHMgcmF0aGVyIHRoYW4gQnlJZCBsb29rdXBzLgor
CisgICAgICAgIFRvIGlsbHVzdHJhdGUsIHR5cGljYWwgcHJpdmF0ZSBmaWVsZCBhY2Nlc3Mgd2ls
bCBsb29rIGxpa2U6CisKKyAgICAgICAgPEZpZWxkIFJlYWRzPgorICAgICAgICByZXNvbHZlX3Nj
b3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAiI3giLCBHbG9iYWxQcm9wZXJ0eSwg
MAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJvbD0+LCA8c2NvcGU+LCAiI3giLCAx
MDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFByb3BlcnR5fE5vdEluaXRpYWxpemF0
aW9uPiwgMCwgMAorICAgICAgICBnZXRfcHJpdmF0ZV9uYW1lICAgPHZhbHVlPT4sIDxyZWNlaXZl
ciAtLS0gcHJvYmFibHkgJ3RoaXMnPiwgPHN5bWJvbD4KKworICAgICAgICA8RmllbGQgV3JpdGVz
PgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgPHNjb3BlPT4sIDxjdXJyZW50U2NvcGU+LCAi
I3giLCBHbG9iYWxQcm9wZXJ0eSwgMAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgPHN5bWJv
bD0+LCA8c2NvcGU+LCAiI3giLCAxMDUwNjI0PERvTm90VGhyb3dJZk5vdEZvdW5kfEdsb2JhbFBy
b3BlcnR5fE5vdEluaXRpYWxpemF0aW9uPiwgMCwgMAorICAgICAgICBwdXRfYnlfdmFsX2RpcmVj
dCAgPHJlY2VpdmVyLCBwcm9iYWJseSAndGhpcyc+LCA8c3ltYm9sPiwgPHZhbHVlPiwgPFB1dEJ5
VmFsUHJpdmF0ZU5hbWU+CisKKyAgICAgICAgPEZpZWxkIERlZmluaXRpb24+CisgICAgICAgIHJl
c29sdmVfc2NvcGUgICAgICA8c2NvcGU9PiwgPGN1cnJlbnRTY29wZT4sICIjeCIsIEdsb2JhbFBy
b3BlcnR5LCAwCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAgICA8c3ltYm9sPT4sIDxzY29wZT4s
ICIjeCIsIDEwNTA2MjQ8RG9Ob3RUaHJvd0lmTm90Rm91bmR8R2xvYmFsUHJvcGVydHl8Tm90SW5p
dGlhbGl6YXRpb24+LCAwLCAwCisgICAgICAgIHB1dF9ieV92YWxfZGlyZWN0ICA8cmVjZWl2ZXIs
IHByb2JhYmx5ICd0aGlzJz4sIDxzeW1ib2w+LCA8dmFsdWU+LCA8UHV0QnlWYWxQcml2YXRlTmFt
ZXxQdXRCeVZhbFRocm93SWZFeGlzdHM+CisKKyAgICAgICAgVGhlIGZlYXR1cmUgaXMgY3VycmVu
dGx5IGhpZGRlbiBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBKU0M6Ok9wdGlvbnM6OnVzZVByaXZh
dGVDbGFzc0ZpZWxkcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgICogYnl0ZWNvZGUvRml0cy5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRC
eVZhbEZsYWdzLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEtpbmQuaC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlWYWxGbGFncy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFn
czo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlRGlyZWN0KToK
KyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKToK
KyAgICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKToKKyAg
ICAgICAgKEpTQzo6UHV0QnlWYWxGbGFnczo6aXNEaXJlY3QgY29uc3QpOgorICAgICAgICAoSlND
OjpQdXRCeVZhbEZsYWdzOjplY21hTW9kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlB1dEJ5VmFs
RmxhZ3M6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRC
eVZhbEZsYWdzOjppc1ByaXZhdGVGaWVsZEFjY2VzcyBjb25zdCk6CisgICAgICAgIChKU0M6OlB1
dEJ5VmFsRmxhZ3M6OmlzUHJpdmF0ZUZpZWxkUHV0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHV0
QnlWYWxGbGFnczo6aXNQcml2YXRlRmllbGRBZGQgY29uc3QpOgorICAgICAgICAoSlNDOjpQdXRC
eVZhbEZsYWdzOjpQdXRCeVZhbEZsYWdzKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRLaW5kLmg6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFy
ZVByaXZhdGVGaWVsZE5hbWVzKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0
YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkpOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQb3N0
Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgor
ICAgICAgICAoSlNDOjpBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RGVmaW5l
RmllbGROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6ZWNtYU1vZGUpOgorICAgICAgICAoSlNDOjpERkc6OmVjbWFNb2RlPE9w
UHV0QnlWYWxEaXJlY3Q+KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlWYWwpOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0
QnlJZCk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAgICAgKiBnZW5l
cmF0b3IvRFNMLnJiOgorICAgICAgICAqIGppdC9JQ1N0YXRzLmg6CisgICAgICAgICogaml0L0pJ
VC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRHZW5lcmF0
b3IpOgorICAgICAgICAoSlNDOjpKSVRQdXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9u
KToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpT
Qzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAgICog
aml0L0pJVElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SklUOjplY21hTW9kZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZWNtYU1vZGU8T3BQdXRCeUlkPik6CisgICAgICAgIChKU0M6OkpJVDo6ZWNt
YU1vZGU8T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVs
ZEFjY2Vzc0tpbmQpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ8
T3BQdXRCeVZhbERpcmVjdD4pOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6cHV0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJpdmF0
ZUZpZWxkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dEJ5VmFsV2l0
aENhY2hlZElkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9wdXRfYnlfdmFsKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAg
ICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJp
Y1B1dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0aW1pemluZ1B1
dEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6aXNQcml2YXRlTG9jYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtl
RnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
b2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxM
Q2hhcj46OnBhcnNlSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkxleGVyPFVDaGFyPjo6cGFy
c2VJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNl
SWRlbnRpZmllclNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdpdGhvdXRD
bGVhcmluZ0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6QmFzZURvdE5vZGUpOgorICAgICAgICAo
SlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAg
ICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6Okhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZTo6SGFz
T3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90
Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpS
ZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6c2hvdWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3Mp
OgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9k
ZTo6aXNQcml2YXRlTG9jYXRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6
YmFzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OnR5cGUgY29uc3QpOgorICAgICAgICAoSlND
OjpCYXNlRG90Tm9kZTo6aXNQcml2YXRlRmllbGQgY29uc3QpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJs
ZURlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZURlc3RydWN0dXJpbmdQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0
YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+Ojp1c2VQcml2YXRlTmFtZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjppc1ByaXZhdGVOYW1lU2NvcGUgY29uc3QpOgor
ICAgICAgICAoSlNDOjpTY29wZTo6c2V0SXNQcml2YXRlTmFtZVNjb3BlKToKKyAgICAgICAgKEpT
Qzo6U2NvcGU6Omhhc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmNvcHlVbmRl
Y2xhcmVkUHJpdmF0ZU5hbWVzVG8pOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzVXNlZEJ1dFVu
ZGVjbGFyZWRQcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpTY29wZTo6dXNlUHJp
dmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyOjpmaW5kUHJpdmF0ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6
OlBhcnNlcjo6cHJpdmF0ZU5hbWVTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Y29weVVu
ZGVjbGFyZWRQcml2YXRlTmFtZXNUb091dGVyU2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6
Om1hdGNoQW5kVXBkYXRlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
KToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMu
aDoKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVu
dC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Om9wZXJhdG9yPSk6Cisg
ICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnN3YXApOgorICAgICAgICAoSlNDOjpD
b21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQpOgor
ICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRlTmFtZSBjb25zdCk6CisgICAgICAgIChK
U0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2YXRlTmFtZSk6CisgICAgICAg
IChKU0M6OlByaXZhdGVOYW1lRW50cnk6OlByaXZhdGVOYW1lRW50cnkpOgorICAgICAgICAoSlND
OjpQcml2YXRlTmFtZUVudHJ5Ojppc1VzZWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRl
TmFtZUVudHJ5Ojppc0RlY2xhcmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVF
bnRyeTo6c2V0SXNVc2VkKToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6c2V0SXNE
ZWNsYXJlZCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmJpdHMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5OjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6VmFyaWFibGVFbnZpcm9ubWVudCk6CisgICAg
ICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoSlND
OjpWYXJpYWJsZUVudmlyb25tZW50OjptYXBTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVOYW1lKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6dXNlUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50Ojpwcml2YXRlTmFtZXNTaXplIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6aGFzUHJpdmF0ZU5hbWUpOgorICAgICAgICAoSlNDOjpWYXJpYWJs
ZUVudmlyb25tZW50Ojpjb3B5UHJpdmF0ZU5hbWVzVG8gY29uc3QpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50Ojpjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE6OlJhcmVEYXRhKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6Z2V0T3JBZGRQcml2YXRlTmFtZSk6
CisgICAgICAgICogcnVudGltZS9DYWNoZWRUeXBlcy5jcHA6CisgICAgICAgIChKU0M6OkNhY2hl
ZE9wdGlvbmFsOjpkZWNvZGVBc1B0ciBjb25zdCk6CisgICAgICAgIChKU0M6OkNhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnRSYXJlRGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkVmFy
aWFibGVFbnZpcm9ubWVudFJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpD
YWNoZWRWYXJpYWJsZUVudmlyb25tZW50OjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRT
eW1ib2xUYWJsZVJhcmVEYXRhOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWNoZWRTeW1ib2xU
YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkU3ltYm9sVGFibGU6OmRlY29kZSBj
b25zdCk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbCk6CisgICAgICAgICogcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25J
ZGVudGlmaWVycyk6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19Q
QVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAg
ICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWRlZmluZWRQcml2
YXRlTmFtZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
UHJpdmF0ZVN5bWJvbCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdElu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZFNsb3QpOgor
ICAgICAgICAoSlNDOjpKU09iamVjdDo6Z2V0UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZp
bmVQcml2YXRlRmllbGQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAg
IChKU0M6OkpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFyaWFibGVzVW5kZXJURFopOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6U3ltYm9sVGFibGU6OmNsb25lU2NvcGVQYXJ0KToKKyAgICAg
ICAgKiBydW50aW1lL1N5bWJvbFRhYmxlLmg6CisKIDIwMjAtMDYtMDQgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBERkdEb2VzR0NDaGVjayB0byBvbmx5
IHN0b3JpbmcgYSB1aW50MzJfdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxNDkxODlhOTA1MzVhMmZmM2ExNzE0ZGVmYWNkYzY4ZjA0MjRhNWRhLi5iYTAyMDU5Y2Q1Yjlm
OWFhNWYzOGU1ZWVjMzU0MGU2MzM5NDExZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC01NDAsNiArNTQwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBieXRlY29kZS9PcGVyYW5kcy5oCiAgICAgYnl0ZWNvZGUvUHJv
cGVydHlDb25kaXRpb24uaAogICAgIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5oCisgICAgYnl0ZWNv
ZGUvUHV0QnlWYWxGbGFncy5oCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAogICAgIGJ5
dGVjb2RlL1N0cnVjdHVyZVNldC5oCiAgICAgYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGNkNmY5N2I5YzFmNTZhZGFhOTAxMGE5OGY5ZmUz
ZGVhYjI5ODE2MC4uYTg1YjI5MWJiNmI3NzA2NGJiOTIzNzdhZmRmMGRkZTVkZTUyM2Q5NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTAsNiArMTI1MCw3IEBACiAJCTg2NzA0
Qjg3MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MDEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJ
VC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
NzA0Qjg4MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI4MTEyREJBMzM3MDBBOUZFN0IgLyog
WWFyclBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY3MDRCODMxMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJODY3NkM2RTgyMzQ2NDY3RTAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxh
Z3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzZD
NkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY4OTE2QjAxNTVGMjg2MzAwQ0IyQjlB
IC8qIFByaXZhdGVOYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4Njg5MTZBOTE1NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Njg5MjFDMjFGOUMw
Q0I3MDAxMTU5RjYgLyogSlNCaWdJbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2ODkyMUMxMUY5QzBDQjcwMDExNTlGNiAvKiBKU0JpZ0ludC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OTc2RTVF
MUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2OTc2RTVBMUZBMzc1OEEwMEU3QzRFMSAvKiBC
aWdJbnRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNDExNSw2ICs0MTE2LDggQEAKIAkJODY3MDRCODExMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyclBh
cnNlci5oOyBwYXRoID0geWFyci9ZYXJyUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg2NzA0QjgyMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBZYXJyUGF0dGVybi5jcHA7IHBhdGggPSB5
YXJyL1lhcnJQYXR0ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRC
ODMxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJQYXR0ZXJuLmg7IHBhdGggPSB5YXJyL1lhcnJQYXR0ZXJuLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NzZDNkU2MjM0NjQ1MEIwMEZBQUZGMyAvKiBQ
dXRCeVZhbEZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dEJ5VmFsRmxhZ3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY3NkM2RTcyMzQ2NDVCMzAwRkFBRkYzIC8qIFB1dEJ5VmFs
RmxhZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHV0QnlWYWxGbGFncy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg4MEY0QzE0MzUzQjIx
MDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDsgcGF0aCA9IGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY4OTE2
QTkxNTVGMjg1NDAwQ0IyQjlBIC8qIFByaXZhdGVOYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFByaXZhdGVOYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04NDA1LDYgKzg0MDgsOCBAQAogCQkJCTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRC
eUlkU3RhdHVzLmggKi8sCiAJCQkJMEY5M0I0QTcxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRW
YXJpYW50LmNwcCAqLywKIAkJCQkwRjkzQjRBODE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZh
cmlhbnQuaCAqLywKKwkJCQk4Njc2QzZFNzIzNDY0NUIzMDBGQUFGRjMgLyogUHV0QnlWYWxGbGFn
cy5jcHAgKi8sCisJCQkJODY3NkM2RTYyMzQ2NDUwQjAwRkFBRkYzIC8qIFB1dEJ5VmFsRmxhZ3Mu
aCAqLywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovLAogCQkJ
CTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKIAkJ
CQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLApAQCAt
OTM0MSw2ICs5MzQ2LDcgQEAKIAkJCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVz
aXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0Mjc2NTE1OTFBMUNF
MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjVBMTI3
NDE5MkQ5RkRGMDA4NzY0QTMgLyogREZHRG9lc0dDLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUMz
QTNBMTI0ODczNUNBMDAzOTVCNTQgLyogREZHRG9lc0dDQ2hlY2suaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRDgxQUQzMTU0RkI0RjAwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjFFM0E0NzE1MzRDQkI5MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDNDODI4MTQxMTVENEYwMEZEODFDQiAvKiBERkdE
cml2ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNTMsNiArMTAxNTksNyBAQAogCQkJCTBGMTVD
RDIzMUJBNUY5ODYwMDMxRkZEMyAvKiBQdXRCeUlkRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOTMzMkE0MTRDQTdERDkwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzQjRBQTE4QjkyQzREMDAxNzhBM0YgLyogUHV0QnlJZFZhcmlhbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTg2NzZDNkU4MjM0NjQ2N0UwMEZBQUZGMyAvKiBQdXRCeVZhbEZsYWdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyogUHV0RGly
ZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjlGQzhDNTE0RTFCNjA0MDBENTJB
RTAgLyogUHV0S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3Qjg0NjMwRTZERTZCMTAwNDc3
NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDIwMSw3ICsxMDIw
OCw2IEBACiAJCQkJNzlENUNENUIxQzExMDZBOTAwQ0VDQTA3IC8qIFNhbXBsaW5nUHJvZmlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI4MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRB
cmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAv
KiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkVDM0EzQTEyNDg3
MzVDQTAwMzk1QjU0IC8qIERGR0RvZXNHQ0NoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUw
NTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMjdkNTVmNDU3
NzE5OWEwNjY3MmFlZWI1MGIyNDdjZjUyOWI2ZGQ2OC4uOWJiNzJjYjZkNTI5NTM2NmY2MTg4YzZh
NWQ2YmZkNDZmN2M2ZDRmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMjY4LDYg
KzI2OCw3IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRC
eUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJ
ZFZhcmlhbnQuY3BwCitieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcAogYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2UuY3BwCiBieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuaAppbmRleCAyY2Y2MTlkMjhkZTM2NTUxYzQwYmUyNDJmYjQ5NDdmZmE4YjQyYWUz
Li43NDU0ODhiZWRhMDQxZWE3OWE5M2MxNWY0N2U4ZjRjNDI2Mzk5YTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0xNjksNyArMTY5LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8od2ViQXNzZW1ibHlDb21waWxlU3RyZWFtaW5n
SW50ZXJuYWwpIFwKICAgICBtYWNybyh3ZWJBc3NlbWJseUluc3RhbnRpYXRlU3RyZWFtaW5nSW50
ZXJuYWwpIFwKICAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXIpIFwKLSAgICBtYWNy
byhoYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uKSAKKyAgICBtYWNybyhoYXNPd25Qcm9wZXJ0eUZ1bmN0
aW9uKSBcCisgICAgbWFjcm8oY3JlYXRlUHJpdmF0ZVN5bWJvbCkKIAogbmFtZXNwYWNlIFN5bWJv
bHMgewogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMobmFtZSkgZXh0ZXJu
IEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwgbmFtZSMjU3lt
Ym9sOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
aW5kZXggMGJkNmEwN2ZmYjBlMzE3OTVmMTQ2YmE0ODU0MWFiYzVlNThlMmJlOC4uZDNlNjc4YjUy
ZDMzYzNlZDY5Y2ZjZmNhZjgzMzQ3ZmZkZDI1YTE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC00OSw2ICs0OSw3IEBAIHR5cGVzIFsK
ICAgICA6UHJvZmlsZVR5cGVCeXRlY29kZUZsYWcsCiAgICAgOlByb3BlcnR5T2Zmc2V0LAogICAg
IDpQdXRCeUlkRmxhZ3MsCisgICAgOlB1dEJ5VmFsRmxhZ3MsCiAgICAgOlJlc29sdmVUeXBlLAog
ICAgIDpTdHJ1Y3R1cmUsCiAgICAgOlN0cnVjdHVyZUlELApAQCAtNTUwLDYgKzU1MSwxOSBAQCBv
cCA6Z2V0X2J5X3ZhbCwKICAgICAgICAgc2VlbklkZW50aWZpZXJzOiBHZXRCeVZhbEhpc3Rvcnks
CiAgICAgfQogCitvcCA6Z2V0X3ByaXZhdGVfbmFtZSwKKyAgICBhcmdzOiB7CisgICAgICAgIGRz
dDogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAg
ICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCisgICAgfSwKKyAgICBtZXRhZGF0YTogewor
ICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCisgICAgICAgIHN0cnVjdHVyZUlEOiBTdHJ1
Y3R1cmVJRCwKKyAgICAgICAgb2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgcHJvcGVydHk6IFdy
aXRlQmFycmllcltKU0NlbGxdLAorICAgIH0KKwogb3AgOnB1dF9ieV92YWwsCiAgICAgYXJnczog
ewogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCkBAIC01NzUsNyArNTg5LDcgQEAgb3Ag
OnB1dF9ieV92YWxfZGlyZWN0LAogICAgICAgICBiYXNlOiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAg
ICAgIHByb3BlcnR5OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgICAgIHZhbHVlOiBWaXJ0dWFsUmVn
aXN0ZXIsCi0gICAgICAgIGVjbWFNb2RlOiBFQ01BTW9kZSwKKyAgICAgICAgZmxhZ3M6IFB1dEJ5
VmFsRmxhZ3MsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBhcnJheVByb2ZpbGU6
IEFycmF5UHJvZmlsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuY3BwCmluZGV4IGEzMTkwZjJkZDVkM2I2ZDJmZGJjZWY4ZTAyMGZlYjNjZmM3
NTg1MDQuLmIwZjJlODAyZDcyN2M3ZjhlMzI5NGMxNTViOTFjYjJjOGRiZTllNGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmNwcApAQCAt
MjEzLDYgKzIxMyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZUluZGV4SW1wbChWaXJ0
dWFsUmVnaXN0ZXIgc2NvcGVSZWdpc3RlciwgY29uc3QgSW5zdHJ1CiAgICAgVVNFUyhPcEVudW1l
cmF0b3JTdHJ1Y3R1cmVQbmFtZSwgZW51bWVyYXRvciwgaW5kZXgpCiAgICAgVVNFUyhPcEVudW1l
cmF0b3JHZW5lcmljUG5hbWUsIGVudW1lcmF0b3IsIGluZGV4KQogICAgIFVTRVMoT3BHZXRCeVZh
bCwgYmFzZSwgcHJvcGVydHkpCisgICAgVVNFUyhPcEdldFByaXZhdGVOYW1lLCBiYXNlLCBwcm9w
ZXJ0eSkKICAgICBVU0VTKE9wSW5CeVZhbCwgYmFzZSwgcHJvcGVydHkpCiAgICAgVVNFUyhPcE92
ZXJyaWRlc0hhc0luc3RhbmNlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2VWYWx1ZSkKICAgICBV
U0VTKE9wSW5zdGFuY2VvZiwgdmFsdWUsIHByb3RvdHlwZSkKQEAgLTQyOCw2ICs0MjksNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVJbmRleEltcGwodW5zaWduZWQgbnVtVmFycywgY29u
c3QgSW5zdHJ1Y3Rpb24qIGluc3RydQogICAgIERFRlMoT3BJbnN0YW5jZW9mLCBkc3QpCiAgICAg
REVGUyhPcEluc3RhbmNlb2ZDdXN0b20sIGRzdCkKICAgICBERUZTKE9wR2V0QnlWYWwsIGRzdCkK
KyAgICBERUZTKE9wR2V0UHJpdmF0ZU5hbWUsIGRzdCkKICAgICBERUZTKE9wVHlwZW9mLCBkc3Qp
CiAgICAgREVGUyhPcElkZW50aXR5V2l0aFByb2ZpbGUsIHNyY0RzdCkKICAgICBERUZTKE9wSXNF
bXB0eSwgZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAppbmRleCA1YTkzODQwNzMxNjYwN2QyZjE2ZWU2ZDZmMDdjMTY0NWJjYzU3OGY1Li4zZDBlNTc2
YmJmNDZlOWQzYTRjYWU2ZGQwZDMxZTc3Mjc3YjM5MjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTI1MSw2ICsxMjUxLDE5IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fb2Zmc2V0ID0gMDsKICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9tZXRhZGF0YS0+Zm9y
RWFjaDxPcEdldFByaXZhdGVOYW1lPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7CisgICAgICAgICAg
ICBKU0NlbGwqIHByb3BlcnR5ID0gbWV0YWRhdGEubV9wcm9wZXJ0eS5nZXQoKTsKKyAgICAgICAg
ICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9zdHJ1Y3R1cmVJRDsKKwor
ICAgICAgICAgICAgaWYgKCghcHJvcGVydHkgfHwgdm0uaGVhcC5pc01hcmtlZChwcm9wZXJ0eSkp
ICYmICghc3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5nZXQoc3RydWN0dXJlSUQpKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJDbGVhcmluZyBM
TEludCBwcml2YXRlIHByb3BlcnR5IGFjY2Vzcy4iKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
c3RydWN0dXJlSUQgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9vZmZzZXQgPSAwOworICAg
ICAgICAgICAgbWV0YWRhdGEubV9wcm9wZXJ0eS5jbGVhcigpOworICAgICAgICB9KTsKKwogICAg
ICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wUHV0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX29s
ZFN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBt
ZXRhZGF0YS5tX25ld1N0cnVjdHVyZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0ZpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9GaXRz
LmgKaW5kZXggMGQ5NTcwOTI2YWIxNDczNzhlYzMxNzI4MzhkYjIzNTg4MmRiN2JjZC4uMzlmZWUw
YTY2OWEyODI2NTg1YTJhNDkyMmEzODJiZjZiOGEwYWFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0ZpdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRml0cy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiT3Bjb2RlU2l6ZS5o
IgogI2luY2x1ZGUgIlByb2ZpbGVUeXBlQnl0ZWNvZGVGbGFnLmgiCiAjaW5jbHVkZSAiUHV0QnlJ
ZEZsYWdzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgogI2luY2x1ZGUgIlJlc3VsdFR5
cGUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZU9yU2NvcGVEZXB0aC5oIgogI2luY2x1ZGUgIlZp
cnR1YWxSZWdpc3Rlci5oIgpAQCAtMjU2LDYgKzI1Nyw0NyBAQCBzdHJ1Y3QgRml0czxQdXRCeUlk
RmxhZ3MsIHNpemU+IHsKICAgICAgICAgcmV0dXJuIGlzRGlyZWN0ID8gUHV0QnlJZEZsYWdzOjpj
cmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlJZEZsYWdzOjpjcmVhdGUoZWNtYU1vZGUpOwog
ICAgIH0KIH07CisKK3RlbXBsYXRlPE9wY29kZVNpemUgc2l6ZT4KK3N0cnVjdCBGaXRzPFB1dEJ5
VmFsRmxhZ3MsIHNpemU+IHsKKyAgICB1c2luZyBUYXJnZXRUeXBlID0gdHlwZW5hbWUgVHlwZUJ5
U2l6ZTxzaXplPjo6dW5zaWduZWRUeXBlOworCisgICAgLy8gUHV0QnlWYWxGbGFncyBpcyAyIGJv
b2xlYW5zIGFuZCBhIDIgYml0IGVudW0sIGVuY29kZWQgYXM6CisgICAgLy8gICAgICAgICAgaXNT
dHJpY3QKKyAgICAvLyAgICAgICAgICAgICB2CisgICAgLy8gICAgIDAwMDB8MDB8MHwwIDwgaXNE
aXJlY3QKKyAgICAvLyAgICAgICAgICAgXgorICAgIC8vICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tp
bmQgezAgPSBOb25lLCAxID0gUHV0LCAyID0gQ3JlYXRlIH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IGludCBzX2lzRGlyZWN0Qml0ID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX2lzU3Ry
aWN0Qml0ID0gMjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCBzX3ByaXZhdGVGaWVsZEFjY2Vz
c0tpbmRNYXNrID0gMTI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgc19wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kU2hpZnQgPSAyOworCisgICAgc3RhdGljIGJvb2wgY2hlY2soUHV0QnlWYWxGbGFn
cykKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBUYXJn
ZXRUeXBlIGNvbnZlcnQoUHV0QnlWYWxGbGFncyBmbGFncykKKyAgICB7CisgICAgICAgIGF1dG8g
aXNEaXJlY3QgPSBzdGF0aWNfY2FzdDx1aW50OF90PihmbGFncy5pc0RpcmVjdCgpKTsKKyAgICAg
ICAgYXV0byBpc1N0cmljdCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGZsYWdzLmVjbWFNb2RlKCku
aXNTdHJpY3QoKSk7CisgICAgICAgIGF1dG8gcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGZsYWdzLnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQoKSk7CisgICAgICAg
IHJldHVybiAocHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA8PCBzX3ByaXZhdGVGaWVsZEFjY2Vzc0tp
bmRTaGlmdCkgfCAoaXNTdHJpY3QgPDwgMSkgfCBpc0RpcmVjdDsKKyAgICB9CisKKyAgICBzdGF0
aWMgUHV0QnlWYWxGbGFncyBjb252ZXJ0KFRhcmdldFR5cGUgZ3BpKQorICAgIHsKKyAgICAgICAg
YXV0byBpc0RpcmVjdCA9IHN0YXRpY19jYXN0PGJvb2w+KGdwaSAmIHNfaXNEaXJlY3RCaXQpOwor
ICAgICAgICBhdXRvIGlzU3RyaWN0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZ3BpICYgc19pc1N0cmlj
dEJpdCk7CisgICAgICAgIGF1dG8gYWNjZXNzID0gc3RhdGljX2Nhc3Q8UHJpdmF0ZUZpZWxkQWNj
ZXNzS2luZD4oKGdwaSAmIHNfcHJpdmF0ZUZpZWxkQWNjZXNzS2luZE1hc2spID4+IHNfcHJpdmF0
ZUZpZWxkQWNjZXNzS2luZFNoaWZ0KTsKKyAgICAgICAgYXV0byBlY21hTW9kZSA9IGlzU3RyaWN0
ID8gRUNNQU1vZGU6OnN0cmljdCgpIDogRUNNQU1vZGU6OnNsb3BweSgpOworICAgICAgICByZXR1
cm4gYWNjZXNzID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUgPworICAgICAgICAgICAg
aXNEaXJlY3QgPyBQdXRCeVZhbEZsYWdzOjpjcmVhdGVEaXJlY3QoZWNtYU1vZGUpIDogUHV0QnlW
YWxGbGFnczo6Y3JlYXRlKGVjbWFNb2RlKSA6CisgICAgICAgICAgICBhY2Nlc3MgPT0gUHJpdmF0
ZUZpZWxkQWNjZXNzS2luZDo6UHV0ID8gUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZp
ZWxkKGVjbWFNb2RlKSA6IFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURlZmluZVByaXZhdGVGaWVsZChl
Y21hTW9kZSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUgRSwgT3Bjb2RlU2l6ZSBz
aXplPgogc3RydWN0IEZpdHM8RSwgc2l6ZSwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoRSkgIT0g
c2l6ZSAmJiBzdGQ6OmlzX2VudW08RT46OnZhbHVlLCBzdGQ6OnRydWVfdHlwZT4+IDogcHVibGlj
IEZpdHM8c3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxFPiwgc2l6ZT4gewogICAgIHVzaW5nIEJhc2Ug
PSBGaXRzPHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RT4sIHNpemU+OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmtUaW1lQ29uc3RhbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5rVGltZUNvbnN0YW50LmgKaW5kZXggZTRkYzk1Y2Iw
YTI2OTk1MTY2ZTA2NmY0ZTVkYjVkNTdlNzY4YjFkMC4uMWIwNzAwZGY2NzU1YzJjNTY3ZmI4NTc5
MWUwNmVlY2M0MmVhMGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xpbmtUaW1lQ29uc3RhbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTGlua1RpbWVDb25zdGFudC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiAgICAgdihhcHBseUZ1bmN0aW9uLCBudWxscHRyKSBcCiAgICAgdihjYWxsRnVuY3Rp
b24sIG51bGxwdHIpIFwKICAgICB2KGhhc093blByb3BlcnR5RnVuY3Rpb24sIG51bGxwdHIpIFwK
KyAgICB2KGNyZWF0ZVByaXZhdGVTeW1ib2wsIG51bGxwdHIpIFwKIAogCiAjZGVmaW5lIERFQ0xB
UkVfTElOS19USU1FX0NPTlNUQU5UKG5hbWUsIGNvZGUpIG5hbWUsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlWYWxGbGFncy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDhlOTBm
ZDA3ZDBkMzcxMzAyMmRkZDg5ZTk2NjU2M2IwNWY2NDBhOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmNwcApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4K
KyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRT
dHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3Zv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBQdXRCeVZhbEZsYWdzIGZsYWdzKQor
eworICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlmIChmbGFncy5pc0RpcmVjdCgp
KQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJEaXJlY3QiKTsKKyAgICBpZiAoZmxhZ3MuaXNQ
cml2YXRlRmllbGRQdXQoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiUHJpdmF0ZUZpZWxk
K1B1dCIpOworICAgIGlmIChmbGFncy5pc1ByaXZhdGVGaWVsZEFkZCgpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJQcml2YXRlRmllbGQrQWRkIik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5VmFsRmxh
Z3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjVmZmQ3OTdmNjU4Nzg3OWMwYzMyMTU5Yzk2NTAyODI4MmEzOWZjYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeVZhbEZsYWdz
LmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiU3RydWN0dXJlSURUYWJsZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
ZW51bSBjbGFzcyBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIDogdWludDhfdCB7CisgICAgTm9uZSwK
KyAgICBQdXQsCisgICAgQ3JlYXRlLAorfTsKKworY2xhc3MgUHV0QnlWYWxGbGFncyB7CitwdWJs
aWM6CisgICAgY29uc3RleHByIHN0YXRpYyBQdXRCeVZhbEZsYWdzIGNyZWF0ZShFQ01BTW9kZSBl
Y21hTW9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiBQdXRCeVZhbEZsYWdzKGZhbHNlLCBlY21h
TW9kZSk7CisgICAgfQorCisgICAgLy8gQSBkaXJlY3QgcHV0X2J5X2lkIG1lYW5zIHRoYXQgd2Ug
c3RvcmUgdGhlIHByb3BlcnR5IHdpdGhvdXQgY2hlY2tpbmcgaWYgdGhlCisgICAgLy8gcHJvdG90
eXBlIGNoYWluIGhhcyBhIHNldHRlci4KKyAgICBjb25zdGV4cHIgc3RhdGljIFB1dEJ5VmFsRmxh
Z3MgY3JlYXRlRGlyZWN0KEVDTUFNb2RlIGVjbWFNb2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFB1dEJ5VmFsRmxhZ3ModHJ1ZSwgZWNtYU1vZGUpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBz
dGF0aWMgUHV0QnlWYWxGbGFncyBjcmVhdGVEZWZpbmVQcml2YXRlRmllbGQoRUNNQU1vZGUgZWNt
YU1vZGUpCisgICAgeworICAgICAgICByZXR1cm4gUHV0QnlWYWxGbGFncyhQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpDcmVhdGUsIGVjbWFNb2RlKTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgc3Rh
dGljIFB1dEJ5VmFsRmxhZ3MgY3JlYXRlUHV0UHJpdmF0ZUZpZWxkKEVDTUFNb2RlIGVjbWFNb2Rl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFB1dEJ5VmFsRmxhZ3MoUHJpdmF0ZUZpZWxkQWNjZXNz
S2luZDo6UHV0LCBlY21hTW9kZSk7CisgICAgfQorCisgICAgYm9vbCBpc0RpcmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEaXJlY3Q7IH0KKyAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZWNtYU1vZGU7IH0KKyAgICBQcml2YXRlRmllbGRBY2Nlc3NLaW5kIHByaXZhdGVG
aWVsZEFjY2Vzc0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ7
IH0KKyAgICBib29sIGlzUHJpdmF0ZUZpZWxkQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcml2
YXRlRmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7IH0KKyAg
ICBib29sIGlzUHJpdmF0ZUZpZWxkUHV0KCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlRmllbGRB
Y2Nlc3NLaW5kID09IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6OlB1dDsgfQorICAgIGJvb2wgaXNQ
cml2YXRlRmllbGRBZGQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQg
PT0gUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Q3JlYXRlOyB9CisKK3ByaXZhdGU6CisKKyAgICBj
b25zdGV4cHIgUHV0QnlWYWxGbGFncyhib29sIGlzRGlyZWN0LCBFQ01BTW9kZSBlY21hTW9kZSkK
KyAgICAgICAgOiBtX2lzRGlyZWN0KGlzRGlyZWN0KQorICAgICAgICAsIG1fcHJpdmF0ZUZpZWxk
QWNjZXNzS2luZChQcml2YXRlRmllbGRBY2Nlc3NLaW5kOjpOb25lKQorICAgICAgICAsIG1fZWNt
YU1vZGUoZWNtYU1vZGUpCisgICAgeworICAgIH0KKworICAgIGNvbnN0ZXhwciBQdXRCeVZhbEZs
YWdzKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgYWNjZXNzLCBFQ01BTW9kZSBlY21hTW9kZSkKKyAg
ICAgICAgOiBtX2lzRGlyZWN0KHRydWUpCisgICAgICAgICwgbV9wcml2YXRlRmllbGRBY2Nlc3NL
aW5kKGFjY2VzcykKKyAgICAgICAgLCBtX2VjbWFNb2RlKGVjbWFNb2RlKQorICAgIHsKKyAgICB9
CisKKyAgICBib29sIG1faXNEaXJlY3Q7CisgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBtX3By
aXZhdGVGaWVsZEFjY2Vzc0tpbmQ7CisgICAgRUNNQU1vZGUgbV9lY21hTW9kZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07
CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6UHV0QnlWYWxGbGFncyk7
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEtpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRL
aW5kLmgKaW5kZXggNjExMjc5ZjYwOWEwODU4OWFkY2U5MWMyYTVjOGFmNjQ4MDgwYzRjNi4uZjkw
ZDUyOWQyYWViYjNjZDk1YzhiNDU3YjY0OGI1Zjc0YjhmYjEzYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0S2luZC5oCkBAIC0yNyw2ICsyNyw2IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1lbnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCB9OworZW51bSBQdXRLaW5k
IHsgRGlyZWN0LCBOb3REaXJlY3QsIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSwgRGlyZWN0UHJp
dmF0ZUZpZWxkUHV0IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggYmNmN2QzYWQ4NWViMWZjZmQ0MWZiN2Y4OTEwMjJlYjliN2ZkN2Q1Ny4uNDYx
ZDlmYWRkNDhiMzViYzk0ZWRkNjEwYjczODdjZWE5MDJjMTRmNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCiAgICAgQVNTRVJUKGlzRnVu
Y3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBWZWN0b3I8SlNU
ZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25zID0gZXhlY3V0YWJsZS0+aW5zdGFu
Y2VGaWVsZExvY2F0aW9ucygpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1
bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgZXhlY3V0
YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgZXhlY3V0
YWJsZS0+cGFyc2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVs
bHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIEV2
YWxDb250ZXh0VHlwZTo6Tm9uZSwgbnVsbHB0ciwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7Cisg
ICAgICAgIHZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsIHNjcmlwdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5z
dXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgRGVy
aXZlZENvbnRleHRUeXBlOjpOb25lLCBFdmFsQ29udGV4dFR5cGU6Ok5vbmUsIG51bGxwdHIsIG51
bGxwdHIsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewog
ICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZmRi
ZTM5YjRkNWM0YjI4NTIxMTU2MDEzZDVhZjg1YjYxNzgyYzIwYy4uNjlkZWFmZGJkMjdiMjQzNDI2
YTdhOWVhNjVjODE5NmQ5MzNmOTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4OTIsNiArMTg5
MiwxMSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJs
ZXMoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICBTeW1ib2xUYWJs
ZUVudHJ5IG5ld0VudHJ5KHZhck9mZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVudHJ5LnZh
bHVlLmlzQ29uc3QoKSA/IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSA6IFByb3BlcnR5QXR0
cmlidXRlOjpOb25lKSk7CiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkKE5vTG9ja2luZ05l
Y2Vzc2FyeSwgZW50cnkua2V5LmdldCgpLCBuZXdFbnRyeSk7CisKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBvbmx5IGRvIHRoaXMgaWYgdGhlcmUgaXMgYW4gZXZhbCgpIHdpdGhpbiBhIG5lc3RlZCBz
Y29wZSAtLS0gb3RoZXJ3aXNlIGl0IGlzbid0IG5lZWRlZC4KKyAgICAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY2NjMKKyAgICAgICAgICAgIGlm
IChlbnRyeS52YWx1ZS5pc1ByaXZhdGVOYW1lKCkpCisgICAgICAgICAgICAgICAgc3ltYm9sVGFi
bGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjY5Myw5ICsyNjk4LDE1IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogdGhpc1ZhCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpCit7CisgICAgT3BHZXRQcml2
YXRlTmFtZTo6ZW1pdCh0aGlzLCBkc3QsIGJhc2UsIHByb3BlcnR5KTsKKyAgICByZXR1cm4gZHN0
OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFs
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSkKIHsKLSAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2
YWx1ZSwgZWNtYU1vZGUoKSk7CisgICAgT3BQdXRCeVZhbERpcmVjdDo6ZW1pdCh0aGlzLCBiYXNl
LCBwcm9wZXJ0eSwgdmFsdWUsIFB1dEJ5VmFsRmxhZ3M6OmNyZWF0ZURpcmVjdChlY21hTW9kZSgp
KSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNzE3LDYgKzI3MjgsMTggQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRJbnRlcm5hbEZpZWxkKFJlZ2lzdGVySUQq
IGJhc2UsIHVuc2lnbmVkIGkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVmaW5lUHJpdmF0ZUZpZWxkKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBPcFB1dEJ5
VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgUHV0QnlWYWxGbGFn
czo6Y3JlYXRlRGVmaW5lUHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkpKTsKKyAgICByZXR1cm4gdmFs
dWU7Cit9CisKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxk
UHV0KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSkKK3sKKyAgICBPcFB1dEJ5VmFsRGlyZWN0OjplbWl0KHRoaXMsIGJhc2UsIHByb3BlcnR5
LCB2YWx1ZSwgUHV0QnlWYWxGbGFnczo6Y3JlYXRlUHV0UHJpdmF0ZUZpZWxkKGVjbWFNb2RlKCkp
KTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRT
dXBlclNhbXBsZXJCZWdpbigpCiB7CiAgICAgT3BTdXBlclNhbXBsZXJCZWdpbjo6ZW1pdCh0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCA3Mjg2NDkwNjk5YzdlNjc1NWQwODQzZTY5YjRiZDFhZDE5Yjg2
YjM5Li5jNGIzZWQ3NjY2MjlkYjYyY2FmZTczNzdlMDFkMTJhN2UxYWYxMjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC04MTMsMTEgKzgxMywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0
R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBw
cm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEdldEludGVybmFsRmllbGQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCB1
bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRJbnRlcm5hbEZpZWxk
KFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2YWx1ZSk7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWZpbmVQcml2YXRlRmllbGQoUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFByaXZhdGVGaWVsZFB1dChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogCiAgICAgICAgIHZvaWQgZW1pdFN1cGVy
U2FtcGxlckJlZ2luKCk7CiAgICAgICAgIHZvaWQgZW1pdFN1cGVyU2FtcGxlckVuZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CmluZGV4IDQ0MWZhMjRlY2M4YzE4ZDIzMmU0Yjk0YWU1NGU5YmI0ZWY1NmZkOWEuLjQxOTRkOTRk
ZjBjNjA1ZjZjNGExY2YyN2E0NTk2ZDU3ZjRjYjAxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU0NCwxMSArNTQ0
LDMyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlk
KGZ1bmN0aW9uLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmhvbWVP
YmplY3RQcml2YXRlTmFtZSgpLCBob21lT2JqZWN0KTsKIH0KIAordm9pZCBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIHNjb3BlKQoreworICAgIC8vIFdhbGsgdGhlIGxpc3QgYW5kIGRl
Y2xhcmUgYW55IFByaXZhdGUgcHJvcGVydHkgbmFtZXMgKGUuZy4gYCNmb29gKSBpbiB0aGUgcHJv
dmlkZWQgc2NvcGUuCisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGNyZWF0ZVByaXZhdGVTeW1ib2w7
CisgICAgZm9yIChQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsgcDsgcCA9IHAtPm1fbmV4dCkg
eworICAgICAgICBjb25zdCBQcm9wZXJ0eU5vZGUmIG5vZGUgPSAqcC0+bV9ub2RlOworICAgICAg
ICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpIHsKKyAgICAgICAgICAg
IGlmICghY3JlYXRlUHJpdmF0ZVN5bWJvbCkKKyAgICAgICAgICAgICAgICBjcmVhdGVQcml2YXRl
U3ltYm9sID0gZ2VuZXJhdG9yLm1vdmVMaW5rVGltZUNvbnN0YW50KG51bGxwdHIsIExpbmtUaW1l
Q29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpOworCisgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGFyZ3VtZW50cyhnZW5lcmF0b3IsIG51bGxwdHIsIDApOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRDYWxs
KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKG51bGxwdHIsIGNyZWF0ZVByaXZhdGVTeW1ib2wu
Z2V0KCkpLCBjcmVhdGVQcml2YXRlU3ltYm9sLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFy
Z3VtZW50cywgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgcG9zaXRpb24oKSwgRGVidWdnYWJsZUNh
bGw6Ok5vKTsKKworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KCpub2RlLm5hbWUoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoc2Nv
cGUsIHZhciwgc3ltYm9sLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogUmVn
aXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIHBy
b3RvdHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykK
IHsKLSAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1
ZSBwcm9wZXJ0aWVzLgogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lz
dGVySUQqIGRzdCA9IG51bGxwdHI7CisKKyAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0
IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgogICAgIGZvciAoOyBwICYmIChwLT5t
X25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7
CiAgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHBy
b3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CiAKQEAgLTcxMCw2ICs3MzEsOSBAQCBSZWdpc3Rl
cklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZQogCiB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFu
dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIG5ld09i
aiwgUHJvcGVydHlOb2RlJiBub2RlKQogeworICAgIC8vIFByaXZhdGUgZmllbGRzIGFyZSBoYW5k
bGVkIGluIHRoZSBzeW50aGV0aWMgaW5zdGFuY2VGaWVsZEluaXRpYWxpemVyIGZ1bmN0aW9uLCBu
b3QgaGVyZS4KKyAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0
ZSkpOworCiAgICAgYm9vbCBzaG91bGRTZXRGdW5jdGlvbk5hbWUgPSBnZW5lcmF0b3Iuc2hvdWxk
U2V0RnVuY3Rpb25OYW1lKG5vZGUubV9hc3NpZ24pOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb3BlcnR5TmFtZTsKQEAgLTg0MCwxNiArODY0LDY2IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vz
c29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVyCiAgICAgfQogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBpZiAo
YmFzZUlzU3VwZXIpIHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdl
bmVyYXRvci5lbnN1cmVUaGlzKCk7Ci0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERl
c3QuZ2V0KCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQqIHJldCA9IGVt
aXRHZXRQcm9wZXJ0eVZhbHVlKGdlbmVyYXRvciwgZmluYWxEZXN0LmdldCgpLCBiYXNlLmdldCgp
KTsKKwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CiAKK1JlZ2lzdGVySUQq
IEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3Rl
cklEPiYgdGhpc1ZhbHVlKQoreworICAgIGlmIChpc1ByaXZhdGVGaWVsZCgpKSB7CisgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKKyAgICAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3Qg
YmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOworCisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlWYWwoZHN0LCBiYXNlLCBwcml2YXRl
TmFtZS5nZXQoKSk7CisgICAgfQorCisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewor
ICAgICAgICBpZiAoIXRoaXNWYWx1ZSkKKyAgICAgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0
LCBiYXNlLCB0aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQpOworICAgIH0KKworICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQoZHN0LCBiYXNlLCBtX2lkZW50KTsKK30KKworUmVnaXN0ZXJJ
RCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSkKK3sKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0R2V0UHJvcGVydHlWYWx1
ZShnZW5lcmF0b3IsIGRzdCwgYmFzZSwgdGhpc1ZhbHVlKTsKK30KKworUmVnaXN0ZXJJRCogQmFz
ZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0
aGlzVmFsdWUpCit7CisgICAgaWYgKGlzUHJpdmF0ZUZpZWxkKCkpIHsKKyAgICAgICAgVmFyaWFi
bGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOworICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9y
ZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQo
KSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworICAgICAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZSwgcHJpdmF0ZU5hbWUuZ2V0KCks
IHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAg
ICAgIGlmICghdGhpc1ZhbHVlKQorICAgICAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVu
c3VyZVRoaXMoKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCB0
aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIHZhbHVlKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UsIG1faWRlbnQsIHZhbHVlKTsKK30KKworUmVnaXN0ZXJJ
RCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3sKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIHJldHVybiBlbWl0UHV0UHJvcGVydHkoZ2VuZXJh
dG9yLCBiYXNlLCB2YWx1ZSwgdGhpc1ZhbHVlKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogUmVnaXN0ZXJJRCogQXJndW1lbnRMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKQEAgLTE3MzQsMTEgKzE4MDgs
OSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRP
cHRpb25hbENoZWNrKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCkpOwogICAgIH0KICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHBy
ZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIp
IHsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1cGVyQmFzZSA9IGVtaXRTdXBlckJhc2VG
b3JDYWxsZWUoZ2VuZXJhdG9yKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0
aW9uLmdldCgpLCBzdXBlckJhc2UuZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IG1faWRlbnQpOwotICAgIH0gZWxzZQotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVu
Y3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOworCisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBiYXNlSXNTdXBlciA/IGVtaXRTdXBlckJhc2VG
b3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCk7CisgICAg
ZW1pdEdldFByb3BlcnR5VmFsdWUoZ2VuZXJhdG9yLCBmdW5jdGlvbi5nZXQoKSwgYmFzZS5nZXQo
KSk7CiAKICAgICBpZiAoaXNPcHRpb25hbENoYWluQmFzZSgpKQogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE9wdGlvbmFsQ2hlY2soZnVuY3Rpb24uZ2V0KCkpOwpAQCAtMjEyOCw2ICsyMjAwLDIyIEBA
IFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBk
b3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CisKKyAgICBpZiAoZG90QWNjZXNzb3ItPmlzUHJpdmF0
ZUZpZWxkKCkpIHsKKyAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAgIFZhcmlh
YmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5h
bWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5
VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0
KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09y
RGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQo
KSwgbV9vcGVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwg
b2xkVmFsdWUuZ2V0KCkpOworICAgIH0KKwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwogICAgIGlmIChiYXNlSXNTdXBlcikg
ewpAQCAtMjM1MSw2ICsyNDM5LDIxIEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXREb3Qo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNz
b3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVy
SUQqIHZhbHVlOworICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRlRmllbGQoKSkgeworICAg
ICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgVmFyaWFibGUg
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5n
ZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAg
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNl
LmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0
b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFs
dWUpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9w
RHN0LmdldCgpKTsKKyAgICB9CisKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOwog
ICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkgewogICAgICAgICB0aGlzVmFsdWUgPSBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpOwpAQCAtMzE5MywxMSArMzI5Niw3IEBAIFJlZ2lzdGVySUQq
IEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklECiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5l
bWl0Tm9kZSh2YWx1ZS5nZXQoKSwgbV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKSA/IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsKLSAgICBpZiAobV9iYXNlLT5pc1N1
cGVyTm9kZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5l
cmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5n
ZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRl
bnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOworICAgIGVtaXRQdXRQcm9wZXJ0eShnZW5lcmF0b3Is
IGJhc2UuZ2V0KCksIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJv
ZmlsZVR5cGUoZm9yd2FyZFJlc3VsdC5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsK
ICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBmb3J3YXJkUmVzdWx0LmdldCgpKTsKIH0K
QEAgLTMyMDksMjMgKzMzMDgsMTUgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZSht
X2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3Qo
KSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7Ci0g
ICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICB0aGlzVmFsdWUgPSBnZW5l
cmF0b3IuZW5zdXJlVGhpcygpOwotICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5n
ZXQoKSwgbV9pZGVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9p
ZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZW1pdEdldFByb3BlcnR5VmFs
dWUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCks
IHRoaXNWYWx1ZSk7CisKICAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1v
ZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qs
IHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQsIG1fb3BlcmF0b3IsIE9wZXJhbmRU
eXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlwdG9y
KCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQ7Ci0gICAgaWYgKG1fYmFz
ZS0+aXNTdXBlck5vZGUoKSkKLSAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJh
c2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKLSAgICBl
bHNlCi0gICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lk
ZW50LCB1cGRhdGVkVmFsdWUpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXQgPSBlbWl0UHV0
UHJvcGVydHkoZ2VuZXJhdG9yLCBiYXNlLmdldCgpLCB1cGRhdGVkVmFsdWUsIHRoaXNWYWx1ZSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmV0LmdldCgpOwog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2hvcnRDaXJjdWl0UmVhZE1v
ZGlmeURvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ2OTgs
NiArNDc4OSwxNyBAQCB2b2lkIERlZmluZUZpZWxkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3IuZW1p
dENhbGxEZWZpbmVQcm9wZXJ0eShnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZS5nZXQoKSwgdmFsdWUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIEJ5dGVjb2RlR2VuZXJhdG9y
OjpQcm9wZXJ0eUNvbmZpZ3VyYWJsZSB8IEJ5dGVjb2RlR2VuZXJhdG9yOjpQcm9wZXJ0eVdyaXRh
YmxlIHwgQnl0ZWNvZGVHZW5lcmF0b3I6OlByb3BlcnR5RW51bWVyYWJsZSwgbV9wb3NpdGlvbik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6
UHJpdmF0ZU5hbWU6IHsKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KCptX2lkZW50KTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQ
cml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIp
OworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8ocG9zaXRpb24oKSwgcG9z
aXRpb24oKSwgcG9zaXRpb24oKSArIG1faWRlbnQtPmxlbmd0aCgpKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2
YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdERlZmluZVByaXZhdGVGaWVsZChnZW5lcmF0b3IudGhpc1Jl
Z2lzdGVyKCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICBjYXNlIERlZmluZUZpZWxkTm9kZTo6VHlwZTo6Q29tcHV0ZWROYW1lOiB7
CiAgICAgICAgIC8vIEZJWE1FOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIHB1YmxpYyBjbGFzcyBm
aWVsZHMKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5ODMzMApAQCAtNDcwOCw3ICs0ODEwLDcgQEAgdm9pZCBEZWZpbmVGaWVsZE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJDb21wdXRlZCBuYW1lcyBtdXN0
IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIAogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKHBvc2l0aW9uKCksIHBvc2l0aW9uKCksIHBvc2l0aW9uKCkgKyAx
KTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCB2YXIpOworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2
YXIpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHByaXZh
dGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByaXZhdGVOYW1lLmdldCgpLCB2YXIsIG1fcG9z
aXRpb24sIG1fcG9zaXRpb24gKyBtX2lkZW50LT5sZW5ndGgoKSk7CkBAIC00ODAwLDYgKzQ5MDIs
OCBAQCBSZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgIGdlbmVyYXRvci5lbWl0Q2FsbERlZmlu
ZVByb3BlcnR5KGNvbnN0cnVjdG9yLmdldCgpLCBwcm90b3R5cGVOYW1lUmVnaXN0ZXIuZ2V0KCks
IHByb3RvdHlwZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgMCwgbV9wb3NpdGlvbik7CiAKICAg
ICBpZiAobV9jbGFzc0VsZW1lbnRzKSB7CisgICAgICAgIG1fY2xhc3NFbGVtZW50cy0+ZW1pdERl
Y2xhcmVQcml2YXRlRmllbGROYW1lcyhnZW5lcmF0b3IsIGdlbmVyYXRvci5zY29wZVJlZ2lzdGVy
KCkpOworCiAgICAgICAgIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4gaW5zdGFuY2VGaWVsZExvY2F0
aW9uczsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWZpbmVDbGFzc0VsZW1lbnRzKG1fY2xhc3NF
bGVtZW50cywgY29uc3RydWN0b3IuZ2V0KCksIHByb3RvdHlwZS5nZXQoKSwgaW5zdGFuY2VGaWVs
ZExvY2F0aW9ucyk7CiAgICAgICAgIGlmICghaW5zdGFuY2VGaWVsZExvY2F0aW9ucy5pc0VtcHR5
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKaW5kZXggNzc5MWNhNjE5NGQ4ZWQ4N2QzZGRhNjQ3YmFhZmJmNWQzY2FjMmVmNi4uZGIyOTdi
OTdmYTU1NzM4N2EyODhjZGY0NDlmODM5M2Y3MjQzZmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNp
bmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJQdXRCeUlkRmxhZ3MuaCIK
ICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlWYWxGbGFncy5oIgog
I2luY2x1ZGUgIlJlZ0V4cFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKQEAgLTEyNjUsNiArMTI2NiwxOCBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9oYXNBbnlGb3JjZU9TUkV4aXRzIHsgZmFsc2UgfTsKIH07CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIEJ5dGVjb2RlPgorRUNNQU1vZGUgZWNtYU1vZGUoQnl0ZWNvZGUg
Ynl0ZWNvZGUpCit7CisgICAgcmV0dXJuIGJ5dGVjb2RlLm1fZWNtYU1vZGU7Cit9CisKK3RlbXBs
YXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUgZWNtYU1vZGU8T3BQdXRCeVZhbERpcmVjdD4o
T3BQdXRCeVZhbERpcmVjdCBieXRlY29kZSkKK3sKKyAgICByZXR1cm4gYnl0ZWNvZGUubV9mbGFn
cy5lY21hTW9kZSgpOworfQorCiBCYXNpY0Jsb2NrKiBCeXRlQ29kZVBhcnNlcjo6YWxsb2NhdGVU
YXJnZXRhYmxlQmxvY2soQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KQogewogICAgIEFTU0VS
VChieXRlY29kZUluZGV4KTsKQEAgLTgyMzYsNyArODI0OSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZVB1dEJ5VmFsKEJ5dGVjb2RlIGJ5dGVjb2RlLCBCeXRlY29kZUluZGV4IG9zckV4
aXRJbmRlCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGlsZWRBc1B1dEJ5SWQpCi0gICAg
ICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXIsIGlkZW50aWZpZXJOdW1iZXIs
IHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCwgb3NyRXhpdEluZGV4LCBieXRlY29kZS5t
X2VjbWFNb2RlKTsKKyAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllciwg
aWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0LCBvc3JFeGl0
SW5kZXgsIGVjbWFNb2RlKGJ5dGVjb2RlKSk7CiAgICAgfQogCiAgICAgaWYgKCFjb21waWxlZEFz
UHV0QnlJZCkgewpAQCAtODI0Nyw3ICs4MjYwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUK
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwogICAgICAgICBhZGRWYXJBcmdDaGlsZChu
dWxscHRyKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KICAgICAgICAgYWRk
VmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KLSAgICAgICAg
YWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIGlzRGlyZWN0ID8gUHV0QnlWYWxEaXJlY3QgOiBQdXRC
eVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhieXRlY29kZS5tX2VjbWFN
b2RlKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5
VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8o
ZWNtYU1vZGUoYnl0ZWNvZGUpKSk7CiAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIFB1dEJ5
VmFsIGFuZCBQdXRCeVZhbERpcmVjdCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgdGhleSBjbG9iYmVy
IGV4aXQgc3RhdGUsIHNpbmNlIEZpeHVwUGhhc2UgbWF5IG1ha2UgdGhlbSBnZW5lcmljLgogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApp
bmRleCBhMWFlM2UzYzlmY2UxNjg4M2EyODBjODE2OWU0ZmJiYjE2OWE3NjExLi43MzEwMWM3YjU5
ZmQ2ZmYzMmVkYTlhNmU2Njk5MzFmZDYwZDEyNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yOTgsNiArMjk4LDcgQEAgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IEkKIAogICAgIGNhc2Ugb3BfeWllbGQ6CiAgICAgY2FzZSBvcF9jcmVhdGVf
Z2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25tZW50OgorICAgIGNhc2Ugb3BfZ2V0X3ByaXZhdGVfbmFt
ZTogLy8gRklYTUU6IG9wX2dldF9wcml2YXRlX25hbWUgd2lsbCBuZWVkIERGRy9GVEwgc3VwcG9y
dCB0byBzaGlwIGNsYXNzIGZpZWxkcy4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTI3ODEpCiAgICAgY2FzZSBsbGludF9wcm9ncmFtX3Byb2xvZ3VlOgogICAgIGNh
c2UgbGxpbnRfZXZhbF9wcm9sb2d1ZToKICAgICBjYXNlIGxsaW50X21vZHVsZV9wcm9ncmFtX3By
b2xvZ3VlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAppbmRleCBkNmFiNWUyMTEwZTkyZDE5YTllODliMDFkM2UwY2Q3ZjBkOWJkYzdkLi44OGFi
ZTBlM2I4NjAzM2M1YWUzN2UyMTQzODVlN2EwMzMxYjI3MDQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMTQzODEsNyArMTQzODEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9y
aWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2Vu
KAogICAgICAgICBtX2ppdC5jb2RlQmxvY2soKSwgY29kZU9yaWdpbiwgY2FsbFNpdGUsIHVzZWRS
ZWdpc3RlcnMsIGlkZW50aWZpZXIsCiAgICAgICAgIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShi
YXNlR1BSKSwgdmFsdWVSZWdzLAotICAgICAgICBzY3JhdGNoR1BSLCBlY21hTW9kZSwgcHV0S2lu
ZCk7CisgICAgICAgIHNjcmF0Y2hHUFIsIGVjbWFNb2RlLCBwdXRLaW5kLCBQcml2YXRlRmllbGRB
Y2Nlc3NLaW5kOjpOb25lKTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGUx
ZjU4MWE4YTM2NTcwMTBjZjA4ZDFjMzNhYWJmOTdmZmY5NmJhNmYuLjk3NmEyMjlmZDMxZWQyYWZl
ZTA0MDE0NTY1NWMwZTA0ZDY1NGQyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQyMDcsNyArNDIwNyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb2RlQmxvY2soKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
YWxsU2l0ZUluZGV4LAogICAgICAgICAgICAgICAgICAgICBwYXJhbXMudW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwgaWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwKICAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwgR1BSSW5mbzo6cGF0
Y2hwb2ludFNjcmF0Y2hSZWdpc3RlciwgZWNtYU1vZGUsCi0gICAgICAgICAgICAgICAgICAgIG5v
ZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERpcmVjdCk7CisgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCA/IERpcmVjdCA6IE5vdERp
cmVjdCwgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZDo6Tm9uZSk7CiAKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3ItPmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OkxhYmVsIGRvbmUgPSBqaXQubGFiZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9nZW5lcmF0b3IvRFNMLnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVy
YXRvci9EU0wucmIKaW5kZXggOTRkZTM4Y2I3MTY3OGFkODZhYmFjNmI3YzYyODc5YzE2YjEwYzgz
MS4uZDk2NTg1YjEwNTc3OGU3ZDUwMTViMGI2YzdjNzVjY2NhMjA1OWYxNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRvci9EU0wucmIKQEAgLTE0MSw2ICsxNDEsNyBAQCBtb2R1bGUgRFNM
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogI2luY2x1
ZGUgIlB1dEJ5SWRGbGFncy5oIgorI2luY2x1ZGUgIlB1dEJ5VmFsRmxhZ3MuaCIKICNpbmNsdWRl
ICJUb1RoaXNTdGF0dXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SUNTdGF0cy5oCmluZGV4IDkwNDBkZjM4MjA3NjRlZGY4ZDUxNjExZjg2MGZjNGQ0MjY1NmMxNDku
Ljk2YzE5YTE3YmRjMmE3ZDEwZjE1ZjliY2EzOTAyMTYyMWM5OWRiODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC02Nyw2ICs2Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IG1hY3JvKE9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RCdWlsZExpc3QpIFwKICAgICBtYWNybyhP
cGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0QnVpbGRMaXN0KSBcCiAgICAgbWFjcm8oT3BlcmF0
aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdEJ1aWxkTGlzdCkgXAorICAgIG1hY3JvKE9wZXJhdGlv
blB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplKSBcCisgICAgbWFj
cm8oT3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUpIFwK
ICAgICBtYWNybyhQdXRCeUlkQWRkQWNjZXNzQ2FzZSkgXAogICAgIG1hY3JvKFB1dEJ5SWRSZXBs
YWNlV2l0aEp1bXApIFwKICAgICBtYWNybyhQdXRCeUlkU2VsZlBhdGNoKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKaW5kZXggMjY0ODU0YzY2NWVjZGZkYjBkOWNlMWU0YjA3ZjdlM2NiZGZi
YzI3MC4uNTE2MDgzMDc5ZmU4Mzk4MjcwOTgzMTQxNjcxNzljMzg0MWYyMWVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjkyLDYgKzI5Miw3IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX1NMT1dfT1AocHVzaF93aXRoX3Njb3Bl
KQogICAgICAgICBERUZJTkVfU0xPV19PUChjcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAg
ICAgICAgREVGSU5FX1NMT1dfT1AoZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgICAgIERFRklO
RV9TTE9XX09QKGdldF9wcml2YXRlX25hbWUpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9i
eV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9TTE9XX09QKHB1dF9ieV92YWxfd2l0aF90
aGlzKQogICAgICAgICBERUZJTkVfU0xPV19PUChyZXNvbHZlX3Njb3BlX2Zvcl9ob2lzdGluZ19m
dW5jX2RlY2xfaW5fZXZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDQwMGVlNjM0ZDMx
YjcxN2Q5OTdjMWJjMjg0YmMwOGJlMTMzOTQ5NzkuLjI3NTU3YjNiMDY3OGQ3OTQzNWZlOTU4ZGQ3
ODA1NzUxMGRjZWVkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDAxLDcgKzQwMSwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+CiAgICAg
ICAgIEp1bXBMaXN0IGVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbChPcCwgUGF0Y2hhYmxlSnVt
cCYgYmFkVHlwZSwgVHlwZWRBcnJheVR5cGUpOwogCi0gICAgICAgIC8vIElkZW50aWZpZXIgY2hl
Y2sgaGVscGVyIGZvciBQdXRCeVZhbC4KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3A+Cisg
ICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlKE9wKTsKKworICAgICAgICAvLyBEZXRlcm1pbmVzIHRo
ZSB0eXBlIG9mIHByaXZhdGUgZmllbGQgYWNjZXNzIGZvciBhIGJ5dGVjb2RlLgorICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KKyAgICAgICAgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBwcml2
YXRlRmllbGRBY2Nlc3NLaW5kKE9wKTsKKworICAgICAgICAvLyBJZGVudGlmaWVyIGNoZWNrIGhl
bHBlciBmb3IgR2V0QnlWYWwgYW5kIFB1dEJ5VmFsLgogICAgICAgICB2b2lkIGVtaXRCeVZhbElk
ZW50aWZpZXJDaGVjayhSZWdpc3RlcklEIGNlbGwsIFJlZ2lzdGVySUQgc2NyYXRjaCwgQ2FjaGVh
YmxlSWRlbnRpZmllciwgSnVtcExpc3QmIHNsb3dDYXNlcyk7CiAKICAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3A+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZUNhY2hlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCmluZGV4IDU0ODU4MzkwZWZiN2IzNmI0ZjhlOWVmOGZjZWNm
MThjMDllNDIwYjMuLjIzNjgzMDQ1ZjFmZDFmNmFhNDVlNjFkNjM4OWFlZjFmYzI4MjAxZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCkBAIC0xMzYsMTEgKzEzNiwxMSBAQCB2b2lkIEpJVEdldEJ5SWRXaXRoVGhpc0dl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYgaml0KQogSklUUHV0QnlJ
ZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcigKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywgQ2FjaGVhYmxlSWRlbnRpZmllciwKICAgICBKU1Zh
bHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIAotICAgIEVD
TUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQpCi0gICAgOiBKSVRCeUlkR2VuZXJhdG9y
KAotICAgICAgICBjb2RlQmxvY2ssIGNvZGVPcmlnaW4sIGNhbGxTaXRlLCBBY2Nlc3NUeXBlOjpQ
dXQsIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlKQotICAgICwgbV9lY21hTW9kZShlY21hTW9k
ZSkKLSAgICAsIG1fcHV0S2luZChwdXRLaW5kKQorICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRL
aW5kIHB1dEtpbmQsIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCkKKyAgICAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgY2Fs
bFNpdGUsIEFjY2Vzc1R5cGU6OlB1dCwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUpCisgICAg
ICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKKyAgICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkK
KyAgICAgICAgLCBtX3ByaXZhdGVGaWVsZEFjY2Vzc0tpbmQocHJpdmF0ZUZpZWxkQWNjZXNzS2lu
ZCkKIHsKICAgICBtX3N0dWJJbmZvLT51c2VkUmVnaXN0ZXJzLmNsZWFyKHNjcmF0Y2gpOwogfQpA
QCAtMTUyLDYgKzE1MiwxNCBAQCB2b2lkIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoTWFjcm9Bc3NlbWJsZXImIGppdCkKIAogVl9KSVRPcGVyYXRpb25fR1NzaUpKQyBKSVRQ
dXRCeUlkR2VuZXJhdG9yOjpzbG93UGF0aEZ1bmN0aW9uKCkKIHsKKyAgICBpZiAobV9wcml2YXRl
RmllbGRBY2Nlc3NLaW5kICE9IFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpIHsKKyAgICAg
ICAgQVNTRVJUKG1fcHV0S2luZCA9PSBEaXJlY3QpOworICAgICAgICBBU1NFUlQobV9lY21hTW9k
ZS5pc1N0cmljdCgpKTsKKyAgICAgICAgaWYgKG1fcHJpdmF0ZUZpZWxkQWNjZXNzS2luZCA9PSBQ
cml2YXRlRmllbGRBY2Nlc3NLaW5kOjpDcmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0
aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgICAgICByZXR1
cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgIH0K
KwogICAgIGlmIChtX2VjbWFNb2RlLmlzU3RyaWN0KCkpIHsKICAgICAgICAgaWYgKG1fcHV0S2lu
ZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0
cmljdE9wdGltaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJ
bmxpbmVDYWNoZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVDYWNoZUdlbmVyYXRvci5oCmluZGV4IDk3NmY3MWJiYWFjOTFkOTNlNjA3MDY3Nzk2YzZjNTI0
ZTA0OWQ1ZmQuLjczMjlkNmI3MzgxNGQ2YzRiYTU1MmE1ODkzZTcyYjAyMWU2YTUxMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9y
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAi
SklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJQdXRC
eVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiUHV0S2luZC5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyU2V0
LmgiCiAKQEAgLTEzMCwxMSArMTMxLDEyIEBAIGNsYXNzIEpJVFB1dEJ5SWRHZW5lcmF0b3IgOiBw
dWJsaWMgSklUQnlJZEdlbmVyYXRvciB7CiBwdWJsaWM6CiAgICAgSklUUHV0QnlJZEdlbmVyYXRv
cigpCiAgICAgICAgIDogbV9lY21hTW9kZShFQ01BTW9kZTo6c3RyaWN0KCkpCisgICAgICAgICwg
bV9wcml2YXRlRmllbGRBY2Nlc3NLaW5kKFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmUpCiAg
ICAgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKAogICAgICAgICBDb2RlQmxvY2sqLCBD
b2RlT3JpZ2luLCBDYWxsU2l0ZUluZGV4LCBjb25zdCBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVy
cywgQ2FjaGVhYmxlSWRlbnRpZmllciwgSlNWYWx1ZVJlZ3MgYmFzZSwKLSAgICAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWUsIEdQUlJlZyBzY3JhdGNoLCBFQ01BTW9kZSwgUHV0S2luZCk7CisgICAgICAg
IEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgRUNNQU1vZGUsIFB1dEtpbmQsIFBy
aXZhdGVGaWVsZEFjY2Vzc0tpbmQgcHJpdmF0ZUFjY2Vzcyk7CiAgICAgCiAgICAgdm9pZCBnZW5l
cmF0ZUZhc3RQYXRoKE1hY3JvQXNzZW1ibGVyJik7CiAgICAgCkBAIC0xNDMsNiArMTQ1LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBFQ01BTW9kZSBtX2VjbWFNb2RlOwogICAgIFB1dEtpbmQg
bV9wdXRLaW5kOworICAgIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQgbV9wcml2YXRlRmllbGRBY2Nl
c3NLaW5kOwogfTsKIAogY2xhc3MgSklURGVsQnlWYWxHZW5lcmF0b3IgOiBwdWJsaWMgSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaApp
bmRleCA5YjZjMDUyNDhiYTI5Mjk2Zjk5ZWQzNzZmYjk0ODI4ZmJjOTMzY2JmLi5kNTNlNjk3N2Qz
OWQ3NTllNjc0MTJmZDlhZDFiOWU2NzgyYjk3ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZXMuaApAQCAtNjg2LDYgKzY4NiwzNiBAQCBBTFdBWVNfSU5MSU5FIEJpbmFyeUFy
aXRoUHJvZmlsZSBKSVQ6OmNvcGllZEFyaXRoUHJvZmlsZShCaW5hcnlPcCBieXRlY29kZSkKICAg
ICByZXR1cm4gYXJpdGhQcm9maWxlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcD4KK0FMV0FZ
U19JTkxJTkUgRUNNQU1vZGUgSklUOjplY21hTW9kZShPcCBvcCkKK3sKKyAgICByZXR1cm4gb3Au
bV9lY21hTW9kZTsKK30KKwordGVtcGxhdGU8PgorQUxXQVlTX0lOTElORSBFQ01BTW9kZSBKSVQ6
OmVjbWFNb2RlPE9wUHV0QnlJZD4oT3BQdXRCeUlkIG9wKQoreworICAgIHJldHVybiBvcC5tX2Zs
YWdzLmVjbWFNb2RlKCk7Cit9CisKK3RlbXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgRUNNQU1vZGUg
SklUOjplY21hTW9kZTxPcFB1dEJ5VmFsRGlyZWN0PihPcFB1dEJ5VmFsRGlyZWN0IG9wKQorewor
ICAgIHJldHVybiBvcC5tX2ZsYWdzLmVjbWFNb2RlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IE9wPgorUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZhdGVGaWVsZEFjY2Vzc0tpbmQo
T3ApCit7CisgICAgcmV0dXJuIFByaXZhdGVGaWVsZEFjY2Vzc0tpbmQ6Ok5vbmU7Cit9CisKK3Rl
bXBsYXRlPD4KK0FMV0FZU19JTkxJTkUgUHJpdmF0ZUZpZWxkQWNjZXNzS2luZCBKSVQ6OnByaXZh
dGVGaWVsZEFjY2Vzc0tpbmQ8T3BQdXRCeVZhbERpcmVjdD4oT3BQdXRCeVZhbERpcmVjdCBvcCkK
K3sKKyAgICByZXR1cm4gb3AubV9mbGFncy5wcml2YXRlRmllbGRBY2Nlc3NLaW5kKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGQyOGU1NmE4NzFiMDViZWRl
NTkzZGM5YzRiMjc3Zjg5ZjRjYjhkY2MuLmJjM2NjYzgwMjM1ZDczOWNkMWFmNTI2OWMxZTZhYjE1
ZmVkNzQ4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtNjk3LDYgKzY5NywxMTcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICAgICAg
cmVwYXRjaFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIHN0cnVj
dHVyZSwgaWRlbnRpZmllciwgc2xvdCwgKnN0dWJJbmZvLCBEaXJlY3QpOwogfQogCit9IC8vIGV4
dGVybiAiQyIKKwordXNpbmcgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2sgPSBzdGQ6OmZ1bmN0aW9u
PHZvaWQoVk0mLCBDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqLCBQdXRQcm9wZXJ0eVNsb3QmLCBjb25z
dCBJZGVudGlmaWVyJik+OworQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBwdXRQcml2YXRlRmll
bGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSBiYXNlVmFsdWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
SlNWYWx1ZSB2YWx1ZSwgY29uc3QgUHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0g
UHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJv
bVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5h
bWUoKSk7CisKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKwor
ICAgIFB1dFByb3BlcnR5U2xvdCBwdXRTbG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+
cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZU9iamVjdC0+cHV0UHJpdmF0ZUZpZWxkKGdsb2Jh
bE9iamVjdCwgaWRlbnQsIHZhbHVlLCBwdXRTbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworCisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjayh2
bSwgY29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30KKworQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCBkZWZpbmVQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBiYXNlVmFs
dWUsIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciwgSlNWYWx1ZSB2YWx1ZSwgY29uc3Qg
UHV0UHJpdmF0ZUZpZWxkQ2FsbGJhY2smIGNhbGxiYWNrID0gUHV0UHJpdmF0ZUZpZWxkQ2FsbGJh
Y2soKSkKK3sKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51
aWQoKSk7CisgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CisKKyAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgIFN0cnVjdHVyZSogb2xkU3RydWN0
dXJlID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKKworICAgIFB1dFByb3BlcnR5U2xvdCBw
dXRTbG90KGJhc2VPYmplY3QsIHRydWUsIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7Cisg
ICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgaWRlbnQsIHZh
bHVlLCBwdXRTbG90KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
CisgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICBjYWxsYmFjayh2bSwgY29kZUJsb2NrLCBvbGRT
dHJ1Y3R1cmUsIHB1dFNsb3QsIGlkZW50KTsKK30KKworZXh0ZXJuICJDIiB7CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJh
d0NhY2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKwor
ICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6
OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBkZWZpbmVQcml2YXRl
RmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIs
IHZhbHVlKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQ
cml2YXRlRmllbGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlm
aWVyKQoreworICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKworICAgIENhY2hlYWJsZUlkZW50
aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRz
KHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0
YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBhc09iamVjdChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKKworICAg
IGRlZmluZVByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmpl
Y3QsIGlkZW50aWZpZXIsIHZhbHVlLCBbPV0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25Q
dXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9iamVjdC0+
Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3QpKTsKKwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3RhdGljX2Nh
c3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKKworICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZ0J5KHZtLCBjb2RlQmxvY2ssIG9sZFN0cnVjdHVyZSwgaWRl
bnRpZmllcikpCisgICAgICAgICAgICByZXBhdGNoUHV0QnlJRChnbG9iYWxPYmplY3QsIGNvZGVC
bG9jaywgYmFzZU9iamVjdCwgb2xkU3RydWN0dXJlLCBpZGVudGlmaWVyLCBwdXRTbG90LCAqc3R1
YkluZm8sIERpcmVjdFByaXZhdGVGaWVsZENyZWF0ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxkU3RyaWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90IHJhd0Nh
Y2hlYWJsZUlkZW50aWZpZXIpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKKworICAg
IENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IENhY2hlYWJsZUlkZW50aWZpZXI6OmNy
ZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50aWZpZXIpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisKKyAgICBwdXRQcml2YXRlRmllbGQo
dm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFsdWUsIGlkZW50aWZpZXIsIHZhbHVl
KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRQdXRQcml2YXRlRmll
bGRTdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIHVpbnRwdHJfdCByYXdDYWNoZWFibGVJZGVudGlmaWVyKQorewor
ICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNM
QVJFX0NBTExfRlJBTUUodm0pOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CisKKyAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNo
ZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVy
KTsKKyAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihz
dHViSW5mby0+YWNjZXNzVHlwZSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisKKyAgICBwdXRQcml2YXRlRmllbGQodm0sIGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgWyZd
KFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAg
ICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxk
U3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90
LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CisKKyAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NU
eXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nl
c3NUeXBlKSk7CisKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmdCeSh2bSwg
Y29kZUJsb2NrLCBvbGRTdHJ1Y3R1cmUsIGlkZW50aWZpZXIpKQorICAgICAgICAgICAgcmVwYXRj
aFB1dEJ5SUQoZ2xvYmFsT2JqZWN0LCBjb2RlQmxvY2ssIGJhc2VPYmplY3QsIG9sZFN0cnVjdHVy
ZSwgaWRlbnRpZmllciwgcHV0U2xvdCwgKnN0dWJJbmZvLCBEaXJlY3RQcml2YXRlRmllbGRQdXQp
OworICAgIH0pOworfQorCiBzdGF0aWMgdm9pZCBwdXRCeVZhbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQsIEpTVmFsdWUg
dmFsdWUsIEJ5VmFsSW5mbyogYnlWYWxJbmZvLCBFQ01BTW9kZSBlY21hTW9kZSkKIHsKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCmluZGV4IGJmMzViYmY5ZjNiZWZkMDQ5MjRmYTJmMTFiMmE0ZDkwNjk0NDQ3
ZGQuLjRjMjIwNTMwYWI0ZGU1YjI2ZDdkOWFkM2QzYjgyZTNiNGRiOTdkOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xODgsNiArMTg4LDEwIEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmVTdHViCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZE5vblN0cmljdE9wdGltaXplKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1
aW50cHRyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkRGlyZWN0U3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgdWludHB0cl90KSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0cmljdE9wdGltaXpl
KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0ZUZpZWxk
U3RyaWN0KEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCB1aW50cHRyX3QpIFdU
Rl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkUHV0UHJpdmF0
ZUZpZWxkU3RyaWN0T3B0aW1pemUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IHVpbnRwdHJfdCkgV1RGX0lOVEVSTkFMOwogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxPcHRpbWl6ZShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShK
U0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEJ5VmFsSW5mbyosIEVDTUFNb2RlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IGVhNzMxYzMwMzk4
MTFjMDI2Yzg1NTk5Y2E2MDk2YjY4MjZmMzg2YzIuLjg2OGExZDEwNTkwOWQwMTRlNTg3NjQzN2Qz
MjZhM2QyNDlkZGEzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgSklUUHV0QnlJZEdlbmVyYXRvciBK
SVQ6OmVtaXRQdXRCeVZhbFdpdGhDYWNoZWRJZChPcCBieXRlY29kZSwgUHV0S2luZCBwdXRLaW5k
LAogCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBD
b2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZUluZGV4
KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLCBwcm9wZXJ0eU5hbWUs
Ci0gICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwg
Ynl0ZWNvZGUubV9lY21hTW9kZSwgcHV0S2luZCk7CisgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1Qw
KSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgZWNtYU1vZGUoYnl0ZWNvZGUpLCBwdXRLaW5k
LCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAgZ2VuLmdlbmVyYXRlRmFz
dFBhdGgoKnRoaXMpOwogICAgIC8vIElDIGNhbiB3cml0ZSBuZXcgU3RydWN0dXJlIHdpdGhvdXQg
d3JpdGUtYmFycmllciBpZiBhIGJhc2UgaXMgY2VsbC4KICAgICAvLyBGSVhNRTogVXNlIFVuY29u
ZGl0aW9uYWxXcml0ZUJhcnJpZXIgaW4gQmFzZWxpbmUgZWZmZWN0aXZlbHkgdG8gcmVkdWNlIGNv
ZGUgc2l6ZS4KQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X3ZhbChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8UwogICAg
ICAgICBiYXNlID0gYnl0ZWNvZGUubV9iYXNlOwogICAgICAgICBwcm9wZXJ0eSA9IGJ5dGVjb2Rl
Lm1fcHJvcGVydHk7CiAgICAgICAgIHZhbHVlID0gYnl0ZWNvZGUubV92YWx1ZTsKLSAgICAgICAg
ZWNtYU1vZGUgPSBieXRlY29kZS5tX2VjbWFNb2RlOworICAgICAgICBlY21hTW9kZSA9IEpJVDo6
ZWNtYU1vZGUoYnl0ZWNvZGUpOwogICAgIH07CiAKICAgICBpZiAoaXNEaXJlY3QpCkBAIC02NTgs
OCArNjU4LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAg
ICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVJbmRleCksIENhbGxTaXRlSW5k
ZXgobV9ieXRlY29kZUluZGV4KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAogICAgICAgICBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tSWRlbnRpZmllck93
bmVkQnlDb2RlQmxvY2sobV9jb2RlQmxvY2ssICppZGVudCksCi0gICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgYnl0ZWNvZGUubV9mbGFncy5lY21h
TW9kZSgpLAotICAgICAgICBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICBK
U1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxKSwgcmVnVDIsIGVjbWFNb2RlKGJ5
dGVjb2RlKSwKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0LCBwcml2YXRlRmll
bGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgo
KnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkBAIC0xMzE3LDcg
KzEzMTcsNyBAQCBKSVRQdXRCeUlkR2VuZXJhdG9yIEpJVDo6ZW1pdFB1dEJ5VmFsV2l0aENhY2hl
ZElkKE9wIGJ5dGVjb2RlLCBQdXRLaW5kIHB1dEtpbmQsCiAKICAgICBKSVRQdXRCeUlkR2VuZXJh
dG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZUluZGV4
KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlSW5kZXgpLCBSZWdpc3RlclNldDo6c3R1YlVuYXZh
aWxhYmxlUmVnaXN0ZXJzKCksIHByb3BlcnR5TmFtZSwKLSAgICAgICAgSlNWYWx1ZVJlZ3M6OnBh
eWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDMsIHJlZ1QyKSwgcmVnVDEsIGJ5dGVj
b2RlLm1fZWNtYU1vZGUsIHB1dEtpbmQpOworICAgICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9u
bHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdUMSwgZWNtYU1vZGUoYnl0
ZWNvZGUpLCBwdXRLaW5kLCBwcml2YXRlRmllbGRBY2Nlc3NLaW5kKGJ5dGVjb2RlKSk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGRvbmVDYXNlcy5hcHBlbmQoanVtcCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKaW5kZXggZmMyZTQ0ZDc5MmFhZjA0MjhmMjMwYWVmZGY5NjY0ODNmNGVkOWI4
Zi4uYzA0N2QyYjEzOWU2YTJiNWFhZDUyZjM0ZWY3NThkZjk0MzBhYWViNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBA
IC00NTUsNyArNDU1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwoY29uc3Qg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFMKICAgICAgICAgYmFzZSA9
IGJ5dGVjb2RlLm1fYmFzZTsKICAgICAgICAgcHJvcGVydHkgPSBieXRlY29kZS5tX3Byb3BlcnR5
OwogICAgICAgICB2YWx1ZSA9IGJ5dGVjb2RlLm1fdmFsdWU7Ci0gICAgICAgIGVjbWFNb2RlID0g
Ynl0ZWNvZGUubV9lY21hTW9kZTsKKyAgICAgICAgZWNtYU1vZGUgPSBKSVQ6OmVjbWFNb2RlKGJ5
dGVjb2RlKTsKICAgICB9OwogCiAgICAgaWYgKGlzRGlyZWN0KQpAQCAtNjY0LDcgKzY2NCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlSW5k
ZXgpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVJbmRleCksIFJlZ2lzdGVyU2V0OjpzdHViVW5h
dmFpbGFibGVSZWdpc3RlcnMoKSwKICAgICAgICAgQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRl
RnJvbUlkZW50aWZpZXJPd25lZEJ5Q29kZUJsb2NrKG1fY29kZUJsb2NrLCAqaWRlbnQpLAogICAg
ICAgICBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywg
cmVnVDIpLAotICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFncy5lY21hTW9kZSgpLCBkaXJl
Y3QgPyBEaXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICByZWdUMSwgYnl0ZWNvZGUubV9mbGFn
cy5lY21hTW9kZSgpLCBkaXJlY3QgPyBEaXJlY3QgOiBOb3REaXJlY3QsIFByaXZhdGVGaWVsZEFj
Y2Vzc0tpbmQ6Ok5vbmUpOwogICAgIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsK
ICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKaW5kZXggYjE3ZWM3MjRiNjFlYjExMGI0MjI3ODMwZDJhMmQwZTJiMjY4
ODJlYy4uNDRiYmFmYTBmYjk1ODc5Yjg4MzFhYmQ2YTM1MDkzMDRhYWQ4MDYxZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC01MjAsNiArNTIwLDEwIEBAIHN0YXRpYyBh
dXRvIGFwcHJvcHJpYXRlR2VuZXJpY1B1dEJ5SWRGdW5jdGlvbihjb25zdCBQdXRQcm9wZXJ0eVNs
b3QgJnNsb3QsIFB1dEtpCiAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpIHsKICAgICAgICAg
aWYgKHB1dEtpbmQgPT0gRGlyZWN0KQogICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5
SWREaXJlY3RTdHJpY3Q7CisgICAgICAgIGlmIChwdXRLaW5kID09IERpcmVjdFByaXZhdGVGaWVs
ZENyZWF0ZSkKKyAgICAgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0
ZUZpZWxkU3RyaWN0OworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRlRmllbGRQ
dXQpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZFN0
cmljdDsKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvblB1dEJ5SWRTdHJpY3Q7CiAgICAgfQogICAg
IGlmIChwdXRLaW5kID09IERpcmVjdCkKQEAgLTUzMiw2ICs1MzYsMTAgQEAgc3RhdGljIGF1dG8g
YXBwcm9wcmlhdGVPcHRpbWl6aW5nUHV0QnlJZEZ1bmN0aW9uKGNvbnN0IFB1dFByb3BlcnR5U2xv
dCAmc2xvdCwgUHUKICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBpZiAo
cHV0S2luZCA9PSBEaXJlY3QpCiAgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERp
cmVjdFN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQcml2YXRl
RmllbGRDcmVhdGUpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZERlZmluZVBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplOworICAgICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3RQ
cml2YXRlRmllbGRQdXQpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJZFB1dFBy
aXZhdGVGaWVsZFN0cmljdE9wdGltaXplOwogICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdE9wdGltaXplOwogICAgIH0KICAgICBpZiAocHV0S2luZCA9PSBEaXJlY3QpCkBAIC02
MjUsNiArNjMzLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UG9seVByb3RvQWNjZXNzQ2hhaW4+IHByb3RvdHlwZUFjY2Vzc0NoYWlu
OwogICAgICAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGNvbmRpdGlvblNl
dDsKICAgICAgICAgICAgICAgICBpZiAocHV0S2luZCA9PSBOb3REaXJlY3QpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHB1dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkUHV0ICYmIHB1
dEtpbmQgIT0gRGlyZWN0UHJpdmF0ZUZpZWxkQ3JlYXRlKTsKICAgICAgICAgICAgICAgICAgICAg
YXV0byBjYWNoZVN0YXR1cyA9IHByZXBhcmVDaGFpbkZvckNhY2hpbmcoZ2xvYmFsT2JqZWN0LCBi
YXNlQ2VsbCwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXMp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTY0Miw2
ICs2NTEsMTMgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlUHV0QnlJRChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb2RlQmxvY2sKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGlmIChwdXRLaW5kID09IERp
cmVjdFByaXZhdGVGaWVsZENyZWF0ZSkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQuaXNQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uU2V0ID0g
Z2VuZXJhdGVDb25kaXRpb25zRm9yUHJvcGVydHlNaXNzKHZtLCBjb2RlQmxvY2ssIGdsb2JhbE9i
amVjdCwgbmV3U3RydWN0dXJlLCBpZGVudC5pbXBsKCkpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvbmRpdGlvblNldC5pc1ZhbGlkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gR2l2ZVVwT25DYWNoZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBu
ZXdDYXNlID0gQWNjZXNzQ2FzZTo6Y3JlYXRlVHJhbnNpdGlvbih2bSwgY29kZUJsb2NrLCBwcm9w
ZXJ0eU5hbWUsIG9mZnNldCwgb2xkU3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNl
dCwgV1RGTW92ZShwcm90b3R5cGVBY2Nlc3NDaGFpbikpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVDdXN0b20oKSB8fCBzbG90LmlzQ2FjaGVhYmxl
U2V0dGVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMWZjMjMyMjg5MTFjODdlYmFlYWFiNDBjNzc0Yzcx
NmJjYmY1YzJkNS4uYzUyM2U4YTYwMDZkZGM1M2QyNTk5YTRkMjRjNmU5NGI1NGRjYWRiZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxlLmgi
CiAjaW5jbHVkZSAiUHV0QnlJZEZsYWdzLmgiCiAjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJQdXRCeVZhbEZsYWdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Q2hpY2tlbi5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAxZDA2
MTVjNzAyZjYyMWEzMTMyNmFkZDEyYjY1NTNlZjQwZjlkNjNjLi43YTAwMzI4ZDY0NzY5YTUyMzc4
ODI4MTQyYWUyMjM5ZDY0NGFlZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTEwNzAsNiArMTA3MCw2NCBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCkKICAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQo
Z2V0QnlWYWwodm0sIGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLCBiYXNlVmFsdWUsIHN1YnNjcmlw
dCwgYnl0ZWNvZGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9w
cml2YXRlX25hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKworICAgIGF1dG8gYnl0ZWNvZGUg
PSBwYy0+YXM8T3BHZXRQcml2YXRlTmFtZT4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGdl
dE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX2Jhc2UpOworICAgIEpTVmFsdWUgc3Vic2Ny
aXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOworICAgIEFT
U0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVj
dENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIEFTU0VSVChwcm9wZXJ0eS5pc1By
aXZhdGVOYW1lKCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBhc09iamVjdChiYXNl
VmFsdWUpLT5nZXRQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NF
U1NfU0xPVyAmJiBzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSB7CisgICAg
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKKyAgICAg
ICAgeworICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X3N0cnVjdHVyZUlEOworICAgICAgICAgICAgaWYgKG9sZFN0cnVjdHVyZUlEKSB7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlKiBhID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9s
ZFN0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGIgPSBiYXNlVmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisKKyAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJl
OjpzaG91bGRDb252ZXJ0VG9Qb2x5UHJvdG8oYSwgYikpIHsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKGEtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS5nZXQoKSA9
PSBiLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50KCkuZ2V0KCkpOworICAg
ICAgICAgICAgICAgICAgICBhLT5yYXJlRGF0YSgpLT5zaGFyZWRQb2x5UHJvdG9XYXRjaHBvaW50
KCktPmludmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIkRldGVjdGVkIHBvbHkgcHJvdG8g
b3Bwb3J0dW5pdHkuIikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7Cisg
ICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSkgeworICAgICAgICAgICAgLy8gU3RhcnQgb3V0IGJ5
IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgorICAgICAgICAgICAgbWV0YWRhdGEubV9zdHJ1
Y3R1cmVJRCA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX29mZnNldCA9IDA7CisKKyAgICAg
ICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9z
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRh
dGEubV9vZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNldCgpOworCisgICAgICAgICAgICAgICAgICAg
IC8vICBVcGRhdGUgdGhlIGNhY2hlZCBwcml2YXRlIHN5bWJvbAorICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3Byb3BlcnR5LnNldCh2bSwgY29kZUJsb2NrLCBzdWJzY3JpcHQuYXNDZWxs
KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihjb2RlQmxvY2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0
eSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKIHsK
ICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTExMSwyMCArMTE2OSw0MiBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF9kaXJlY3QpCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKICAgICBSRUxFQVNFX0FT
U0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CiAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOwotICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9l
Y21hTW9kZS5pc1N0cmljdCgpOworICAgIGJvb2wgaXNTdHJpY3RNb2RlID0gYnl0ZWNvZGUubV9m
bGFncy5lY21hTW9kZSgpLmlzU3RyaWN0KCk7CisgICAgYm9vbCBpc1ByaXZhdGVGaWVsZEFjY2Vz
cyA9IGJ5dGVjb2RlLm1fZmxhZ3MuaXNQcml2YXRlRmllbGRBY2Nlc3MoKTsKICAgICBpZiAoT3B0
aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gc3Vic2NyaXB0LnRyeUdldEFzVWludDMySW5kZXgoKSkg
eworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNzKTsKICAgICAgICAgYmFzZU9i
amVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCAqaW5kZXgsIHZhbHVlLCAwLCBpc1N0
cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93IDogUHV0RGlyZWN0SW5kZXhTaG91
bGROb3RUaHJvdyk7CiAgICAgICAgIExMSU5UX0VORCgpOwogICAgIH0KIAorICAgIGlmIChzdWJz
Y3JpcHQuaXNEb3VibGUoKSkgeworICAgICAgICBBU1NFUlQoIWlzUHJpdmF0ZUZpZWxkQWNjZXNz
KTsKKyAgICAgICAgZG91YmxlIHN1YnNjcmlwdEFzRG91YmxlID0gc3Vic2NyaXB0LmFzRG91Ymxl
KCk7CisgICAgICAgIHVpbnQzMl90IHN1YnNjcmlwdEFzVUludDMyID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KHN1YnNjcmlwdEFzRG91YmxlKTsKKyAgICAgICAgaWYgKHN1YnNjcmlwdEFzRG91Ymxl
ID09IHN1YnNjcmlwdEFzVUludDMyICYmIGlzSW5kZXgoc3Vic2NyaXB0QXNVSW50MzIpKSB7Cisg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIHN1YnNj
cmlwdEFzVUludDMyLCB2YWx1ZSwgMCwgaXNTdHJpY3RNb2RlID8gUHV0RGlyZWN0SW5kZXhTaG91
bGRUaHJvdyA6IFB1dERpcmVjdEluZGV4U2hvdWxkTm90VGhyb3cpOworICAgICAgICAgICAgTExJ
TlRfRU5EKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBEb24ndCBwdXQgdG8gYW4gb2Jq
ZWN0IGlmIHRvU3RyaW5nIHRocmV3IGFuIGV4Y2VwdGlvbi4KICAgICBhdXRvIHByb3BlcnR5ID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoVU5MSUtFTFko
dGhyb3dTY29wZS5leGNlcHRpb24oKSkpCiAgICAgICAgIExMSU5UX0VORCgpOwogCisgICAgQVNT
RVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSA9PSBpc1ByaXZhdGVGaWVsZEFjY2Vzcyk7CiAg
ICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHkpKQog
ICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4LnZh
bHVlKCksIHZhbHVlLCAwLCBpc1N0cmljdE1vZGUgPyBQdXREaXJlY3RJbmRleFNob3VsZFRocm93
IDogUHV0RGlyZWN0SW5kZXhTaG91bGROb3RUaHJvdyk7CiAgICAgZWxzZSB7CisgICAgICAgIGlm
IChpc1ByaXZhdGVGaWVsZEFjY2VzcykgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGlmIChieXRlY29kZS5t
X2ZsYWdzLmlzUHJpdmF0ZUZpZWxkQWRkKCkpCisgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+
ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRQcml2YXRl
RmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgICAgICAgICAg
TExJTlRfRU5EKCk7ICAgIAorICAgICAgICB9CisKICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2RlKTsKICAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpw
dXREaXJlY3RXaXRoUmVpZnkodm0sIGdsb2JhbE9iamVjdCwgYmFzZU9iamVjdCwgcHJvcGVydHks
IHZhbHVlLCBzbG90KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCmluZGV4IDhhZGVlMTZmYjVjOTkwMGE3YmIyOGY0NzAwNzQ2ZDc0YzJmYmY0
N2MuLjlhNzVmNjVjZWZhZjc5ZTUyMDk4ZTQ5NmRjMWQwNDA2YjIyMjZmMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC03Miw2ICs3Miw3IEBA
IExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXgg
NTdlMzk4MmI4MzllYWY5ZWE5OGNmNDgyOTBkNjE0MjMyMDQ0YTVhNi4uNmNiYzRmMGZiNjdmYmFk
NDlhY2ViNTc0NGM4NDRhNmIyZDEyMGRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTE1OTcsNiAr
MTU5NywyOSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWwsIE9wR2V0QnlWYWws
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZAogCiBlbmQpCiAKK2xsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X3ByaXZhdGVfbmFtZSwgT3BHZXRQcml2YXRlTmFtZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCisgICAgbWV0YWRhdGEodDUsIHQw
KQorCisgICAgIyBTbG93IHBhdGggaWYgdGhlIHByaXZhdGUgZmllbGQgaXMgc3RhbGUKKyAgICBn
ZXQobV9wcm9wZXJ0eSwgdDApCisgICAgbG9hZHAgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6
Om1fcHJvcGVydHlbdDVdLCB0MQorICAgIGJwbmVxIHQxLCB0MCwgLm9wR2V0UHJpdmF0ZU5hbWVT
bG93CisKKyAgICBnZXQobV9iYXNlLCB0MCkKKyAgICBsb2FkaSBPcEdldFByaXZhdGVOYW1lOjpN
ZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0NV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BHZXRQcml2YXRlTmFtZVNsb3cpCisg
ICAgbG9hZGkgT3BHZXRQcml2YXRlTmFtZTo6TWV0YWRhdGE6Om1fb2Zmc2V0W3Q1XSwgdDIKKyAg
ICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDNdLCB0MSwgLm9wR2V0UHJpdmF0ZU5hbWVT
bG93CisKKyAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQyLCB0MywgdDAsIHQxKQor
ICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUsIHQ1LCB0MCwgdDEp
CisgICAgcmV0dXJuKHQwLCB0MSkKKworLm9wR2V0UHJpdmF0ZU5hbWVTbG93OgorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9wcml2YXRlX25hbWUpCisgICAgZGlzcGF0Y2go
KQorZW5kKQorCiAKIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBv
c3JFeGl0UG9pbnQpCiAgICAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF8lb3Bjb2RlTmFtZSUsIG9w
Y29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDYwOTBjYjc1M2M5OTE0NmE5NTIwMGIxMTRhMmRkOWZmYzc0ZTUzZmUu
LjNlMTkzZGJiYTc5ZTBlZDVjYWExMWYyMDU3MWFkMTU1YTExOTg3ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0xNjYzLDYgKzE2NjMsMjkgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKIAogZW5kKQogCits
bGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9wcml2YXRlX25hbWUsIE9wR2V0UHJpdmF0ZU5hbWUs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQorICAgIG1ldGFk
YXRhKHQyLCB0MCkKKworICAgICMgU2xvdyBwYXRoIGlmIHRoZSBwcml2YXRlIGZpZWxkIGlzIHN0
YWxlCisgICAgZ2V0KG1fcHJvcGVydHksIHQwKQorICAgIGxvYWRwIE9wR2V0UHJpdmF0ZU5hbWU6
Ok1ldGFkYXRhOjptX3Byb3BlcnR5W3QyXSwgdDEKKyAgICBicG5lcSB0MSwgdDAsIC5vcEdldFBy
aXZhdGVOYW1lU2xvdworCisgICAgZ2V0KG1fYmFzZSwgdDApCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRQcml2YXRlTmFtZVNsb3cpCisgICAgbG9h
ZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwgdDEKKyAgICBsb2FkaSBPcEdldFByaXZhdGVO
YW1lOjpNZXRhZGF0YTo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQwCisgICAgYmluZXEgdDAsIHQxLCAu
b3BHZXRQcml2YXRlTmFtZVNsb3cKKworICAgIGxvYWRpIE9wR2V0UHJpdmF0ZU5hbWU6Ok1ldGFk
YXRhOjptX29mZnNldFt0Ml0sIHQxCisgICAgbG9hZFByb3BlcnR5QXRWYXJpYWJsZU9mZnNldCh0
MSwgdDMsIHQwKQorICAgIHZhbHVlUHJvZmlsZShPcEdldFByaXZhdGVOYW1lLCBtX3Byb2ZpbGUs
IHQyLCB0MCkKKyAgICByZXR1cm4odDApCisKKy5vcEdldFByaXZhdGVOYW1lU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfcHJpdmF0ZV9uYW1lKQorICAgIGRpc3Bh
dGNoKCkKK2VuZCkKIAogbWFjcm8gcHV0QnlWYWxPcChvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3Qs
IG9zckV4aXRQb2ludCkKICAgICBsbGludE9wV2l0aE1ldGFkYXRhKG9wXyVvcGNvZGVOYW1lJSwg
b3Bjb2RlU3RydWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVy
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNjg1ZGIw
MDBmMDA4YWE4YjU0ZWRiOGYwMWIyOGRjMDk0MjcyY2FjNS4uZmYwNzUzYTdiMjMwNmIyYjUyNjcx
ODliMmUyZmZmOTZkMWZjNmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKQEAgLTI3MCwxMiArMjcwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciogcHJvcGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQorICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBEb3RU
eXBlIHR5cGUsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQogICAgIHsKICAgICAgICAgaWYg
KGJhc2UtPmlzU3VwZXJOb2RlKCkpCiAgICAgICAgICAgICB1c2VzU3VwZXJQcm9wZXJ0eSgpOwog
ICAgICAgICAKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFy
ZW5hKSBEb3RBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CisgICAgICAg
IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRG90QWNjZXNzb3JO
b2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHksIHR5cGUpOwogICAgICAgICBzZXRFeGNlcHRp
b25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KQEAgLTY1MSw2ICs2NTEsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbm9k
ZS0+aXNBc3NpZ25tZW50TG9jYXRpb24oKTsKICAgICB9CiAKKyAgICBib29sIGlzUHJpdmF0ZUxv
Y2F0aW9uKGNvbnN0IEV4cHJlc3Npb24mIG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4gbm9k
ZS0+aXNQcml2YXRlTG9jYXRpb24oKTsKKyAgICB9CisKICAgICBib29sIGlzT2JqZWN0TGl0ZXJh
bChjb25zdCBFeHByZXNzaW9uJiBub2RlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5vZGUtPmlz
T2JqZWN0TGl0ZXJhbCgpOwpAQCAtMTQzOCwxMiArMTQ0MywxMiBAQCBFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZSA9IG51bGxwdHI7
CiAgICAgaWYgKCFwcmV2aW91c0Jhc2VXYXNTdXBlciAmJiAoZG90LT5pZGVudGlmaWVyKCkgPT0g
bV92bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpIHx8IGRv
dC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2Fs
bFByaXZhdGVOYW1lKCkpKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmll
cigpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hpbGRE
ZXB0aCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRvdC0+
dHlwZSgpLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGNhbGxPckFwcGx5Q2hp
bGREZXB0aCk7CiAgICAgZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyICYmIChkb3QtPmlk
ZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVi
bGljTmFtZSgpIHx8IGRvdC0+aWRlbnRpZmllcigpID09IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuYXBwbHlQcml2YXRlTmFtZSgpKSkgewogICAgICAgICAvLyBGSVhNRTogVGhp
cyBjaGVjayBpcyBvbmx5IG5lZWRlZCBiZWNhdXNlIHdlIGhhdmVuJ3QgdGF1Z2h0IHRoZSBieXRl
Y29kZSBnZW5lcmF0b3IgdG8gaW5saW5lCiAgICAgICAgIC8vIFJlZmxlY3QuYXBwbHkgeWV0LiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY2OC4KICAgICAg
ICAgaWYgKCFkb3QtPmJhc2UoKS0+aXNSZXNvbHZlTm9kZSgpIHx8IHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlKj4oZG90LT5iYXNlKCkpLT5pZGVudGlmaWVyKCkgIT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5SZWZsZWN0KQotICAgICAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkgQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVy
KCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgY2FsbE9yQXBwbHlDaGlsZERl
cHRoKTsKKyAgICAgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBk
b3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kLCBjYWxsT3JBcHBs
eUNoaWxkRGVwdGgpOwogICAgIH0gZWxzZSBpZiAoIXByZXZpb3VzQmFzZVdhc1N1cGVyIAogICAg
ICAgICAmJiBkb3QtPmlkZW50aWZpZXIoKSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmhhc093blBy
b3BlcnR5CiAgICAgICAgICYmIGFyZ3MtPm1fbGlzdE5vZGUKQEAgLTE0NTUsMTAgKzE0NjAsMTAg
QEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24KICAgICAgICAgLy8gPHJlc29sdmVOb2RlfHRoaXNO
b2RlPi5oYXNPd25Qcm9wZXJ0eSg8cmVzb2x2ZU5vZGU+KQogICAgICAgICAvLyBpLmU6CiAgICAg
ICAgIC8vIG8uaGFzT3duUHJvcGVydHkocCkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9wYXJzZXJB
cmVuYSkgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVu
ZCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIEhhc093blByb3BlcnR5RnVu
Y3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBkb3QtPnR5cGUoKSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKICAgICB9
CiAgICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CisgICAgICAgIG5vZGUgPSBuZXcg
KG1fcGFyc2VyQXJlbmEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGFyZ3MsIGRpdm90LCBkaXZvdFN0YXJ0
LCBkaXZvdEVuZCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgp
LCBkb3QtPmRpdm90RW5kKCkub2Zmc2V0KTsKICAgICByZXR1cm4gbm9kZTsKIH0KQEAgLTE1OTks
NyArMTYwNCw3IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByCiAgICAgRG90QWNjZXNzb3JOb2Rl
KiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihsb2MpOwogCiAgICAgaWYgKG9w
ID09IE9wZXJhdG9yOjpFcXVhbCkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkg
QXNzaWduRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBl
eHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgc3RhcnQsIGVuZCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIGV4cHIsIGV4cHJIYXNB
c3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBzdGFydCwgZW5kKTsKIAogICAgIGlmIChvcCA9PSBP
cGVyYXRvcjo6Q29hbGVzY2VFcSB8fCBvcCA9PSBPcGVyYXRvcjo6T3JFcSB8fCBvcCA9PSBPcGVy
YXRvcjo6QW5kRXEpIHsKICAgICAgICAgYXV0byogbm9kZSA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
U2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIHN0YXJ0
LCBlbmQpOwpAQCAtMTYwNyw3ICsxNjEyLDcgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHIKICAg
ICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUg
PSBuZXcgKG1fcGFyc2VyQXJlbmEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRp
dm90LCBzdGFydCwgZW5kKTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9w
YXJzZXJBcmVuYSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgZG90LT50eXBlKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMs
IGRpdm90LCBzdGFydCwgZW5kKTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3Qt
PmRpdm90KCksIGRvdC0+ZGl2b3RFbmQoKS5vZmZzZXQpOwogICAgIHJldHVybiBub2RlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA5MTcxNzg5NmU0NDQ4NWJl
Yjc5NDA3MDgwYmUyNmY5YjMzOThhOWVkLi4zNjQ4YTQ0ODQzYjcyY2U5ODUxNzE3NTMwZmY1MDZl
YzZhOGI4MTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTQ1
LDEwICs5NDUsMTEgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxMQ2hhcj46OnAKICAgICAgICAgICAgIHJldHVy
biBrZXl3b3JkID09IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhc3RyaWN0TW9kZSA/IElERU5UIDog
a2V5d29yZDsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBib29sIGlzUHJpdmF0ZU5hbWUg
PSBtX2N1cnJlbnQgPT0gJ0AnICYmIG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbjsKKworICAgIGJv
b2wgaXNQcml2YXRlTmFtZSA9IG1fY3VycmVudCA9PSAnIyc7CisgICAgYm9vbCBpc0J1aWx0aW5O
YW1lID0gbV9jdXJyZW50ID09ICdAJyAmJiBtX3BhcnNpbmdCdWlsdGluRnVuY3Rpb247CiAgICAg
Ym9vbCBpc1dlbGxLbm93blN5bWJvbCA9IGZhbHNlOwotICAgIGlmIChpc1ByaXZhdGVOYW1lKSB7
CisgICAgaWYgKGlzQnVpbHRpbk5hbWUpIHsKICAgICAgICAgQVNTRVJUKG1fcGFyc2luZ0J1aWx0
aW5GdW5jdGlvbik7CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
J0AnKSB7CkBAIC05NTYsOCArOTU3LDEyIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlk
ZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8TENoYXI+OjpwCiAgICAg
ICAgICAgICBzaGlmdCgpOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY29uc3QgTENo
YXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRTb3VyY2VQdHIoKTsKKworICAgIGlmIChpc1By
aXZhdGVOYW1lKQorICAgICAgICBzaGlmdCgpOworCiAgICAgQVNTRVJUKGlzSWRlbnRTdGFydCht
X2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKICAgICB3aGlsZSAoaXNJZGVudFBhcnQo
bV9jdXJyZW50KSkKICAgICAgICAgc2hpZnQoKTsKQEAgLTk2OSw3ICs5NzQsOCBAQCB0ZW1wbGF0
ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBl
IExleGVyPExDaGFyPjo6cAogICAgIAogICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyIHx8
IG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbikgewogICAgICAgICBpbnQgaWRlbnRpZmllckxlbmd0
aCA9IGN1cnJlbnRTb3VyY2VQdHIoKSAtIGlkZW50aWZpZXJTdGFydDsKLSAgICAgICAgaWYgKG1f
cGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc1ByaXZhdGVOYW1lKSB7CisgICAgICAgIGlkZW50
ID0gbWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBpZGVudGlmaWVyTGVuZ3RoKTsKKyAg
ICAgICAgaWYgKG1fcGFyc2luZ0J1aWx0aW5GdW5jdGlvbiAmJiBpc0J1aWx0aW5OYW1lKSB7CiAg
ICAgICAgICAgICBpZiAoaXNXZWxsS25vd25TeW1ib2wpCiAgICAgICAgICAgICAgICAgaWRlbnQg
PSAmbV9hcmVuYS0+bWFrZUlkZW50aWZpZXIobV92bSwgbV92bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5sb29rVXBXZWxsS25vd25TeW1ib2woaWRlbnRpZmllclN0YXJ0LCBpZGVudGlm
aWVyTGVuZ3RoKSk7CiAgICAgICAgICAgICBlbHNlCkBAIC05OTEsMjAgKzk5NywyMSBAQCB0ZW1w
bGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPExDaGFyPjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gbnVsbHB0cjsKIAotICAgIGlmIChVTkxJS0VMWSgocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5n
dGgpICYmICFsZXhlckZsYWdzLmNvbnRhaW5zKExleGVyRmxhZ3M6Oklnbm9yZVJlc2VydmVkV29y
ZHMpKSAmJiAhaXNQcml2YXRlTmFtZSkgeworICAgIGF1dG8gaWRlbnRUeXBlID0gaXNQcml2YXRl
TmFtZSA/IFBSSVZBVEVOQU1FIDogSURFTlQ7CisgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdu
b3JlUmVzZXJ2ZWRXb3JkcykpICYmICFpc0J1aWx0aW5OYW1lKSB7CiAgICAgICAgIEFTU0VSVChz
aG91bGRDcmVhdGVJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2Vu
TGVuZ3RoKSB7CiAgICAgICAgICAgICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBKU0M6
Om1haW5UYWJsZS5lbnRyeSgqaWRlbnQpOwogICAgICAgICAgICAgQVNTRVJUKChyZW1haW5pbmcg
PCBtYXhUb2tlbkxlbmd0aCkgfHwgIWVudHJ5KTsKICAgICAgICAgICAgIGlmICghZW50cnkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICAgICAgICAgIHJldHVybiBpZGVu
dFR5cGU7CiAgICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9r
ZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAodG9rZW4g
IT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsKKyAg
ICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RN
b2RlID8gdG9rZW4gOiBpZGVudFR5cGU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIElERU5U
OworICAgICAgICByZXR1cm4gaWRlbnRUeXBlOwogICAgIH0KIAotICAgIHJldHVybiBJREVOVDsK
KyAgICByZXR1cm4gaWRlbnRUeXBlOwogfQogCiB0ZW1wbGF0ZSA8PgpAQCAtMTAyMSw3ICsxMDI4
LDEyIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBi
b29sIGlzUHJpdmF0ZU5hbWUgPSBtX2N1cnJlbnQgPT0gJyMnOwogICAgIGNvbnN0IFVDaGFyKiBp
ZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CisKKyAgICBpZiAoaXNQcml2YXRl
TmFtZSkKKyAgICAgICAgc2hpZnQoKTsKKwogICAgIFVDaGFyIG9yQWxsQ2hhcnMgPSAwOwogICAg
IEFTU0VSVChpc1NpbmdsZUNoYXJhY3RlcklkZW50U3RhcnQobV9jdXJyZW50KSB8fCBVMTZfSVNf
U1VSUk9HQVRFKG1fY3VycmVudCkgfHwgbV9jdXJyZW50ID09ICdcXCcpOwogICAgIHdoaWxlIChp
c1NpbmdsZUNoYXJhY3RlcklkZW50UGFydChtX2N1cnJlbnQpKSB7CkBAIC0xMDQ1LDYgKzEwNTcs
OSBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBBTFdBWVNfSU5MSU5F
IEpTVG9rZW5UeXBlIExleGVyPFVDaGFyPjo6cAogICAgIH0gZWxzZQogICAgICAgICB0b2tlbkRh
dGEtPmlkZW50ID0gbnVsbHB0cjsKICAgICAKKyAgICBpZiAoaXNQcml2YXRlTmFtZSkKKyAgICAg
ICAgcmV0dXJuIFBSSVZBVEVOQU1FOworCiAgICAgaWYgKFVOTElLRUxZKChyZW1haW5pbmcgPCBt
YXhUb2tlbkxlbmd0aCkgJiYgIWxleGVyRmxhZ3MuY29udGFpbnMoTGV4ZXJGbGFnczo6SWdub3Jl
UmVzZXJ2ZWRXb3JkcykpKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVy
KTsKICAgICAgICAgaWYgKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB7CkBAIC0xMDY5LDYg
KzEwODQsMTQgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRp
ZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICBBU1NFUlQobV9idWZmZXIx
Ni5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCghdG9rZW5EYXRhLT5lc2NhcGVkKTsKIAorICAgIGF1
dG8gaWRlbnRDaGFyc1N0YXJ0ID0gaWRlbnRpZmllclN0YXJ0OworICAgIGJvb2wgaXNQcml2YXRl
TmFtZSA9ICppZGVudGlmaWVyU3RhcnQgPT0gJyMnOworICAgIGlmIChpc1ByaXZhdGVOYW1lKQor
ICAgICAgICArK2lkZW50Q2hhcnNTdGFydDsKKworICAgIEpTVG9rZW5UeXBlIGlkZW50VHlwZSA9
IGlzUHJpdmF0ZU5hbWUgPyBQUklWQVRFTkFNRSA6IElERU5UOworICAgIEFTU0VSVCghaXNQcml2
YXRlTmFtZSB8fCBpZGVudGlmaWVyU3RhcnQgIT0gY3VycmVudFNvdXJjZVB0cigpKTsKKwogICAg
IGF1dG8gZmlsbEJ1ZmZlciA9IFsmXSAoYm9vbCBpc1N0YXJ0ID0gZmFsc2UpIHsKICAgICAgICAg
Ly8gXHVYWFhYIHVuaWNvZGUgY2hhcmFjdGVycyBvciBTdXJyb2dhdGUgcGFpcnMuCiAgICAgICAg
IGlmIChpZGVudGlmaWVyU3RhcnQgIT0gY3VycmVudFNvdXJjZVB0cigpKQpAQCAtMTA4OCw3ICsx
MTExLDcgQEAgSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVyVHlwZT46OnBhcnNlSWRlbnRpZmll
clNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEKICAgICAgICAgICAgIGlmIChzaG91bGRD
cmVhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHJlY29yZFVuaWNvZGVDb2RlUG9pbnQo
Y2hhcmFjdGVyLnZhbHVlKCkpOwogICAgICAgICAgICAgaWRlbnRpZmllclN0YXJ0ID0gY3VycmVu
dFNvdXJjZVB0cigpOwotICAgICAgICAgICAgcmV0dXJuIElERU5UOworICAgICAgICAgICAgcmV0
dXJuIGlkZW50VHlwZTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChVMTZfSVNfU1VSUk9H
QVRFKG1fY3VycmVudCkpOwpAQCAtMTEwNCwxMCArMTEyNywxMCBAQCBKU1Rva2VuVHlwZSBMZXhl
cjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNUb2tlbkRhdGEqIHRv
a2VuRGF0YQogICAgICAgICBzaGlmdCgpOwogICAgICAgICBzaGlmdCgpOwogICAgICAgICBpZGVu
dGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7Ci0gICAgICAgIHJldHVybiBJREVOVDsK
KyAgICAgICAgcmV0dXJuIGlkZW50VHlwZTsKICAgICB9OwogCi0gICAgSlNUb2tlblR5cGUgdHlw
ZSA9IGZpbGxCdWZmZXIoaWRlbnRpZmllclN0YXJ0ID09IGN1cnJlbnRTb3VyY2VQdHIoKSk7Cisg
ICAgSlNUb2tlblR5cGUgdHlwZSA9IGZpbGxCdWZmZXIoaWRlbnRDaGFyc1N0YXJ0ID09IGN1cnJl
bnRTb3VyY2VQdHIoKSk7CiAgICAgaWYgKFVOTElLRUxZKHR5cGUgJiBFcnJvclRva2VuRmxhZykp
CiAgICAgICAgIHJldHVybiB0eXBlOwogCkBAIC0xMTQwLDEzICsxMTYzLDEzIEBAIEpTVG9rZW5U
eXBlIExleGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZShKU1Rva2Vu
RGF0YSogdG9rZW5EYXRhCiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVhdGVJZGVudGlmaWVyKTsK
ICAgICAgICAgY29uc3QgSGFzaFRhYmxlVmFsdWUqIGVudHJ5ID0gSlNDOjptYWluVGFibGUuZW50
cnkoKmlkZW50KTsKICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgIHJldHVybiBJREVO
VDsKKyAgICAgICAgICAgIHJldHVybiBpZGVudFR5cGU7CiAgICAgICAgIEpTVG9rZW5UeXBlIHRv
a2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwogICAg
ICAgICBpZiAoKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSkKICAg
ICAgICAgICAgIHJldHVybiBVTkVYUEVDVEVEX0VTQ0FQRV9FUlJPUlRPSzsKICAgICB9CiAKLSAg
ICByZXR1cm4gSURFTlQ7CisgICAgcmV0dXJuIGlkZW50VHlwZTsKIH0KIAogc3RhdGljIEFMV0FZ
U19JTkxJTkUgYm9vbCBjaGFyYWN0ZXJSZXF1aXJlc1BhcnNlU3RyaW5nU2xvd0Nhc2UoTENoYXIg
Y2hhcmFjdGVyKQpAQCAtMjQ3MywxNCArMjQ5NiwyMSBAQCBzdGFydDoKICAgICAgICAgbV9oYXNM
aW5lVGVybWluYXRvckJlZm9yZVRva2VuID0gdHJ1ZTsKICAgICAgICAgbV9saW5lU3RhcnQgPSBt
X2NvZGU7CiAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgY2FzZSBDaGFyYWN0ZXJIYXNoOgorICAg
IGNhc2UgQ2hhcmFjdGVySGFzaDogewogICAgICAgICAvLyBIYXNoYmFuZyBpcyBvbmx5IHBlcm1p
dHRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHNvdXJjZSB0ZXh0LgotICAgICAgICBpZiAocGVlaygx
KSA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkgeworICAgICAgICBhdXRvIG5leHQgPSBwZWVr
KDEpOworICAgICAgICBpZiAobmV4dCA9PSAnIScgJiYgIWN1cnJlbnRPZmZzZXQoKSkgewogICAg
ICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBnb3Rv
IGluU2luZ2xlTGluZUNvbW1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBp
dCBjb3VsZCBiZSBhIHZhbGlkIFByaXZhdGVOYW1lLgorICAgICAgICBpZiAoT3B0aW9uczo6dXNl
UHJpdmF0ZUNsYXNzRmllbGRzKCkgJiYgKGlzU2luZ2xlQ2hhcmFjdGVySWRlbnRTdGFydChuZXh0
KSB8fCBuZXh0ID09ICdcXCcpKSB7CisgICAgICAgICAgICBsZXhlckZsYWdzLnJlbW92ZShMZXhl
ckZsYWdzOjpEb250QnVpbGRLZXl3b3Jkcyk7CisgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7
CisgICAgICAgIH0KICAgICAgICAgZ290byBpbnZhbGlkQ2hhcmFjdGVyOworICAgIH0KICAgICBj
YXNlIENoYXJhY3RlclByaXZhdGVJZGVudGlmaWVyU3RhcnQ6CiAgICAgICAgIGlmIChtX3BhcnNp
bmdCdWlsdGluRnVuY3Rpb24pCiAgICAgICAgICAgICBnb3RvIHBhcnNlSWRlbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDhkMzIw
ZTdkOTRlNjRhOWQ3OWFhNTcxOTM0OTQ5NDE4NTVkMmJiNTguLmU3ZTg2ZDM1ODhmZDg0OGIzY2Nl
ZjUyMWQ3NDRlODVlMGQyZTkxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC0zMjcsMTAgKzMyNywxNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNz
b3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBpbmxpbmUgQmFzZURvdE5vZGU6OkJh
c2VEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlKQogICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCisgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgeworICAgIH0K
KworICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlv
biwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgewogICAgIH0KICAgICAKQEAgLTQxOCwxMSArNDI0
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlv
bkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBGdW5jdGlv
bkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RG90VHlwZSB0eXBlLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpCisgICAgICAgIDogQmFzZURvdE5vZGUobG9jYXRpb24sIGJhc2UsIGlk
ZW50LCB0eXBlKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCkKLSAgICAgICAgLCBtX2Jhc2UoYmFzZSkKLSAgICAgICAgLCBt
X2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CkBAIC00
MzcsMjAgKzQ0MSwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBs
eSkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwg
YXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBEb3RUeXBlIHR5cGUsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBs
eSkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwg
dHlwZSwgYXJncywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQogICAgICAgICAsIG1fZGlz
dGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBs
eSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRz
Tm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBzaXplX3Qg
ZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2
b3RFbmQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRG90VHlwZSB0eXBlLCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIHNpemVf
dCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCisgICAgICAgIDogRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGFyZ3MsIGRpdm90LCBkaXZvdFN0
YXJ0LCBkaXZvdEVuZCkKICAgICAgICAgLCBtX2Rpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBs
eShkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERvdE5vZGU6Okhhc093blByb3BlcnR5RnVu
Y3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFy
Z3MsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAgICAgICAgOiBGdW5j
dGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIGRpdm90
U3RhcnQsIGRpdm90RW5kKQorICAgIGlubGluZSBIYXNPd25Qcm9wZXJ0eUZ1bmN0aW9uQ2FsbERv
dE5vZGU6Okhhc093blByb3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIERvdFR5cGUgdHlwZSwgQXJndW1lbnRzTm9kZSogYXJncywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kKQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9j
YXRpb24sIGJhc2UsIGlkZW50LCB0eXBlLCBhcmdzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpCiAgICAgewogICAgIH0KIApAQCAtNzc3LDIxICs3ODEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9k
ZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIERvdFR5cGUgdHlwZSwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlv
biwgYmFzZSwgaWRlbnQsIHR5cGUpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAg
LCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCisgICAgaW5saW5lIFJl
YWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IERvdFR5cGUgdHlwZSwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCkKKyAgICAgICAgOiBCYXNlRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUpCiAg
ICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIGRpdm90U3RhcnQsIGRp
dm90RW5kKQotICAgICAgICAsIG1fYmFzZShiYXNlKQotICAgICAgICAsIG1faWRlbnQoaWRlbnQp
CiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAg
ICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGJjZDllZjk4YmViNGJlOGVlMWVh
NjRiZWUzNDRjMTI4NWZiMDlkMjAuLjY0YTY2Zjc2NWM4ZjRkMjg0OTZkYTljZTZjNDRhYmIwOGFh
ODgxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0zMzUsNyAr
MzM1LDcgQEAgYm9vbCBQcm9wZXJ0eUxpc3ROb2RlOjpoYXNTdGF0aWNhbGx5TmFtZWRQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyJiBwcm9wTmFtZSkKIGJvb2wgUHJvcGVydHlMaXN0Tm9kZTo6c2hv
dWxkQ3JlYXRlTGV4aWNhbFNjb3BlRm9yQ2xhc3MoUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKIHsK
ICAgICB3aGlsZSAobGlzdCkgewotICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVk
Q2xhc3NGaWVsZCgpKQorICAgICAgICBpZiAobGlzdC0+bV9ub2RlLT5pc0NvbXB1dGVkQ2xhc3NG
aWVsZCgpIHx8IGxpc3QtPm1fbm9kZS0+aXNQcml2YXRlKCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgbGlzdCA9IGxpc3QtPm1fbmV4dDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNjNjNWExM2JmNTVlNGI3NDExMzM4ZTY4YzRiMDAwMmYw
OWU0MGE2MC4uMmU3YWZmMmRkMzUzM2I4YWYzODcxMWVmMmMyNDVjMjlhMjBmNzk0NSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTg1LDYgKzE4NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0gICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXND
b25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGlzUHJpdmF0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNMb2NhdGlv
bigpOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQXNzaWduUmVzb2x2ZU5vZGUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzIxLDcgKzcyMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5j
ZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVi
bGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBl
IDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0
ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIgfTsKKyAgICAgICAgZW51bSBUeXBl
IDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0
ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGUgPSA2NCB9OwogICAg
ICAgICBlbnVtIFB1dFR5cGUgOiB1aW50OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAog
ICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwg
VHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzQwLDYg
Kzc0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNv
bnN0IHsgcmV0dXJuIGlzQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9
CiAgICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0lu
c3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAg
IGJvb2wgaXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJp
ZGRlbkJ5RHVwbGljYXRlOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlICYgUHJpdmF0ZTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFz
c0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1l
KCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092
ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc1MCw3ICs3NTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3Np
Z247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6IDY7CisgICAgICAgIHVuc2lnbmVkIG1fdHlw
ZSA6IDc7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAg
ICB1bnNpZ25lZCBtX3B1dFR5cGUgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NF
bGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CkBAIC03NzgsNiAr
NzgwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIFJlZ2lzdGVySUQqLCBWZWN0b3I8
SlNUZXh0UG9zaXRpb24+Kik7CiAKKyAgICAgICAgdm9pZCBlbWl0RGVjbGFyZVByaXZhdGVGaWVs
ZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogc2NvcGUpOworCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHIpIGZpbmFsCiAgICAgICAgIHsK
QEAgLTgyMiw5ICs4MjYsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zdWJz
Y3JpcHRIYXNBc3NpZ25tZW50czsKICAgICB9OwogCi0gICAgY2xhc3MgRG90QWNjZXNzb3JOb2Rl
IGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgeworICAgIGVudW0gY2xhc3MgRG90VHlwZSB7IE5hbWUsIFByaXZhdGVGaWVsZCB9Owor
ICAgIGNsYXNzIEJhc2VEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBCYXNlRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIERvdFR5cGUpOworCisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9iYXNlOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CisgICAgICAgIERvdFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZUZpZWxkKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IERvdFR5cGU6OlByaXZhdGVGaWVsZDsgfQorCisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNW
YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdmFsdWUpOworCisgICAgcHJvdGVjdGVk
OgorICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOworICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX2lkZW50OworICAgICAgICBEb3RUeXBlIG1fdHlwZTsKKyAgICB9OworCisgICAgY2xh
c3MgRG90QWNjZXNzb3JOb2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgRG90QWNjZXNzb3JO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiwgRG90VHlwZSk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTgzMywxMCArODU4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgZmluYWw7CiAKICAgICAgICAgYm9vbCBp
c0xvY2F0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlz
UHJpdmF0ZUxvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlID09IERvdFR5
cGU6OlByaXZhdGVGaWVsZDsgfQogICAgICAgICBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jh
c2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKIAogICAgIGNs
YXNzIFNwcmVhZEV4cHJlc3Npb25Ob2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewpAQCAtOTQ5LDkgKzk3Miw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBib29sIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHM7CiAgICAg
fTsKIAotICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3MgRnVuY3Rp
b25DYWxsRG90Tm9kZSA6IHB1YmxpYyBCYXNlRG90Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4
cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKKyAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3Vt
ZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKQEAgLTk1OSw4ICs5ODIsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgaXNGdW5jdGlv
bkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fYmFzZTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAg
ICAgICAgQXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAgIH07CiAKQEAgLTk5Nyw3ICsxMDE4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSBm
aW5hbCA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RD
YWxsT3JBcHBseSk7CisgICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRG90
VHlwZSwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwpAQCAtMTAwNiw3ICsxMDI3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RDYWxs
T3JBcHBseSk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5
cGUsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKQEAgLTEwMTUsNyArMTAzNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgSGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlIGZp
bmFsIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
SGFzT3duUHJvcGVydHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSos
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CisgICAgICAgIEhhc093blBy
b3BlcnR5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIERvdFR5cGUsIEFyZ3VtZW50c05vZGUq
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKQEAgLTE0NzcsMjggKzE0OTgsMjQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9yaWdodEhhc0Fzc2lnbm1lbnRzIDogMTsKICAgICB9
OwogCi0gICAgY2xhc3MgQXNzaWduRG90Tm9kZSBmaW5hbCA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKKyAgICBjbGFzcyBBc3NpZ25Eb3RO
b2RlIGZpbmFsIDogcHVibGljIEJhc2VEb3ROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOworICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
RG90VHlwZSwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIGZpbmFsOwogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jh
c2U7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX3JpZ2h0OwogICAgICAgICBib29sIG1fcmlnaHRIYXNBc3NpZ25tZW50czsKICAg
ICB9OwogCi0gICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CisgICAgY2xhc3Mg
UmVhZE1vZGlmeURvdE5vZGUgZmluYWwgOiBwdWJsaWMgQmFzZURvdE5vZGUsIHB1YmxpYyBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5
RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsK
KyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBEb3RUeXBlLCBPcGVyYXRvciwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIGZpbmFsOwogCi0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7Ci0gICAgICAg
IGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3Jp
Z2h0OwogICAgICAgICBPcGVyYXRvciBtX29wZXJhdG9yOwogICAgICAgICBib29sIG1fcmlnaHRI
YXNBc3NpZ25tZW50cyA6IDE7CkBAIC0yMjk1LDcgKzIzMTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIERlZmluZUZpZWxkTm9kZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gY2xhc3MgVHlwZSB7IE5hbWUsIENvbXB1dGVk
TmFtZSB9OworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOYW1lLCBQcml2YXRlTmFtZSwgQ29t
cHV0ZWROYW1lIH07CiAgICAgICAgIERlZmluZUZpZWxkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyKiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlKTsKIAogICAgIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZDQyYWFj
MjI4OTUzODEwYmU4YmMzZjljNjE3M2NjNmUyMWJkODhkMC4uZGI1NDBlOTkxZTgzZTlkYTVkMjg1
YTcxNTY5OGRhNzI4NDg3MWQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcApAQCAtODI2LDYgKzgyNiw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsCiAgICAgICAg
IFRyZWVFeHByZXNzaW9uIG5vZGUgPSAwOwogICAgICAgICBkZWNsYXJhdGlvbnMrKzsKICAgICAg
ICAgYm9vbCBoYXNJbml0aWFsaXplciA9IGZhbHNlOworCisgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goUFJJVkFURU5BTUUpLCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSB0byBkZWNsYXJlIGEg
dmFyaWFibGUiKTsKICAgICAgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSkgewogICAgICAg
ICAgICAgZmFpbElmVHJ1ZShtYXRjaChMRVQpICYmIChkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFy
YXRpb25UeXBlOjpMZXREZWNsYXJhdGlvbiB8fCBkZWNsYXJhdGlvblR5cGUgPT0gRGVjbGFyYXRp
b25UeXBlOjpDb25zdERlY2xhcmF0aW9uKSwgCiAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2Ug
J2xldCcgYXMgYW4gaWRlbnRpZmllciBuYW1lIGZvciBhIExleGljYWxEZWNsYXJhdGlvbiIpOwpA
QCAtMTI4OCw2ICsxMjkwLDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGUKICAgICAgICAgICAg
IGlmIChraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVE
dWVUb0tleXdvcmQoZGVzdHJ1Y3R1cmluZ0tpbmRUb1ZhcmlhYmxlS2luZE5hbWUoa2luZCkpOwor
ICAgICAgICAgICAgaWYgKGtpbmQgIT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9Q
YXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goUFJJVkFURU5BTUUp
LCAiQ2Fubm90IHVzZSBhIHByaXZhdGUgbmFtZSBhcyBhICIsIGRlc3RydWN0dXJpbmdLaW5kVG9W
YXJpYWJsZUtpbmROYW1lKGtpbmQpKTsKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhw
ZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBvciBhICcpJyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwog
ICAgICAgICB9CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goTEVUKSAmJiAoa2luZCA9PSBEZXN0
cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0xldCB8fCBraW5kID09IERlc3RydWN0dXJpbmdL
aW5kOjpEZXN0cnVjdHVyZVRvQ29uc3QpLCAiQ2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlm
aWVyIG5hbWUgZm9yIGEgTGV4aWNhbERlY2xhcmF0aW9uIik7CkBAIC0yOTUzLDYgKzI5NTcsMTkg
QEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShjb21wdXRlZFByb3BlcnR5
TmFtZSwgIkNhbm5vdCBwYXJzZSBjb21wdXRlZCBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAg
ICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0tFVCwgIl0iLCAiZW5kIiwgImNvbXB1
dGVkIHByb3BlcnR5IG5hbWUiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBS
SVZBVEVOQU1FOiB7CisgICAgICAgICAgICBBU1NFUlQoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNz
RmllbGRzKCkpOworICAgICAgICAgICAgSlNUb2tlbiB0b2tlbiA9IG1fdG9rZW47CisgICAgICAg
ICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgZmFpbElmVHJ1
ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBj
YW5ub3QgYmUgcHJpdmF0ZSIpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBp
c1NldHRlciwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsK
KyAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAg
ICAgICBmYWlsSWZUcnVlKG1hdGNoQW5kVXBkYXRlKE9QRU5QQVJFTiwgdG9rZW4pLCAiQ2Fubm90
IHBhcnNlIGNsYXNzIG1ldGhvZCB3aXRoIHByaXZhdGUgbmFtZSIpOworICAgICAgICAgICAgc2Vt
YW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTmFtZSgqaWRlbnQpICYg
RGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBk
ZWNsYXJlIHByaXZhdGUgZmllbGQgdHdpY2UiKTsKKyAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNf
Y2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCiAgICAgICAgICAgICAg
ICAgZ290byBuYW1lZEtleXdvcmQ7CkBAIC0yOTY4LDggKzI5ODUsMTAgQEAgcGFyc2VNZXRob2Q6
CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1l
dGhvZCIpOwogICAgICAgICB9IGVsc2UgaWYgKE9wdGlvbnM6OnVzZVB1YmxpY0NsYXNzRmllbGRz
KCkgJiYgIW1hdGNoKE9QRU5QQVJFTikgJiYgdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFu
Y2UgJiYgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewogICAgICAg
ICAgICAgQVNTRVJUKCFpc0dldHRlciAmJiAhaXNTZXR0ZXIpOwotICAgICAgICAgICAgaWYgKGlk
ZW50KQorICAgICAgICAgICAgaWYgKGlkZW50KSB7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKCppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yLCAiQ2Fubm90IGRl
Y2xhcmUgY2xhc3MgZmllbGQgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOworICAgICAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvclBy
aXZhdGVGaWVsZCwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgY2xhc3MgZmllbGQgbmFtZWQgJyNj
b25zdHJ1Y3RvciciKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVk
UHJvcGVydHlOYW1lKSB7CiAgICAgICAgICAgICAgICAgaWRlbnQgPSAmbV9wYXJzZXJBcmVuYS5p
ZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIobV92bSwgbnVtQ29tcHV0ZWRG
aWVsZHMrKyk7CkBAIC0zMDMzLDYgKzMwNTIsMTAgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5l
bmRPZmZzZXQgPSB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JG
YWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9k
eSIpOwogCisgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVDbGFzc0ZpZWxkcygpKSB7CisgICAg
ICAgIC8vIEZhaWwgaWYgdGhlcmUgYXJlIG5vIHBhcmVudCBwcml2YXRlIG5hbWUgc2NvcGVzIGFu
ZCBhbnkgdXNlZC1idXQtdW5kZWNsYXJlZCBwcml2YXRlIG5hbWVzLgorICAgICAgICBzZW1hbnRp
Y0ZhaWxJZkZhbHNlKGNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG9PdXRlclNjb3BlKCksICJD
YW5ub3QgcmVmZXJlbmNlIHVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcyIpOworICAgIH0KICAgICBh
dXRvIGNsYXNzRXhwcmVzc2lvbiA9IGNvbnRleHQuY3JlYXRlQ2xhc3NFeHByKGxvY2F0aW9uLCBp
bmZvLCBjbGFzc1Njb3BlLT5maW5hbGl6ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjb25zdHJ1Y3Rv
ciwgcGFyZW50Q2xhc3MsIGNsYXNzRWxlbWVudHMpOwogICAgIHBvcFNjb3BlKGNsYXNzU2NvcGUs
IFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIHJldHVybiBjbGFzc0V4
cHJlc3Npb247CkBAIC0zMDU2LDYgKzMwNzksOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbnN0YW5jZQog
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21wdXRlZFByb3BlcnR5TmFtZSA9IDA7CiAgICAgICAg
IERlZmluZUZpZWxkTm9kZTo6VHlwZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1l
OwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CisgICAgICAgIGNhc2UgUFJJVkFU
RU5BTUU6CisgICAgICAgICAgICB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpQcml2YXRl
TmFtZTsKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFNUUklORzoKICAg
ICAgICAgY2FzZSBJREVOVDoKICAgICAgICAgbmFtZWRLZXl3b3JkOgpAQCAtMzA5NSw2ICszMTIx
LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgaWYgKGNvbnN1bWUoRVFVQUwp
KQogICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwogCisgICAgICAgIGlmICh0eXBlID09IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJp
dmF0ZU5hbWUpCisgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQs
IGZhbHNlKTsKKwogICAgICAgICBUcmVlU3RhdGVtZW50IGRlZmluZUZpZWxkID0gY29udGV4dC5j
cmVhdGVEZWZpbmVGaWVsZChmaWVsZExvY2F0aW9uLCBpZGVudCwgaW5pdGlhbGl6ZXIsIHR5cGUp
OwogICAgICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgZGVmaW5l
RmllbGQpOwogICAgIH0KQEAgLTQ3OTgsNiArNDgyNywyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
cmVjb3JkQ2FsbE9yQXBwbHlEZXB0aChQYXJzZXJUeXBlKiwgVk0mLCBPcHRpb25hbDx0eXBlbmFt
ZSBQYQogewogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgorYm9vbCBQYXJzZXI8
TGV4ZXJUeXBlPjo6dXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciogaWRlbnQpCit7Cisg
ICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBpZiAoYXV0byBtYXliZUN1cnJlbnQgPSBmaW5kUHJpdmF0ZU5hbWVTY29wZSgp
KSB7CisgICAgICAgIFNjb3BlUmVmIGN1cnJlbnQgPSBtYXliZUN1cnJlbnQudmFsdWUoKTsKKyAg
ICAgICAgaWYgKCFjdXJyZW50LT5oYXNQcml2YXRlTmFtZSgqaWRlbnQpKQorICAgICAgICAgICAg
Y3VycmVudC0+dXNlUHJpdmF0ZU5hbWUoKmlkZW50KTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQog
ewpAQCAtNDk5OSw4ICs1MDQ0LDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAg
ICAgICAgICAgbV9wYXJzZXJTdGF0ZS5ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAg
ICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZFBv
c2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZEtleXdvcmRzIHwgTGV4ZXJGbGFnczo6SWdub3JlUmVzZXJ2ZWRXb3Jkcyk7
CisgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKKyAgICAgICAgICAgICAgICBhdXRvIHR5cGUgPSBEb3RUeXBlOjpOYW1lOworICAg
ICAgICAgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGlkZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZShiYXNlSXNT
dXBlciwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBuYW1lcyBmcm9tIHN1cGVyIik7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChVTkxJS0VMWShjdXJyZW50U2NvcGUoKS0+ZXZhbENvbnRleHRUeXBl
KCkgPT0gRXZhbENvbnRleHRUeXBlOjpJbnN0YW5jZUZpZWxkRXZhbENvbnRleHQpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aGFz
UHJpdmF0ZU5hbWUoKmlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2UgdW5kZWNsYXJlZCBwcml2YXRl
IGZpZWxkICciLCBpZGVudC0+aW1wbCgpLCAiJyIpOworICAgICAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZkZhbHNlKHVzZVByaXZhdGVOYW1lKGlkZW50KSwgIkNhbm5vdCByZWZlcmVuY2Ug
cHJpdmF0ZSBuYW1lcyBvdXRzaWRlIG9mIGNsYXNzIik7CisgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VyU3RhdGUubGFzdFByaXZhdGVOYW1lID0gaWRlbnQ7CisgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgZmFsc2UpOworICAgICAgICAgICAg
ICAgICAgICB0eXBlID0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkOworICAgICAgICAgICAgICAgICAg
ICBtX3Rva2VuLm1fdHlwZSA9IElERU5UOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSBhZnRlciAi
LCBvcHRpb25hbENoYWluQmFzZSA/ICInPy4nIiA6ICInLiciKTsKLSAgICAgICAgICAgICAgICBi
YXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3Moc3RhcnRMb2NhdGlvbiwgYmFzZSwgbV90b2tl
bi5tX2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmRQ
b3NpdGlvbigpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nl
c3Moc3RhcnRMb2NhdGlvbiwgYmFzZSwgaWRlbnQsIHR5cGUsIGV4cHJlc3Npb25TdGFydCwgZXhw
cmVzc2lvbkVuZCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoYmFzZUlzU3VwZXIgJiYgY3VycmVudFNjb3BlKCktPmlzQXJyb3dGdW5jdGlvbigpKSkK
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+c2V0SW5uZXJBcnJv
d0Z1bmN0aW9uVXNlc1N1cGVyUHJvcGVydHkoKTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CkBA
IC01MTk1LDYgKzUyNTMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVl
SWZTdHJpY3QoY29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVucXVhbGlm
aWVkIHByb3BlcnR5ICciLCBtX3BhcnNlclN0YXRlLmxhc3RJZGVudGlmaWVyLT5pbXBsKCksICIn
IGluIHN0cmljdCBtb2RlIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY29udGV4
dC5pc1ByaXZhdGVMb2NhdGlvbihleHByKSwgIkNhbm5vdCBkZWxldGUgcHJpdmF0ZSBmaWVsZCAi
LCBtX3BhcnNlclN0YXRlLmxhc3RQcml2YXRlTmFtZS0+aW1wbCgpKTsKICAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5
VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTUyNzEsNyArNTMzMCwxMSBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpwcmludFVu
ZXhwZWN0ZWRUb2tlblRleHQoVwogICAgIGNhc2UgSU5WQUxJRF9QUklWQVRFX05BTUVfRVJST1JU
T0s6CiAgICAgICAgIG91dC5wcmludCgiSW52YWxpZCBwcml2YXRlIG5hbWUgJyIsIGdldFRva2Vu
KCksICInIik7CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAorCisgICAgY2FzZSBQUklW
QVRFTkFNRToKKyAgICAgICAgb3V0LnByaW50KCJVbmV4cGVjdGVkIHByaXZhdGUgbmFtZSAiLCBn
ZXRUb2tlbigpKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBBV0FJVDoKICAgICBjYXNl
IElERU5UOgogICAgICAgICBvdXQucHJpbnQoIlVuZXhwZWN0ZWQgaWRlbnRpZmllciAnIiwgZ2V0
VG9rZW4oKSwgIiciKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDU0
YjM5NzMwOWVhMmZjY2YzNzMxZmJlOTk4ZGFiNTk5YzliYmUwMTYuLjFmNWQ5MzJjM2Y1NzVlYjIw
NTU3NDA0ZTU2NDE4N2ZiZjc1Yjk2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzR2VuZXJhdG9yQm91
bmRhcnkoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdG9yQm91bmRhcnk7IH0KICAgICBib29s
IGlzQXN5bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3luY0Z1bmN0aW9uOyB9CiAg
ICAgYm9vbCBpc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBc3lu
Y0Z1bmN0aW9uQm91bmRhcnk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU5hbWVTY29wZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDbGFzc1Njb3BlOyB9CiAgICAgYm9vbCBpc0NsYXNzU2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2xhc3NTY29wZTsgfQogCiAgICAgYm9vbCBoYXNBcmd1bWVudHMoKSBj
b25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQpAQCAtMzA5LDYgKzMxMCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyA9IHRydWU7CiAgICAgfQog
CisgICAgdm9pZCBzZXRJc1ByaXZhdGVOYW1lU2NvcGUoKQorICAgIHsKKyAgICAgICAgLy8gRklY
TUU6IEN1cnJlbnRseSwgaXNQcml2YXRlTmFtZVNjb3BlIGlzIGFuIGFsaWFzIGZvciBpc0NsYXNz
U2NvcGUgLS0tIFRoaXMgaXMgcG90ZW50aWFsbHkgbWlzbGVhZGluZywKKyAgICAgICAgLy8gcGFy
dGljdWxhcmx5IHdoZW4gcGFyc2luZyBkaXJlY3QgZXZhbCBjb2RlIHdoaWNoIG9jY3VycyB3aXRo
aW4gYSBjbGFzcy4KKyAgICAgICAgc2V0SXNDbGFzc1Njb3BlKCk7CisgICAgfQorCiAgICAgdm9p
ZCBzZXRJc0NsYXNzU2NvcGUoKQogICAgIHsKICAgICAgICAgbV9pc0NsYXNzU2NvcGUgPSB0cnVl
OwpAQCAtNDc1LDcgKzQ4Myw0NCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9s
ZXhpY2FsVmFyaWFibGVzLmNvbnRhaW5zKGlkZW50LmdldCgpKTsKICAgICB9Ci0gICAgCisKKyAg
ICBib29sIGhhc1ByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fbGV4aWNhbFZhcmlhYmxlcy5oYXNQcml2YXRlTmFtZShpZGVudCk7Cisg
ICAgfQorCisgICAgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKFNjb3BlJiBvdGhl
cikKKyAgICB7CisgICAgICAgIG1fbGV4aWNhbFZhcmlhYmxlcy5jb3B5VW5kZWNsYXJlZFByaXZh
dGVOYW1lc1RvKG90aGVyLm1fbGV4aWNhbFZhcmlhYmxlcyk7CisgICAgfQorCisgICAgYm9vbCBo
YXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAobV9sZXhpY2FsVmFyaWFibGVzLnByaXZhdGVOYW1lc1NpemUoKSA+IDApIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byBlbnRyeSA6IG1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXMoKSkg
eworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFs
dWUuaXNEZWNsYXJlZCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
dm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBtX2xleGlj
YWxWYXJpYWJsZXMudXNlUHJpdmF0ZU5hbWUoaWRlbnQpOworICAgIH0KKworICAgIERlY2xhcmF0
aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAg
ICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpW
YWxpZDsKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFy
ZVByaXZhdGVOYW1lKGlkZW50KTsKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0
ZURlY2xhcmF0aW9uOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBoYXNEZWNsYXJlZFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBoYXNEZWNsYXJlZFBhcmFtZXRlcihpZGVudC5pbXBs
KCkpOwpAQCAtOTEwLDcgKzk1NSw3IEBAIHB1YmxpYzoKICAgICB+UGFyc2VyKCk7CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2Rl
LCBQYXJzaW5nQ29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1l
dGVyc0VuZFBvc2l0aW9uID0gV1RGOjpudWxsb3B0LCBjb25zdCBWZWN0b3I8SlNUZXh0UG9zaXRp
b24+KiA9IG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQ
YXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNpbmdD
b250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9z
aXRpb24gPSBXVEY6Om51bGxvcHQsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqID0gbnVsbHB0
ciwgY29uc3QgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogPSBudWxscHRyKTsKIAogICAgIEpTVGV4
dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xl
eGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9r
ZW5Mb2NhdGlvbigpOyB9CkBAIC0xMTgzLDYgKzEyMjgsNDQgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwogICAgIH0KIAorICAgIE9wdGlvbmFs
PFNjb3BlUmVmPiBmaW5kUHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3RhY2su
c2l6ZSgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1ByaXZh
dGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBpZiAobV9zY29wZVN0
YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKQorICAgICAgICAgICAgcmV0dXJuIFNjb3BlUmVm
KCZtX3Njb3BlU3RhY2ssIGkpOworCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
fQorCisgICAgU2NvcGVSZWYgcHJpdmF0ZU5hbWVTY29wZSgpCisgICAgeworICAgICAgICBBU1NF
UlQobV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3Rh
Y2suc2l6ZSgpIC0gMTsKKyAgICAgICAgd2hpbGUgKGkgJiYgIW1fc2NvcGVTdGFja1tpXS5pc1By
aXZhdGVOYW1lU2NvcGUoKSkKKyAgICAgICAgICAgIGktLTsKKworICAgICAgICBBU1NFUlQobV9z
Y29wZVN0YWNrW2ldLmlzUHJpdmF0ZU5hbWVTY29wZSgpKTsKKyAgICAgICAgcmV0dXJuIFNjb3Bl
UmVmKCZtX3Njb3BlU3RhY2ssIGkpOworICAgIH0KKworICAgIGJvb2wgY29weVVuZGVjbGFyZWRQ
cml2YXRlTmFtZXNUb091dGVyU2NvcGUoKQorICAgIHsKKyAgICAgICAgU2NvcGVSZWYgY3VycmVu
dCA9IHByaXZhdGVOYW1lU2NvcGUoKTsKKyAgICAgICAgdW5zaWduZWQgaSA9IGN1cnJlbnQuaW5k
ZXgoKSAtIDE7CisgICAgICAgIHdoaWxlIChpICYmICFtX3Njb3BlU3RhY2tbaV0uaXNQcml2YXRl
TmFtZVNjb3BlKCkpCisgICAgICAgICAgICBpLS07CisKKyAgICAgICAgaWYgKCFpKQorICAgICAg
ICAgICAgcmV0dXJuICFjdXJyZW50LT5oYXNVc2VkQnV0VW5kZWNsYXJlZFByaXZhdGVOYW1lcygp
OworCisgICAgICAgIGN1cnJlbnQtPmNvcHlVbmRlY2xhcmVkUHJpdmF0ZU5hbWVzVG8obV9zY29w
ZVN0YWNrW2ldKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgU2NvcGVSZWYg
Y2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKQogICAgIHsKICAg
ICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwpAQCAtMTQ2Miw2ICsx
NTQ1LDE2IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5tX3R5cGUg
PT0gZXhwZWN0ZWQ7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoQW5kVXBk
YXRlKEpTVG9rZW5UeXBlIGV4cGVjdGVkLCBjb25zdCBKU1Rva2VuJiB0b2tlbikKKyAgICB7Cisg
ICAgICAgIGlmIChtYXRjaChleHBlY3RlZCkpIHsKKyAgICAgICAgICAgIG1fdG9rZW4gPSB0b2tl
bjsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWF0Y2hDb250ZXh0
dWFsS2V5d29yZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogICAgIHsKQEAgLTE3MTUs
NiArMTgwOCw4IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1NpbXBsZUFzc2lnbm1lbnRUYXJnZXQoVHJlZUJ1aWxkZXIm
LCBUcmVlRXhwcmVzc2lvbik7CiAKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgdXNlUHJpdmF0ZU5h
bWUoY29uc3QgSWRlbnRpZmllciopOworCiAgICAgQUxXQVlTX0lOTElORSBpbnQgaXNCaW5hcnlP
cGVyYXRvcihKU1Rva2VuVHlwZSk7CiAgICAgYm9vbCBhbGxvd0F1dG9tYXRpY1NlbWljb2xvbigp
OwogICAgIApAQCAtMTgwOSw2ICsxOTA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25Q
YXJzZVBoYXNlIGZ1bmN0aW9uUGFyc2VQaGFzZSB7IEZ1bmN0aW9uUGFyc2VQaGFzZTo6Qm9keSB9
OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0SWRlbnRpZmllciB7IG51bGxwdHIgfTsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdEZ1bmN0aW9uTmFtZSB7IG51bGxwdHIgfTsK
KyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbGFzdFByaXZhdGVOYW1lIHsgbnVsbHB0ciB9Owog
ICAgICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgaXNQYXJzaW5n
Q2xhc3NGaWVsZEluaXRpYWxpemVyIHsgZmFsc2UgfTsKICAgICB9OwpAQCAtMTk1OSw3ICsyMDU1
LDcgQEAgcHJpdmF0ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNh
bGxlZU5hbWUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIFBhcnNpbmdDb250ZXh0IHBhcnNp
bmdDb250ZXh0LCBPcHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5k
UG9zaXRpb24sIGNvbnN0IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2Nh
dGlvbnMpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgUGFyc2luZ0NvbnRleHQgcGFyc2luZ0NvbnRleHQsIE9w
dGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFosIGNvbnN0IFZlY3RvcjxK
U1RleHRQb3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7CiAgICAgaW50IGVyckxp
bmU7CiAgICAgU3RyaW5nIGVyck1zZzsKQEAgLTE5NzQsNiArMjA3MCwxMSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBl
cnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9z
b3VyY2UtPnN0YXJ0Q29sdW1uKCkuemVyb0Jhc2VkSW50KCk7CiAKKyAgICBpZiAoaXNFdmFsTm9k
ZTxQYXJzZWROb2RlPigpICYmIHZhcmlhYmxlc1VuZGVyVERaICYmIHZhcmlhYmxlc1VuZGVyVERa
LT5wcml2YXRlTmFtZXNTaXplKCkpIHsKKyAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElzUHJp
dmF0ZU5hbWVTY29wZSgpOworICAgICAgICB2YXJpYWJsZXNVbmRlclREWi0+Y29weVByaXZhdGVO
YW1lc1RvKGN1cnJlbnRTY29wZSgpLT5sZXhpY2FsVmFyaWFibGVzKCkpOworICAgIH0KKwogICAg
IGF1dG8gcGFyc2VSZXN1bHQgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgcGFy
c2luZ0NvbnRleHQsIGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24sIGlu
c3RhbmNlRmllbGRMb2NhdGlvbnMpOwogCiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5s
aW5lTnVtYmVyKCk7CkBAIC0yMDU4LDYgKzIxNTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2Vk
Tm9kZT4gcGFyc2UoCiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSA9
IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlID0gRXZhbENvbnRleHRUeXBlOjpOb25lLAogICAgIERlYnVnZ2VyUGFyc2VEYXRhKiBk
ZWJ1Z2dlclBhcnNlRGF0YSA9IG51bGxwdHIsCisgICAgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVu
dCogdmFyaWFibGVzVW5kZXJURFogPSBudWxscHRyLAogICAgIGNvbnN0IFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMgPSBudWxscHRyLAogICAgIGJvb2wgaXNJ
bnNpZGVPcmRpbmFyeUZ1bmN0aW9uID0gZmFsc2UpCiB7CkBAIC0yMDcwLDcgKzIxNzIsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlz
OEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNl
LCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgc2NyaXB0TW9kZSwgcGFyc2VNb2RlLCBzdXBlckJp
bmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmRGb3JUb3BMZXZlbEZ1bmN0aW9uLCBkZXJpdmVk
Q29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRUeXBlLCBk
ZWJ1Z2dlclBhcnNlRGF0YSwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uKTsKLSAgICAgICAgcmVz
dWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIGlz
RXZhbE5vZGU8UGFyc2VkTm9kZT4oKSA/IFBhcnNpbmdDb250ZXh0OjpFdmFsIDogUGFyc2luZ0Nv
bnRleHQ6OlByb2dyYW0sIFdURjo6bnVsbG9wdCwgaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7Cisg
ICAgICAgIHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFy
c2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6
IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFtLCBXVEY6Om51bGxvcHQsIHZhcmlhYmxlc1VuZGVyVERa
LCBpbnN0YW5jZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNl
ci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9
PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0yMDgzLDcgKzIxODUsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgfSBlbHNlIHsKICAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5j
dGlvbiA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXMncyBzcGVj
aWFsIGNvbnN0cnVjdG9ycyBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwogICAg
ICAgICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUs
IHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0
Q29uc3RydWN0b3JLaW5kRm9yVG9wTGV2ZWxGdW5jdGlvbiwgZGVyaXZlZENvbnRleHRUeXBlLCBp
c0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSwgZGVidWdnZXJQYXJzZURh
dGEsIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlci5w
YXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBpc0V2YWxOb2RlPFBhcnNl
ZE5vZGU+KCkgPyBQYXJzaW5nQ29udGV4dDo6RXZhbCA6IFBhcnNpbmdDb250ZXh0OjpQcm9ncmFt
LCBXVEY6Om51bGxvcHQsIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOworICAgICAgICByZXN1bHQg
PSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgaXNFdmFs
Tm9kZTxQYXJzZWROb2RlPigpID8gUGFyc2luZ0NvbnRleHQ6OkV2YWwgOiBQYXJzaW5nQ29udGV4
dDo6UHJvZ3JhbSwgV1RGOjpudWxsb3B0LCB2YXJpYWJsZXNVbmRlclREWiwgaW5zdGFuY2VGaWVs
ZExvY2F0aW9ucyk7CiAgICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAg
ICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oCmluZGV4IGRlMGViZWFmODVmZDcxMjM3MTdmODc3MTEyN2Y3MTkyM2ZmZTY3
NDguLjdiM2MxZWMzYjdmNmE2YjExYmZjNDVmNGJjOTFkMDQ4MTJmNGNkMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTE0LDYgKzExNCw3IEBA
IGVudW0gSlNUb2tlblR5cGUgewogICAgIERPVUJMRSwKICAgICBCSUdJTlQsCiAgICAgSURFTlQs
CisgICAgUFJJVkFURU5BTUUsCiAgICAgU1RSSU5HLAogICAgIFRFTVBMQVRFLAogICAgIFJFR0VY
UCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXgg
YWFiMGI3NGRhYTg5MDY0NDY4MGJjYmQyZjA4OGVhYmRjYTkzZGQwNi4uMTlhNTk0MjZiMDYzMGUw
ZTlkYjNlMzViOTkwZjk1YmI1NmViOGY2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgICAgICBS
ZXNvbHZlRXZhbEV4cHIsIFJlc29sdmVFeHByLCBJbnRlZ2VyRXhwciwgRG91YmxlRXhwciwgU3Ry
aW5nRXhwciwgQmlnSW50RXhwciwKICAgICAgICAgVGhpc0V4cHIsIE51bGxFeHByLCBCb29sRXhw
ciwgUmVnRXhwRXhwciwgT2JqZWN0TGl0ZXJhbEV4cHIsCiAgICAgICAgIEZ1bmN0aW9uRXhwciwg
Q2xhc3NFeHByLCBTdXBlckV4cHIsIEltcG9ydEV4cHIsIEJyYWNrZXRFeHByLCBEb3RFeHByLCBD
YWxsRXhwciwKLSAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9zdEV4cHIsIFVuYXJ5RXhwciwg
QmluYXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwKKyAgICAgICAgTmV3RXhwciwgUHJlRXhwciwgUG9z
dEV4cHIsIFVuYXJ5RXhwciwgQmluYXJ5RXhwciwgT3B0aW9uYWxDaGFpbiwgUHJpdmF0ZURvdEV4
cHIsCiAgICAgICAgIENvbmRpdGlvbmFsRXhwciwgQXNzaWdubWVudEV4cHIsIFR5cGVvZkV4cHIs
CiAgICAgICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJhbEV4cHIsIEJpbmRpbmdEZXN0cnVjdHVy
aW5nLCBSZXN0UGFyYW1ldGVyLAogICAgICAgICBBcnJheURlc3RydWN0dXJpbmcsIE9iamVjdERl
c3RydWN0dXJpbmcsIFNvdXJjZUVsZW1lbnRzUmVzdWx0LApAQCAtMTgwLDcgKzE4MCw3IEBAIHB1
YmxpYzoKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vz
cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmll
ciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGNvbnN0IElkZW50aWZpZXIqLCBEb3RUeXBlIHR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IHR5cGUgPT0gRG90VHlwZTo6UHJpdmF0ZUZpZWxkID8gUHJpdmF0ZURvdEV4cHIgOiBEb3RFeHBy
OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBp
bnQpIHsgcmV0dXJuIFlhcnI6Omhhc0Vycm9yKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3Ry
aW5nKCksIGZsYWdzLnN0cmluZygpKSkgPyAwIDogUmVnRXhwRXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQogICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CkBAIC00MDMsNyArNDAzLDEyIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNMb2NhdGlvbihFeHByZXNzaW9uVHlwZSB0eXBlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHR5cGUgPT0gUmVzb2x2ZUV4cHIgfHwgdHlwZSA9PSBEb3RFeHByIHx8
IHR5cGUgPT0gQnJhY2tldEV4cHI7CisgICAgICAgIHJldHVybiB0eXBlID09IFJlc29sdmVFeHBy
IHx8IHR5cGUgPT0gRG90RXhwciB8fCB0eXBlID09IFByaXZhdGVEb3RFeHByIHx8IHR5cGUgPT0g
QnJhY2tldEV4cHI7CisgICAgfQorCisgICAgYm9vbCBpc1ByaXZhdGVMb2NhdGlvbihFeHByZXNz
aW9uVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUHJpdmF0ZURvdEV4
cHI7CiAgICAgfQogCiAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbihFeHByZXNzaW9uVHlw
ZSB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAKaW5kZXggOGU2OTE1MWM3YjZjYjMxMTFiMGZlNzdjZTg5NzMwNzQwNjJm
NWY1YS4uZDVhOWVkOTk5NWUzODcyM2I3ZmJmYWExNWNiZDY5NDJhZDRkNTlkMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3Bw
CkBAIC0yOSw2ICsyOSwxMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorVmFyaWFibGVFbnZpcm9u
bWVudCYgVmFyaWFibGVFbnZpcm9ubWVudDo6b3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmIG90aGVyKQoreworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW52KG90aGVyKTsKKyAg
ICBzd2FwKGVudik7CisgICAgcmV0dXJuICp0aGlzOworfQorCiB2b2lkIFZhcmlhYmxlRW52aXJv
bm1lbnQ6Om1hcmtWYXJpYWJsZUFzQ2FwdHVyZWRJZkRlZmluZWQoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX21h
cC5maW5kKGlkZW50aWZpZXIpOwpAQCAtODAsNiArODcsNyBAQCB2b2lkIFZhcmlhYmxlRW52aXJv
bm1lbnQ6OnN3YXAoVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCiB7CiAgICAgbV9tYXAuc3dh
cChvdGhlci5tX21hcCk7CiAgICAgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZCA9IG90aGVyLm1faXNF
dmVyeXRoaW5nQ2FwdHVyZWQ7CisgICAgbV9yYXJlRGF0YS5zd2FwKG90aGVyLm1fcmFyZURhdGEp
OwogfQogCiB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKQEAgLTEwMCw3ICsx
MDgsNyBAQCBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudDo6Q29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudAogICAgIDogbV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZChlbnYuaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSkKIHsKICAgICBWZWN0b3I8c3RkOjpwYWly
PFVuaXF1ZWRTdHJpbmdJbXBsKiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PiwgMzI+IHNvcnRl
ZEVudHJpZXM7Ci0gICAgc29ydGVkRW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudi5z
aXplKCkpOworICAgIHNvcnRlZEVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbnYubWFw
U2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBlbnYpCiAgICAgICAgIHNvcnRlZEVudHJp
ZXMuYXBwZW5kKHsgcGFpci5rZXkuZ2V0KCksIHBhaXIudmFsdWUgfSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNTMy
ZDE0NmVmZDFmY2FlNTMyNjllNzVkZjZmNWZkYmVhMTk5MmM1Mi4uOWI0MjI4NGFiZmM3MjY4NzE0
OGU5YjQ4ZjNjYzllOTQ0MTAzMWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1
ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKQEAgLTQyLDYgKzQ0LDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNGdW5jdGlvbjsgfQogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc1BhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzUGFyYW1ldGVyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3Rp
bmdDYW5kaWRhdGU7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU5hbWU7IH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAt
NTMsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRnVuY3Rp
b24oKSB7IG1fYml0cyB8PSBJc0Z1bmN0aW9uOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dElzUGFyYW1ldGVyKCkgeyBtX2JpdHMgfD0gSXNQYXJhbWV0ZXI7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJ
c1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc1ByaXZhdGVOYW1lKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTmFtZTsgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAt
NzQsNyArNzgsOCBAQCBwcml2YXRlOgogICAgICAgICBJc0ltcG9ydGVkTmFtZXNwYWNlID0gMSA8
PCA2LAogICAgICAgICBJc0Z1bmN0aW9uID0gMSA8PCA3LAogICAgICAgICBJc1BhcmFtZXRlciA9
IDEgPDwgOCwKLSAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDkK
KyAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCisgICAgICAg
IElzUHJpdmF0ZU5hbWUgPSAxIDw8IDEwLAogICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsg
MCB9OwogfTsKQEAgLTgzLDE1ICs4OCw1NSBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5PgogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CiB9OwogCitz
dHJ1Y3QgUHJpdmF0ZU5hbWVFbnRyeSB7CitwdWJsaWM6CisgICAgUHJpdmF0ZU5hbWVFbnRyeSh1
aW50MTZfdCB0cmFpdHMgPSAwKSB7IG1fYml0cyA9IHRyYWl0czsgfQorCisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQorICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNEZWNsYXJlZDsgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9i
aXRzIHw9IElzVXNlZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkg
eyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQorCisgICAgdWludDE2X3QgYml0cygpIGNvbnN0IHsg
cmV0dXJuIG1fYml0czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1l
RW50cnkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYml0cyA9PSBvdGhl
ci5tX2JpdHM7CisgICAgfQorCisgICAgZW51bSBUcmFpdHMgOiB1aW50MTZfdCB7CisgICAgICAg
IElzVXNlZCA9IDEgPDwgMCwKKyAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKKyAgICB9Owor
Citwcml2YXRlOgorICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKK307CisKK3N0cnVjdCBQcml2
YXRlTmFtZUVudHJ5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8UHJpdmF0ZU5hbWVFbnRyeT4gewor
ICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKK307CisKIGNs
YXNzIFZhcmlhYmxlRW52aXJvbm1lbnQgewogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8
UGFja2VkUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5SGFzaFRyYWl0cz4gTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxQYWNrZWRSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBQcml2YXRlTmFtZUVudHJ5
LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IFByaXZhdGVOYW1lczsKIHB1YmxpYzoKLSAg
ICBWYXJpYWJsZUVudmlyb25tZW50KCkgPSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1l
bnQoVmFyaWFibGVFbnZpcm9ubWVudCYmIG90aGVyKSA9IGRlZmF1bHQ7Ci0gICAgVmFyaWFibGVF
bnZpcm9ubWVudChjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JikgPSBkZWZhdWx0OwotICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jikg
PSBkZWZhdWx0OwotICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShWYXJpYWJsZUVu
dmlyb25tZW50JiYpID0gZGVmYXVsdDsKKyAgICBWYXJpYWJsZUVudmlyb25tZW50KCkgeyB9Cisg
ICAgVmFyaWFibGVFbnZpcm9ubWVudChWYXJpYWJsZUVudmlyb25tZW50JiYgb3RoZXIpCisgICAg
ICAgIDogbV9tYXAoV1RGTW92ZShvdGhlci5tX21hcCkpCisgICAgICAgICwgbV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZChvdGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFy
ZURhdGEoV1RGTW92ZShvdGhlci5tX3JhcmVEYXRhKSkKKyAgICB7CisgICAgfQorICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQoY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpCisgICAgICAg
IDogbV9tYXAob3RoZXIubV9tYXApCisgICAgICAgICwgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZChv
dGhlci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkKQorICAgICAgICAsIG1fcmFyZURhdGEob3RoZXIu
bV9yYXJlRGF0YSA/IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0
YT4oKm90aGVyLm1fcmFyZURhdGEpIDogbnVsbHB0cikKKyAgICB7CisgICAgfQorICAgIFZhcmlh
YmxlRW52aXJvbm1lbnQmIG9wZXJhdG9yPShjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBvdGhl
cik7CiAKICAgICBBTFdBWVNfSU5MSU5FIE1hcDo6aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBt
X21hcC5iZWdpbigpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6Oml0ZXJhdG9yIGVuZCgpIHsg
cmV0dXJuIG1fbWFwLmVuZCgpOyB9CkBAIC05OSw3ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFw
LmVuZCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBNYXA6OkFkZFJlc3VsdCBhZGQoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgeyByZXR1cm4gbV9tYXAuYWRkKGlk
ZW50aWZpZXIsIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgTWFwOjpBZGRSZXN1bHQgYWRkKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0
dXJuIGFkZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX21hcC5zaXplKCkgKyBwcml2YXRlTmFt
ZXNTaXplKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIG1hcFNpemUoKSBjb25zdCB7
IHJldHVybiBtX21hcC5zaXplKCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgY29udGFpbnMo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikgY29uc3QgeyByZXR1
cm4gbV9tYXAuY29udGFpbnMoaWRlbnRpZmllcik7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
cmVtb3ZlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpIHsgcmV0
dXJuIG1fbWFwLnJlbW92ZShpZGVudGlmaWVyKTsgfQogICAgIEFMV0FZU19JTkxJTkUgTWFwOjpp
dGVyYXRvciBmaW5kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
IHsgcmV0dXJuIG1fbWFwLmZpbmQoaWRlbnRpZmllcik7IH0KQEAgLTExNiwxMSArMTYyLDEwNCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc0V2ZXJ5dGhpbmdDYXB0dXJlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiAhbV9tYXAuc2l6ZSgpOyB9CiAKKyAgICB1c2luZyBQcml2YXRlTmFtZXNSYW5nZSA9IFdU
Rjo6SXRlcmF0b3JSYW5nZTxQcml2YXRlTmFtZXM6Oml0ZXJhdG9yPjsKKworICAgIEFMV0FZU19J
TkxJTkUgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwo
KSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdXNlUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcikgeyB1c2VQcml2YXRlTmFtZShpZGVudGlmaWVyLmltcGwoKSk7IH0K
KworICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXV0byYgbWV0YSA9
IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CisgICAgICAgIG1ldGEuc2V0
SXNEZWNsYXJlZCgpOworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVu
dHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgZW50cnku
c2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIHJl
dHVybiBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworICAgIH0KKyAgICB2b2lkIHVzZVBy
aXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCisg
ICAgeworICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVy
LmdldCgpKTsKKyAgICAgICAgbWV0YS5zZXRJc1VzZWQoKTsKKyAgICAgICAgaWYgKG1ldGEuaXNE
ZWNsYXJlZCgpKQorICAgICAgICAgICAgZmluZChpZGVudGlmaWVyKS0+dmFsdWUuc2V0SXNDYXB0
dXJlZCgpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVzUmFuZ2UgcHJp
dmF0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIFVzZSBvZiB0aGUgSXRlcmF0b3JS
YW5nZSBtdXN0IGJlIGd1YXJkZWQgdG8gcHJldmVudCBBU1NFUlQgZmFpbHVyZXMgaW4gY2hlY2tW
YWxpZGl0eSgpLgorICAgICAgICBBU1NFUlQocHJpdmF0ZU5hbWVzU2l6ZSgpID4gMCk7CisgICAg
ICAgIHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5i
ZWdpbigpLCBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB1bnNpZ25lZCBwcml2YXRlTmFtZXNTaXplKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2l6ZSgpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBoYXNQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuY29udGFp
bnMoaWRlbnRpZmllci5pbXBsKCkpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
b3B5UHJpdmF0ZU5hbWVzVG8oVmFyaWFibGVFbnZpcm9ubWVudCYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICghb3RoZXIubV9yYXJlRGF0YSkKKyAgICAgICAgICAgIG90aGVyLm1fcmFyZURhdGEgPSBX
VEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisgICAgICAg
IGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8gZW50
cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAgICAgIGlmICghKGVudHJ5LnZhbHVl
LmlzVXNlZCgpICYmIGVudHJ5LnZhbHVlLmlzRGVjbGFyZWQoKSkpCisgICAgICAgICAgICAgICAg
ICAgIG90aGVyLm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChlbnRyeS5rZXksIGVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvKFZhcmlhYmxlRW52aXJvbm1l
bnQmIG91dGVyKSBjb25zdCB7CisgICAgICAgIC8vIFVzZWQgYnkgdGhlIFBhcnNlciB0byB0cmFu
c2ZlciByZWNvcmRlZCB1c2VzIG9mIFByaXZhdGVOYW1lcyBmcm9tIGFuCisgICAgICAgIC8vIGlu
bmVyIFByaXZhdGVOYW1lRW52aXJvbm1lbnQgaW50byBhbiBvdXRlciBvbmUsIGluIGNhc2UgYSBQ
TkUgaXMgdXNlZAorICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSBzb3VyY2UgY29kZSB0aGFuIGl0
IGlzIGRlZmluZWQuCisgICAgICAgIGlmIChwcml2YXRlTmFtZXNTaXplKCkgPiAwKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgeworICAgICAgICAgICAg
ICAgIGlmIChlbnRyeS52YWx1ZS5pc1VzZWQoKSAmJiAhZW50cnkudmFsdWUuaXNEZWNsYXJlZCgp
KQorICAgICAgICAgICAgICAgICAgICBvdXRlci5nZXRPckFkZFByaXZhdGVOYW1lKGVudHJ5Lmtl
eS5nZXQoKSkuc2V0SXNVc2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzdHJ1Y3QgUmFyZURhdGEgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CisKKyAgICAgICAgUmFyZURhdGEoKSB7IH0KKyAgICAgICAgUmFyZURhdGEoUmFyZURh
dGEmJiBvdGhlcikKKyAgICAgICAgICAgIDogbV9wcml2YXRlTmFtZXMoV1RGTW92ZShvdGhlci5t
X3ByaXZhdGVOYW1lcykpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICBSYXJlRGF0YShj
b25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUmFyZURhdGEmIG9wZXJhdG9yPShj
b25zdCBSYXJlRGF0YSYpID0gZGVmYXVsdDsKKyAgICAgICAgUHJpdmF0ZU5hbWVzIG1fcHJpdmF0
ZU5hbWVzOworICAgIH07CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlZFZhcmlh
YmxlRW52aXJvbm1lbnQ7CiAKICAgICBNYXAgbV9tYXA7CiAgICAgYm9vbCBtX2lzRXZlcnl0aGlu
Z0NhcHR1cmVkIHsgZmFsc2UgfTsKKworICAgIFByaXZhdGVOYW1lRW50cnkmIGdldE9yQWRkUHJp
dmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCisgICAgeworICAgICAgICBpZiAoIW1f
cmFyZURhdGEpCisgICAgICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlh
YmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5hZGQoaW1wbCwgUHJpdmF0ZU5hbWVFbnRyeSgpKS5pdGVyYXRvci0+
dmFsdWU7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFZhcmlhYmxlRW52aXJvbm1lbnQ6
OlJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAogY2xhc3MgQ29tcGFjdFZhcmlhYmxlRW52aXJv
bm1lbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CmluZGV4IGY5ZjYyNGI0NmU5NzUwYmY0OTc4MTFmMzkxYWU0YTc2MjQ0N2Q1MjEuLjNkMjUwNjRk
ZDkyMzcxM2ExNDRkODFmZmNlYjgyMjUyNTEyYjRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTg1Niw2ICs4NTYsMTIgQEAgcHVibGlj
OgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlbmNvZGUoZW5jb2RlciwgeyAqc291cmNlIH0p
OwogICAgIH0KKworICAgIFNvdXJjZVR5cGU8VD4qIGRlY29kZUFzUHRyKERlY29kZXImIGRlY29k
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghdGhpcy0+aXNFbXB0eSgp
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMtPnRlbXBsYXRlIGJ1ZmZlcjxUPigpLT5kZWNvZGUoZGVj
b2Rlcik7CisgICAgfQogfTsKIAogY2xhc3MgQ2FjaGVkU2ltcGxlSnVtcFRhYmxlIDogcHVibGlj
IENhY2hlZE9iamVjdDxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gewpAQCAtMTAwMywyMyArMTAw
OSw0NSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6
ZXIgOiAxOwogfTsKIAorY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudFJhcmVEYXRhIDog
cHVibGljIENhY2hlZE9iamVjdDxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4geworcHVi
bGljOgorICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAgICAgIG1fcHJpdmF0ZU5h
bWVzLmVuY29kZShlbmNvZGVyLCByYXJlRGF0YS5tX3ByaXZhdGVOYW1lcyk7CisgICAgfQorCisg
ICAgdm9pZCBkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVmFyaWFibGVFbnZpcm9ubWVudDo6UmFy
ZURhdGEmIHJhcmVEYXRhKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZGVj
b2RlKGRlY29kZXIsIHJhcmVEYXRhLm1fcHJpdmF0ZU5hbWVzKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQ2FjaGVkSGFzaE1hcDxDYWNoZWRSZWZQdHI8Q2FjaGVkVW5pcXVlZFN0cmluZ0ltcGws
IFVuaXF1ZWRTdHJpbmdJbXBsLCBXVEY6OlBhY2tlZFB0clRyYWl0czxVbmlxdWVkU3RyaW5nSW1w
bD4+LCBQcml2YXRlTmFtZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiwgUHJpdmF0ZU5hbWVFbnRyeUhhc2hUcmFpdHM+IG1fcHJp
dmF0ZU5hbWVzOworfTsKKwogY2xhc3MgQ2FjaGVkVmFyaWFibGVFbnZpcm9ubWVudCA6IHB1Ymxp
YyBDYWNoZWRPYmplY3Q8VmFyaWFibGVFbnZpcm9ubWVudD4gewogcHVibGljOgogICAgIHZvaWQg
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudikK
ICAgICB7CiAgICAgICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBlbnYubV9pc0V2ZXJ5dGhp
bmdDYXB0dXJlZDsKICAgICAgICAgbV9tYXAuZW5jb2RlKGVuY29kZXIsIGVudi5tX21hcCk7Cisg
ICAgICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGVudi5tX3JhcmVEYXRhLmdldCgpKTsK
ICAgICB9CiAKICAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBWYXJpYWJsZUVudmly
b25tZW50JiBlbnYpIGNvbnN0CiAgICAgewogICAgICAgICBlbnYubV9pc0V2ZXJ5dGhpbmdDYXB0
dXJlZCA9IG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiAgICAgICAgIG1fbWFwLmRlY29kZShkZWNv
ZGVyLCBlbnYubV9tYXApOworICAgICAgICBpZiAoIW1fcmFyZURhdGEuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBlbnYubV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmly
b25tZW50OjpSYXJlRGF0YT4oKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPmRlY29kZShkZWNv
ZGVyLCAqZW52Lm1fcmFyZURhdGEpOworICAgICAgICB9CiAgICAgfQogCiBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKICAgICBDYWNoZWRIYXNoTWFwPENhY2hlZFJl
ZlB0cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbCwgVW5pcXVlZFN0cmluZ0ltcGwsIFdURjo6UGFj
a2VkUHRyVHJhaXRzPFVuaXF1ZWRTdHJpbmdJbXBsPj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4sIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeUhhc2hUcmFpdHM+IG1fbWFwOworICAgIENhY2hl
ZFB0cjxDYWNoZWRWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE+IG1fcmFyZURhdGE7CiB9Owog
CiBjbGFzcyBDYWNoZWRDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCA6IHB1YmxpYyBDYWNoZWRP
YmplY3Q8Q29tcGFjdFZhcmlhYmxlRW52aXJvbm1lbnQ+IHsKQEAgLTExNDcsNiArMTE3NSwyMiBA
QCBwcml2YXRlOgogICAgIGludHB0cl90IG1fYml0czsKIH07CiAKK2NsYXNzIENhY2hlZFN5bWJv
bFRhYmxlUmFyZURhdGEgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFN5bWJvbFRhYmxlOjpTeW1ib2xU
YWJsZVJhcmVEYXRhPiB7CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgU3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGEmIHJhcmVEYXRhKQorICAg
IHsKKyAgICAgICAgbV9wcml2YXRlTmFtZXMuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fcHJp
dmF0ZU5hbWVzKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBT
eW1ib2xUYWJsZTo6U3ltYm9sVGFibGVSYXJlRGF0YSYgcmFyZURhdGEpIGNvbnN0CisgICAgewor
ICAgICAgICBtX3ByaXZhdGVOYW1lcy5kZWNvZGUoZGVjb2RlciwgcmFyZURhdGEubV9wcml2YXRl
TmFtZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRIYXNoU2V0PENhY2hlZFJlZlB0
cjxDYWNoZWRVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBtX3ByaXZhdGVO
YW1lczsKK307CisKIGNsYXNzIENhY2hlZFN5bWJvbFRhYmxlIDogcHVibGljIENhY2hlZE9iamVj
dDxTeW1ib2xUYWJsZT4gewogcHVibGljOgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSkKQEAgLTExNTcsNiArMTIwMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgPSBzeW1ib2xUYWJsZS5tX25l
c3RlZExleGljYWxTY29wZTsKICAgICAgICAgbV9zY29wZVR5cGUgPSBzeW1ib2xUYWJsZS5tX3Nj
b3BlVHlwZTsKICAgICAgICAgbV9hcmd1bWVudHMuZW5jb2RlKGVuY29kZXIsIHN5bWJvbFRhYmxl
Lm1fYXJndW1lbnRzLmdldCgpKTsKKyAgICAgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2Rlciwg
c3ltYm9sVGFibGUubV9yYXJlRGF0YS5nZXQoKSk7CiAgICAgfQogCiAgICAgU3ltYm9sVGFibGUq
IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKSBjb25zdApAQCAtMTE3MCw2ICsxMjE1LDExIEBAIHB1
YmxpYzoKICAgICAgICAgU2NvcGVkQXJndW1lbnRzVGFibGUqIHNjb3BlZEFyZ3VtZW50c1RhYmxl
ID0gbV9hcmd1bWVudHMuZGVjb2RlKGRlY29kZXIpOwogICAgICAgICBpZiAoc2NvcGVkQXJndW1l
bnRzVGFibGUpCiAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+bV9hcmd1bWVudHMuc2V0KGRlY29k
ZXIudm0oKSwgc3ltYm9sVGFibGUsIHNjb3BlZEFyZ3VtZW50c1RhYmxlKTsKKyAgICAgICAgaWYg
KCFtX3JhcmVEYXRhLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgc3ltYm9sVGFibGUtPm1fcmFy
ZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8U3ltYm9sVGFibGU6OlN5bWJvbFRhYmxlUmFyZURhdGE+
KCk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5kZWNvZGUoZGVjb2RlciwgKnN5bWJvbFRhYmxl
LT5tX3JhcmVEYXRhKTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZTsK
ICAgICB9CiAKQEAgLTExODAsNiArMTIzMCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9u
ZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOwogICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsKICAg
ICBDYWNoZWRQdHI8Q2FjaGVkU2NvcGVkQXJndW1lbnRzVGFibGU+IG1fYXJndW1lbnRzOworICAg
IENhY2hlZFB0cjxDYWNoZWRTeW1ib2xUYWJsZVJhcmVEYXRhPiBtX3JhcmVEYXRhOwogfTsKIAog
Y2xhc3MgQ2FjaGVkSlNWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCmluZGV4IGI0YjcxNjMzNzM0ZTNjYWQ5OTU3ZTdjZGZkY2RjNzMzMmRlODllYzMu
LmFmZGNjOTAyOTEzNzNmNTBkMDU3MGUzOGM4ZDkzNWEwYWJmYzljOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBVbmxp
bmtlZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwg
Y29uc3QgU291cmNlQ29kZSYgcwogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ2FjaGVUeXBlczxVbmxp
bmtlZENvZGVCbG9ja1R5cGU+OjpSb290Tm9kZSBSb290Tm9kZTsKICAgICBib29sIGlzSW5zaWRl
T3JkaW5hcnlGdW5jdGlvbiA9IGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+aXNJbnNpZGVPcmRp
bmFyeUZ1bmN0aW9uKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJvb3ROb2RlPiByb290Tm9kZSA9
IHBhcnNlPFJvb3ROb2RlPigKLSAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCBzY3JpcHRNb2RlLCBDYWNo
ZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OnBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGRlcml2ZWRD
b250ZXh0VHlwZSwgZXZhbENvbnRleHRUeXBlLCBudWxscHRyLCBudWxscHRyLCBpc0luc2lkZU9y
ZGluYXJ5RnVuY3Rpb24pOworICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFy
c2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIHNjcmlwdE1vZGUsIENhY2hl
VHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVyaXZlZENv
bnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUsIG51bGxwdHIsIHZhcmlhYmxlc1VuZGVyVERaLCBu
dWxscHRyLCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rpb24pOwogICAgIGlmICghcm9vdE5vZGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKaW5kZXggOWEzMDBlNzM2Nzg4OTJiMDU0Njg5
MDVlZWU2YTY0MDFjOTk5NTg2My4uMzU0NDE1Zjk1MjhhZGJiOWMyZWQ1ZTE1YzM1MjU3MDA1NTc2
MDM3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcApAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNkZWZpbmUg
SU5JVElBTElaRV9LRVlXT1JEKG5hbWUpICwgbmFtZSMjS2V5d29yZChJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAjbmFtZSkpCiAjZGVmaW5lIElOSVRJQUxJWkVfUFJJVkFURV9OQU1FKG5hbWUp
ICwgbmFtZSMjUHJpdmF0ZU5hbWUobV9idWlsdGluTmFtZXMtPm5hbWUjI1ByaXZhdGVOYW1lKCkp
CiAjZGVmaW5lIElOSVRJQUxJWkVfU1lNQk9MKG5hbWUpICwgbmFtZSMjU3ltYm9sKG1fYnVpbHRp
bk5hbWVzLT5uYW1lIyNTeW1ib2woKSkKKyNkZWZpbmUgSU5JVElBTElaRV9QUklWQVRFX0ZJRUxE
X05BTUUobmFtZSkgLCBuYW1lIyNQcml2YXRlRmllbGQoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgIiMiICNuYW1lKSkKIAogQ29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZN
JiB2bSkKICAgICA6IG51bGxJZGVudGlmaWVyKCkKQEAgLTQzLDYgKzQ0LDcgQEAgQ29tbW9uSWRl
bnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKFZNJiB2bSkKICAgICBKU0NfQ09NTU9OX0lERU5U
SUZJRVJTX0VBQ0hfS0VZV09SRChJTklUSUFMSVpFX0tFWVdPUkQpCiAgICAgSlNDX0NPTU1PTl9J
REVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJUWV9OQU1FKQog
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KElOSVRJQUxJWkVfU1lNQk9MKQorICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUklW
QVRFX0ZJRUxEKElOSVRJQUxJWkVfUFJJVkFURV9GSUVMRF9OQU1FKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA4
ZGJjNmQ3YWMxODdiNzE5ZDA0NTI2NTcwMjgwOTYxNjIyOWQ1OGRjLi44NTU4YmFiOTBjZTVkOGJi
M2RkMTA4ZTA4NDVmOGE1Mjk0ZjQ1ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTIwOSw2ICsyMDksOSBAQAogICAgIG1h
Y3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikKIAorI2RlZmluZSBKU0NfQ09NTU9OX0lE
RU5USUZJRVJTX0VBQ0hfUFJJVkFURV9GSUVMRChtYWNybykgXAorICAgIG1hY3JvKGNvbnN0cnVj
dG9yKQorCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9LRVlXT1JEKG1hY3Jv
KSBcCiAgICAgbWFjcm8oYXdhaXQpIFwKICAgICBtYWNybyhicmVhaykgXApAQCAtMzIzLDYgKzMy
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklW
QVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTCkKICN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNM
QVJFX1BSSVZBVEVfV0VMTF9LTk9XTl9TWU1CT0xfR0xPQkFMCiAKKyNkZWZpbmUgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG5hbWUjI1ByaXZhdGVGaWVsZDsKKyAgICAgICAgSlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNI
X1BSSVZBVEVfRklFTEQoSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRFX0ZJRUxEX0dMT0JB
TCkKKyN1bmRlZiBKU0NfSURFTlRJRklFUl9ERUNMQVJFX1BSSVZBVEVfRklFTERfR0xPQkFMCisK
ICAgICAgICAgLy8gQ2FsbGVycyBvZiB0aGlzIG1ldGhvZCBzaG91bGQgbWFrZSBzdXJlIHRoYXQg
aWRlbnRpZmllcnMgZ2l2ZW4gdG8gdGhpcyBtZXRob2QgCiAgICAgICAgIC8vIHN1cnZpdmUgdGhl
IGxpZmV0aW1lIG9mIENvbW1vbklkZW50aWZpZXJzIGFuZCByZWxhdGVkIFZNLgogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZEV4dGVybmFsTmFtZShjb25zdCBJZGVudGlmaWVy
JiBwdWJsaWNOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBwcml2YXRlTmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAzMDM0
NGMxMjBlMmRiMzczYzNlMDRkNGI2Zjg2OGI3NTY4MDIwOGI5Li4zNDVhODFjNTFiYjFjYWViMTM2
MWRjNzQ1ODhmZjhjNzIxZGEwNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEzMzMsNiArMTMzMywyOCBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgUkVUVVJOX1BST0ZJ
TEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkpOwogfQogCitT
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKK3sKKyAgICBCRUdJTigp
OworCisgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldFByaXZhdGVOYW1lPigpOworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5qc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBHRVRfQyhieXRlY29kZS5tX3Byb3BlcnR5KS5qc1ZhbHVl
KCk7CisgICAgQVNTRVJUKHN1YnNjcmlwdC5pc1N5bWJvbCgpKTsKKworICAgIGJhc2VWYWx1ZS5y
ZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9i
amVjdCk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJp
dmF0ZU5hbWUoKSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7CisgICAgYXNPYmplY3Qo
YmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3Qp
OworICAgIENIRUNLX0VYQ0VQVElPTigpOworCisgICAgUkVUVVJOX1BST0ZJTEVEKHNsb3QuZ2V0
VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpOworfQorCiBTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcykKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBiZTM3NGEwZTYy
NmYyZGY4MzMwYmFjNDkyMzg5NjA4MWM0YWE0MzlkLi5hNzZiZjNlYWJlNGEwZjVlNDQ3NTBmNzE2
NTAzOTdkY2RkOTg2ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMjc1LDYgKzI3NSw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfY3JlYXRlX2FzeW5jX2dlbmVyYXRvcik7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9yZXN0KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2dldF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Z2V0X3ByaXZhdGVfbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
dmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlZmluZV9k
YXRhX3Byb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAKaW5kZXggOGM5Y2EwMzQ3NjA0OTZiMGE2YWVhZjBmODI2ZmIzNjQ2
NjNkYzBkNy4uNDE0ZTdiZGY3N2FiNGZjNzY0YjU2NWRmNmYxYmQ0YTBkNjRiMzBjYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAK
QEAgLTMyNCw2ICszMjQsMTYgQEAgSlNPYmplY3QqIGNyZWF0ZVREWkVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS4iKTsKIH0KIAor
SlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1
bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworfQorCitKU09iamVjdCogY3JlYXRlUmVk
ZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorewor
ICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5u
b3QgcmVkZWZpbmUgZXhpc3RpbmcgcHJpdmF0ZSBmaWVsZCIpLCBkZWZhdWx0U291cmNlQXBwZW5k
ZXIsIFR5cGVOb3RoaW5nKTsKK30KKwogRXhjZXB0aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZU91dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmgKaW5kZXggZTlhNTIzMWZjNTY0YjA3ZGQzOWQxY2FjMTQ2
OTA5NWEzZGJkNDEyYy4uZTFiN2UwMjExOGQ0OGI1ZjU0NDg3NDViZDM2NGEyZTkzOTk3M2I3MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMu
aApAQCAtNTMsNiArNTMsOCBAQCBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJh
bWV0ZXJFcnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsbwogSlNPYmplY3QqIGNy
ZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiBKU09i
amVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IEpTT2JqZWN0KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJik7CitKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVO
YW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqKTsKK0pTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2
YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0Kik7CiBTdHJpbmcgZXJyb3JEZXNjcmlwdGlvbkZv
clZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29w
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGNmM2UwYWU3OWVlYTM5NjQyYThkZGZlN2JhN2ZhMjliZGFhOGVmYTEuLjIzZjQw
Y2U0YjNlNjBmM2I4OGE4M2FiZDVlNmJkMjM1NDliMjhkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTI5NCw2ICsyOTQsMTQg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgaGFzT3duTGVuZ3RoUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odGFyZ2V0LT5oYXNPd25Qcm9wZXJ0eShnbG9iYWxP
YmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkpKSk7CiB9CiAKKy8vIEZJWE1FOiB1c2Ug
YSBieXRlY29kZSBvciBpbnRyaW5zaWMgZm9yIGNyZWF0aW5nIGEgcHJpdmF0ZSBzeW1ib2wuCisv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzgyCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjcmVhdGVQcml2YXRlU3ltYm9sKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3ltYm9sOjpjcmVhdGUo
dm0sIFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkuZ2V0KCkpKTsKK30KKwog
I2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
c3NlcnRDYWxsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQogewpAQCAtMTIyNSw2ICsxMjMzLDExIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciksIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jRGF0ZVRp
bWVGb3JtYXQpKTsKICAgICAgICAgfSk7CiAKKyAgICAvLyBQcml2YXRlU3ltYm9scyAvIFByaXZh
dGVOYW1lcworICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExp
bmtUaW1lQ29uc3RhbnQ6OmNyZWF0ZVByaXZhdGVTeW1ib2wpXS5pbml0TGF0ZXIoW10gKGNvbnN0
IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKKyAgICAgICAgICAgIGluaXQuc2V0KEpTRnVu
Y3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVy
KSwgMCwgU3RyaW5nKCksIGNyZWF0ZVByaXZhdGVTeW1ib2wpKTsKKyAgICAgICAgfSk7CisKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpICYmIEVOQUJMRShXRUJBU1NFTUJMWV9TVFJFQU1JTkdfQVBJ
KQogICAgIC8vIFdlYkFzc2VtYmx5IFN0cmVhbWluZyBBUEkKICAgICBtX2xpbmtUaW1lQ29uc3Rh
bnRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihMaW5rVGltZUNvbnN0YW50Ojp3ZWJBc3NlbWJseUNv
bXBpbGVTdHJlYW1pbmdJbnRlcm5hbCldLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
SlNDZWxsPiYgaW5pdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
aW5kZXggMmZkNmQ5NzQ5ZDFjNmJjMDI1ZTNmNGFmNGQ0MWY3ODRjNDg5M2Q1Ni4uNzk5YTc3OTg2
Y2UwMGEzZjVjMzE2NDdkNTU3ZGIwNWMwMWI0MDc3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCkBAIC0xODAsNiArMTgwLDExIEBAIHB1YmxpYzoKICAgICAvLyBi
ZWluZyByZXR1cm5lZC4gT25jZSB0aGlzIGlzIGZpeGVkIHdlIHNob3VsZCBtaWdyYXRlIGNvZGUg
JiByZW1vdmUgdGhpcyBtZXRob2QuCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5
RGVzY3JpcHRvciYpOwogCisgICAgc3RhdGljIGJvb2wgZ2V0UHJpdmF0ZUZpZWxkU2xvdChKU09i
amVjdCosIEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKKyAg
ICBpbmxpbmUgYm9vbCBnZXRQcml2YXRlRmllbGQoSlNHbG9iYWxPYmplY3QqLCBQcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYpOworICAgIGlubGluZSB2b2lkIHB1dFByaXZhdGVGaWVsZChKU0ds
b2JhbE9iamVjdCosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Cisg
ICAgaW5saW5lIHZvaWQgZGVmaW5lUHJpdmF0ZUZpZWxkKEpTR2xvYmFsT2JqZWN0KiwgUHJvcGVy
dHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKKwogICAgIHVuc2lnbmVkIGdldEFy
cmF5TGVuZ3RoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzSW5kZXhlZFByb3BlcnRp
ZXMoaW5kZXhpbmdUeXBlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdElubGluZXMuaAppbmRleCAyMGYxZDg1NjAzOTI1YTY4ZjU0YTYzODhmNWY2Y2EwMTRm
Y2I4YTk4Li5lYjc2ZmFjMWE1MDEyMmM1NzBlNDQ5M2U5ZGVmY2NhNjg5ODY1Y2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdElubGluZXMuaApAQCAtNTY5
LDQgKzU2OSw3NiBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6Z2V0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90IHByb3BlcnR5TmFtZQogICAgIHJldHVybiBnZXQoZ2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKGdsb2JhbE9iamVjdC0+dm0oKSwgcHJvcGVydHlO
YW1lKSk7CiB9CiAKK0pTT2JqZWN0KiBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihKU0ds
b2JhbE9iamVjdCopOworSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3Io
SlNHbG9iYWxPYmplY3QqKTsKKworQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRQcml2
YXRlRmllbGRTbG90KEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAg
ICBBU1NFUlQocHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSk7CisgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iamVjdC0+c3Ry
dWN0dXJlKHZtKTsKKworICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CisgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQodm0sIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcyk7
CisgICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qob2Zmc2V0KTsKKyAgICBB
U1NFUlQodmFsdWUpOworICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICBKU0NlbGwq
IGNlbGwgPSB2YWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgSlNUeXBlIHR5cGUgPSBjZWxsLT50eXBl
KCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShjZWxsKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRCh0
eXBlLCB0eXBlICE9IEdldHRlclNldHRlclR5cGUgJiYgdHlwZSAhPSBDdXN0b21HZXR0ZXJTZXR0
ZXJUeXBlKTsKKyAgICAgICAgLy8gRklYTUU6IEZvciBub3csIHByaXZhdGUgZmllbGRzIGRvIG5v
dCBzdXBwb3J0IGdldHRlci9zZXR0ZXIgZmllbGRzLiBMYXRlciBvbiwgd2Ugd2lsbCBuZWVkIHRv
IGZpbGwgaW4gYWNjZXNzb3IgbWV0YWRhdGEgaGVyZSwKKyAgICAgICAgLy8gYXMgaW4gSlNPYmpl
Y3Q6OmdldE93bk5vbkluZGV4UHJvcGVydHlTbG90KCkKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQorICAgIH0KKworICAgIHNsb3Quc2V0
VmFsdWUob2JqZWN0LCBhdHRyaWJ1dGVzLCB2YWx1ZSwgb2Zmc2V0KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByaXZhdGVGaWVsZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgaWYgKCFKU09iamVjdDo6Z2V0
UHJpdmF0ZUZpZWxkU2xvdCh0aGlzLCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkp
IHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSW52
YWxpZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgZmFsc2UpOworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0cnVlKTsKK30K
KworaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dFByaXZhdGVGaWVsZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQ
dXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgUHJv
cGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6Okhh
c1Byb3BlcnR5KTsKKyAgICBpZiAoIUpTT2JqZWN0OjpnZXRQcml2YXRlRmllbGRTbG90KHRoaXMs
IGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkgeworICAgICAgICB0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcihn
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB2b2lkKCkp
OworICAgIH0KKyAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisKKyAg
ICBzY29wZS5yZWxlYXNlKCk7CisgICAgcHV0RGlyZWN0KHZtLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
LCBwdXRTbG90KTsKK30KKworaW5saW5lIHZvaWQgSlNPYmplY3Q6OmRlZmluZVByaXZhdGVGaWVs
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNsb3QpCit7CisgICAgVk0mIHZt
ID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcywgUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKyAgICBpZiAoSlNPYmplY3Q6OmdldFByaXZh
dGVGaWVsZFNsb3QodGhpcywgZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZGVmaW5l
ZFByaXZhdGVOYW1lRXJyb3IoZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgdm9pZCgpKTsKKyAgICB9CisgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUu
ZXhjZXB0aW9uKCkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIHB1dERpcmVjdCh2bSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgcHV0U2xvdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcAppbmRleCAxZmU3ZDY3Mjlk
Mjk3NWZhYWY5YTIzMWIzZWQxNTZlMjhiMDc1NmVkLi4wZWI1Mjc4ZjQzMmU0YTQ1Y2I5MGFmY2Q0
YTMzMDgxMDY4ZGZlNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Njb3BlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmNwcApAQCAtMzM3LDYgKzMzNywxMCBAQCB2b2lkIEpTU2NvcGU6OmNvbGxlY3RDbG9zdXJlVmFy
aWFibGVzVW5kZXJURFooSlNTY29wZSogc2NvcGUsIFZhcmlhYmxlRW52aXJvbm1lbgogICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOwogICAgICAg
ICBmb3IgKGF1dG8gZW5kID0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpLCBpdGVyID0gc3ltYm9s
VGFibGUtPmJlZ2luKGxvY2tlcik7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKGl0ZXItPmtleSk7CisgICAgICAgIGlmIChzeW1ib2xUYWJsZS0+aGFzUHJpdmF0
ZU5hbWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byBuYW1lIDogc3ltYm9sVGFibGUtPnBy
aXZhdGVOYW1lcygpKQorICAgICAgICAgICAgICAgIHJlc3VsdC51c2VQcml2YXRlTmFtZShuYW1l
KTsgICAgCisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCmluZGV4IDkzZTA3ZWQ3MTA5NTM2NGM3YTFiMWQ0Yjk0ZTRhNDc4
YzU0NjU3NGQuLmFkYWYwNjkxYzlhNmIyYTk4OTk3NzAxYTYzMjdjZjQzZjM2NTQyMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTEwLDYgKzUx
MCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFs
c2U7CiAgICAgdihCb29sLCB1c2VQdWJsaWNDbGFzc0ZpZWxkcywgdHJ1ZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgdGhlIHBhcnNlciB3aWxsIHVuZGVyc3RhbmQgcHVibGljIGRhdGEgZmllbGRzIGluc2lk
ZSBjbGFzc2VzLiIpIFwKICAgICB2KEJvb2wsIHVzZVJhbmRvbWl6aW5nRXhlY3V0YWJsZUlzbGFu
ZEFsbG9jYXRpb24sIGZhbHNlLCBOb3JtYWwsICJGb3IgdGhlIGFybTY0IEV4ZWN1dGFibGVBbGxv
Y2F0b3IsIGlmIHRydWUsIHNlbGVjdCB3aGljaCByZWdpb24gdG8gdXNlIHJhbmRvbWx5LiBUaGlz
IGlzIHVzZWZ1bCBmb3IgdGVzdGluZyB0aGF0IGp1bXAgaXNsYW5kcyB3b3JrLiIpIFwKICAgICB2
KEJvb2wsIGV4cG9zZVByb2ZpbGVyc09uR2xvYmFsT2JqZWN0LCBmYWxzZSwgTm9ybWFsLCAiSWYg
dHJ1ZSwgd2Ugd2lsbCBleHBvc2UgZnVuY3Rpb25zIHRvIGVuYWJsZS9kaXNhYmxlIGJvdGggdGhl
IHNhbXBsaW5nIHByb2ZpbGVyIGFuZCB0aGUgc3VwZXIgc2FtcGxlciIpIFwKKyAgICB2KEJvb2ws
IHVzZVByaXZhdGVDbGFzc0ZpZWxkcywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHRoZSBwYXJz
ZXIgd2lsbCB1bmRlcnN0YW5kIHByaXZhdGUgZGF0YSBmaWVsZHMgaW5zaWRlIGNsYXNzZXMuIikg
XAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKICAgICBTYW1lT3B0aW9uLApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuY3BwCmluZGV4IGNiYWI0NmNlNTQ1
NGUyM2YzNDgyZWJkYmMwYjY5Y2EyNjk1NjdmZjUuLjE2NGNhNmQ0MzEwZTZiYjM4ZTY0N2UyZjZi
ZTJmOWY3ZDlmMzI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xUYWJsZS5jcHAKQEAgLTE4MSw2ICsxODEsMTEgQEAgU3ltYm9sVGFibGUqIFN5bWJvbFRhYmxl
OjpjbG9uZVNjb3BlUGFydChWTSYgdm0pCiAgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7
ICsraXRlcikKICAgICAgICAgICAgICAgICByZXN1bHQtPm1fcmFyZURhdGEtPm1fdW5pcXVlVHlw
ZVNldE1hcC5zZXQoaXRlci0+a2V5LCBpdGVyLT52YWx1ZSk7CiAgICAgICAgIH0KKworICAgICAg
ICB7CisgICAgICAgICAgICBmb3IgKGF1dG8gbmFtZSA6IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzKQorICAgICAgICAgICAgICAgIHJlc3VsdC0+bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
YWRkKG5hbWUpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiByZXN1bHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAppbmRleCBlMjM0ZDMx
NGM2OWVkMmQxMTEzMjM5MTRiYTI3ZDNkOTMxNTUyNjc2Li4zMWY4MWZhZTAyZmIyMDFkMzIxOGJi
MGZiNGM1MmQyMjFmNGNkNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2xUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFRhYmxlLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAj
aW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xJ
bXBsLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NTAsNiArNDUwLDggQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWZQdHI8VHlw
ZVNldD4sIElkZW50aWZpZXJSZXBIYXNoPiBVbmlxdWVUeXBlU2V0TWFwOwogICAgIHR5cGVkZWYg
SGFzaE1hcDxWYXJPZmZzZXQsIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IE9mZnNldFRvVmFy
aWFibGVNYXA7CiAgICAgdHlwZWRlZiBWZWN0b3I8U3ltYm9sVGFibGVFbnRyeSo+IExvY2FsVG9F
bnRyeVZlYzsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwg
SWRlbnRpZmllclJlcEhhc2g+IFByaXZhdGVOYW1lU2V0OworICAgIHR5cGVkZWYgV1RGOjpJdGVy
YXRvclJhbmdlPHR5cGVuYW1lIFByaXZhdGVOYW1lU2V0OjppdGVyYXRvcj4gUHJpdmF0ZU5hbWVJ
dGVyYXRvclJhbmdlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNl
QWNjZXNzPgogICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQpAQCAt
NTk0LDcgKzU5NiwyNSBAQCBwdWJsaWM6CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKICAgICAgICAgYWRkKGxvY2tlciwga2V5LCBzdGQ6OmZvcndhcmQ8RW50cnk+
KGVudHJ5KSk7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBoYXNQcml2YXRlTmFtZXMoKSBjb25z
dCB7IHJldHVybiBtX3JhcmVEYXRhICYmIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNpemUo
KTsgfQorICAgIEFMV0FZU19JTkxJTkUgUHJpdmF0ZU5hbWVJdGVyYXRvclJhbmdlIHByaXZhdGVO
YW1lcygpCisgICAgeworICAgICAgICAvLyBVc2Ugb2YgdGhlIEl0ZXJhdG9yUmFuZ2UgbXVzdCBi
ZSBndWFyZGVkIHRvIHByZXZlbnQgQVNTRVJUIGZhaWx1cmVzIGluIGNoZWNrVmFsaWRpdHkoKS4K
KyAgICAgICAgQVNTRVJUKGhhc1ByaXZhdGVOYW1lcygpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VJ
dGVyYXRvclJhbmdlKG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmJlZ2luKCksIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKTsKKyAgICB9CisKKyAgICB2b2lkIGFkZFByaXZhdGVO
YW1lKFVuaXF1ZWRTdHJpbmdJbXBsKiBrZXkpCisgICAgeworICAgICAgICBBU1NFUlQoa2V5ICYm
ICFrZXktPmlzU3ltYm9sKCkpOworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAg
ICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFN5bWJvbFRhYmxlUmFyZURhdGE+KCk7CisK
KyAgICAgICAgQVNTRVJUKCFtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5jb250YWlucyhrZXkp
KTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGtleSk7CisgICAgfQor
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnk+CiAgICAgdm9pZCBzZXQoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgVW5pcXVlZFN0cmluZ0ltcGwqIGtleSwgRW50cnkmJiBlbnRyeSkKICAg
ICB7CkBAIC03MjksMTggKzc0OSwyMSBAQCBwcml2YXRlOgogICAgIFNjb3BlT2Zmc2V0IG1fbWF4
U2NvcGVPZmZzZXQ7CiBwdWJsaWM6CiAgICAgbXV0YWJsZSBDb25jdXJyZW50SlNMb2NrIG1fbG9j
azsKLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV91c2VzTm9uU3RyaWN0RXZhbCA6IDE7Ci0gICAg
dW5zaWduZWQgbV9uZXN0ZWRMZXhpY2FsU2NvcGUgOiAxOyAvLyBOb24tZnVuY3Rpb24gTGV4aWNh
bFNjb3BlLgotICAgIHVuc2lnbmVkIG1fc2NvcGVUeXBlIDogMzsgLy8gU2NvcGVUeXBlCi0gICAg
CisKICAgICBzdHJ1Y3QgU3ltYm9sVGFibGVSYXJlRGF0YSB7CiAgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgVW5pcXVlSURNYXAgbV91bmlxdWVJRE1hcDsK
ICAgICAgICAgT2Zmc2V0VG9WYXJpYWJsZU1hcCBtX29mZnNldFRvVmFyaWFibGVNYXA7CiAgICAg
ICAgIFVuaXF1ZVR5cGVTZXRNYXAgbV91bmlxdWVUeXBlU2V0TWFwOwogICAgICAgICBXcml0ZUJh
cnJpZXI8Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKKyAgICAgICAgUHJpdmF0ZU5hbWVTZXQgbV9w
cml2YXRlTmFtZXM7CiAgICAgfTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX3VzZXNOb25T
dHJpY3RFdmFsIDogMTsKKyAgICB1bnNpZ25lZCBtX25lc3RlZExleGljYWxTY29wZSA6IDE7IC8v
IE5vbi1mdW5jdGlvbiBMZXhpY2FsU2NvcGUuCisgICAgdW5zaWduZWQgbV9zY29wZVR5cGUgOiAz
OyAvLyBTY29wZVR5cGUKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW1ib2xUYWJsZVJhcmVEYXRh
PiBtX3JhcmVEYXRhOwogCiAgICAgV3JpdGVCYXJyaWVyPFNjb3BlZEFyZ3VtZW50c1RhYmxlPiBt
X2FyZ3VtZW50czsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZjBmMzljNjk3OWUwZDQ3MTUxMDUxOWViODEwMmYxMTE5NDQzMmJlMy4uZmQy
OGJkZjc3Nzk3ZTY5ZGViYmU1MmY3NDk0NWNjZjFjZjFmZTFmMSAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAy
MC0wNi0wNCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtK
U0NdIEFkZCBzdXBwb3J0IGZvciBwcml2YXRlIGNsYXNzIGZpZWxkcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NDMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgRXhwYW5kcyB1cG9uIHRoZSBlYXJsaWVyIHB1
YmxpYyBmaWVsZHMgcGF0Y2gsIGFkZGluZyBhIG51bWJlciBvZiBwcml2YXRlCisgICAgICAgIGZp
ZWxkIHRlc3RzLgorCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWFzLWZ1
bmN0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
Y2FjaGVkLWJ5dGVjb2RlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtZnJlZXplLW91dC1vZi1saW5lLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtZnJlZXplLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtb24tcHJveHkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZlbnQtZXh0ZW5zaW9ucy1vdXQtb2YtbGlu
ZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLXByZXZl
bnQtZXh0ZW5zaW9ucy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLXNlYWwtb3V0LW9mLWxpbmUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFz
cy1maWVsZHMtcHJpdmF0ZS1zZWFsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvY2xhc3Mt
ZmllbGRzLXByaXZhdGUtdXNlLWV2YWwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9jbGFz
cy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzOgorICAgICAgICAqIHN0cmVzcy9vcHRpb25hbC1j
aGFpbmluZy1hbmQtcHJpdmF0ZS1maWVsZHMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9w
cml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtYWRkcHJpdmF0ZS5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanM6IEFkZGVkLgorICAg
ICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMDYtMDQgIEFsZXhleSBTaHZheWth
ICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYyIHRvIGNv
bW1pdCAyOTBjZWJhMzFmZWEKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxk
cy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtYXMtZnVuY3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhhMTE2M2UxNjdlZDBkNmM1ZjY3NjU2
ZDAxYjM0ZDg4Y2I3NGYyZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNz
LWZpZWxkcy1wcml2YXRlLWFzLWZ1bmN0aW9uLmpzCkBAIC0wLDAgKzEsMTggQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNt
ID0gKCkgPT4gMjU7CisKKyAgICBtZXRob2QoKSB7CisgICAgICAgIHJldHVybiB0aGlzLiNtKCk7
CisgICAgfQorfQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMjUpOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQt
Ynl0ZWNvZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1jYWNoZWQt
Ynl0ZWNvZGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDJhNGY0MzU0Zjg5N2YxMTM3NDA4NzEyNjA0NmM2ZjFk
ZmQzZTdlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1w
cml2YXRlLWNhY2hlZC1ieXRlY29kZS5qcwpAQCAtMCwwICsxLDE4IEBACisvL0AgcnVuQnl0ZWNv
ZGVDYWNoZSgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQ6ICIgKyBlICsgIiBidXQgZ290OiAiICsgYSk7Cit9CisKK2NsYXNzIEMgeworICAgICNm
ID0gMzsKKworICAgIG1ldGhvZCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuI2Y7CisgICAgfQor
fQorCitsZXQgYyA9IG5ldyBDKCk7Cithc3NlcnQoYy5tZXRob2QoKSwgMyk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2YtbGlu
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS1vdXQtb2Yt
bGluZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YjUzZjZiMjMxMDdkZGFhMmI0NWJjM2YwNThlYWJmMTFjZjAx
OTNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtZnJlZXplLW91dC1vZi1saW5lLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisKK2xldCBhc3NlcnQgPSBPYmplY3Qu
YXNzaWduKAorICBmdW5jdGlvbiBhc3NlcnQoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYg
KGV4cHIgPT0gZmFsc2UpCisgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7bWVzc2Fn
ZSB8fCAiZXhwciJ9IHRvIGJlIHRydWUsIGJ1dCB3YXMgJHtleHByfWApOworICB9LCB7CisgIGVx
dWFscyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwg
KGEgIT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJy
b3IoYEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2Ug
Y2xhc3MgaXMgZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRk
IGVub3VnaAorLy8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVs
ZHMgaW4gb3V0LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNs
YXNzIEJhc2UgeworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmlu
ZSBwcm9wZXJ0aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtp
fSA9ICR7aX07XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxk
QWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QuZnJl
ZXplKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNzZXJ0KE9iamVjdC5pc0Zyb3plbih0aGlz
KSwgIk9iamVjdC5pc0Zyb3plbih0aGlzKSIpLCB0aGlzLiNpICsgMSk7CisKKyAgZ2V0KCkgeyBy
ZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlzLiNpID0gaTsgfQorfQorCitmdW5jdGlv
biB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5z
aW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09IDE1MCk7CisgIGMueDE1MCA9IDAuMTsK
KyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1
YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEp
OwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1mcmVlemUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjQyY2MwZmY5MmQ2YmFjOWM4NGQ5MDY5NDM0ZjNiNzdkN2RmNWIyMgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLWZyZWV6ZS5qcwpAQCAt
MCwwICsxLDQzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRz
PTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4
cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZhbHNlKQorICAgICAgdGhyb3cg
bmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSB0cnVlLCBidXQg
d2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMoYSwgYikgeworICAgIGlmIChhID09PSBi
IHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYmIGIgIT09IGIpKQorICAgICAg
cmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2F9IHRvIGJlICR7Yn1g
KTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlz
LnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lv
bnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LmZyZWV6ZSh0aGlzKSwgNDIpOworICAj
YXNzZXJ0ID0gKGFzc2VydChPYmplY3QuaXNGcm96ZW4odGhpcyksICJPYmplY3QuaXNGcm96ZW4o
dGhpcykiKSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAg
c2V0KGkpIHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBj
ID0gbmV3IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGMueCA9IDAuMTsK
KyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1
YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEp
OwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW9uLXByb3h5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc2MWY3MThkOTc0MjcwYWM4YTE5ZTVmN2JmMDUyMDBkZWI5Mzc2Y2QKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vbi1wcm94eS5q
cwpAQCAtMCwwICsxLDM5IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNz
RmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydEFycmF5
Q29udGVudChhLCBlKSB7CisgICAgYXNzZXJ0KGEubGVuZ3RoLCBlLmxlbmd0aCwgIlNpemUgb2Yg
YXJyYXlzIGRvZXNuJ3QgbWF0Y2giKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3Ro
OyBpKyspCisgICAgICAgIGFzc2VydChhW2ldLCBlW2ldLCAiYVsiICsgaSArICJdID0gIiArIGFb
aV0gKyAiIGJ1dCBlWyIgKyBpICsgIl0gPSAiICsgZVtpXSk7Cit9CisKK2xldCBhcnIgPSBbXTsK
KworY2xhc3MgUHJveHlCYXNlIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJu
IG5ldyBQcm94eSh0aGlzLCB7CisgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIChvYmosIHByb3Ap
IHsKKyAgICAgICAgICAgICAgICBhcnIucHVzaChwcm9wKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gb2JqW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9Cit9CisKK2Ns
YXNzIFRlc3QgZXh0ZW5kcyBQcm94eUJhc2UgeworICAgICNmID0gMzsKKyAgICBtZXRob2QoKSB7
CisgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgIH0KK30KKworbGV0IHQgPSBuZXcgVGVzdCgp
OworbGV0IHIgPSB0Lm1ldGhvZCgpOworYXNzZXJ0KHIsIDMsICJFeHBlY3RlZDogMyBidXQgZ290
OiAiICsgcik7CisKK2Fzc2VydEFycmF5Q29udGVudChhcnIsIFsnbWV0aG9kJ10pOworCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2YtbGluZS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1wcml2YXRlLW91dC1vZi1saW5lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY5ZDg2MjE2MDFkNWRlMzRhNDI4MzQ2ZDUxY2NmODIyZmJmNTYwYTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1vdXQtb2Yt
bGluZS5qcwpAQCAtMCwwICsxLDI4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9
PSBlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdv
dDogIiArIGEpOworfQorCitsZXQga2xhc3NTb3VyY2UgPSBgCit2YXIgQyA9IGNsYXNzIHsKKyAg
ICBhc3NlcnRPdXRPZkxpbmVWYWx1ZSgpIHsKKyAgICAgICAgYXNzZXJ0KHRoaXMuI2YyMDAsICJm
b28iKTsKKyAgICB9CitgOworCisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMjAwOyBpKyspIHsKKyAg
ICBrbGFzc1NvdXJjZSArPSAiICAgICNmIiArIGkgKyAiO1xuIjsKK30KKwora2xhc3NTb3VyY2Ug
Kz0gIiAgICAjZjIwMCA9IFwiZm9vXCI7XG59IjsKKworZXZhbChrbGFzc1NvdXJjZSk7CisKK2Zv
ciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMu
YXNzZXJ0T3V0T2ZMaW5lVmFsdWUoKTsKK30KKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Y2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91dC1vZi1saW5lLmpzIGIv
SlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLW91
dC1vZi1saW5lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyZGI4YjE2YWUwZDVjYjdmM2Y1NTg1MjdlNDAwZWI1
MjJjMWIzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMt
cHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMtb3V0LW9mLWxpbmUuanMKQEAgLTAsMCArMSw1MiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKworbGV0
IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBtZXNzYWdl
ID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAke2V4cHJ9
YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYgKGV4cHIg
PT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJl
eHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFscyhhLCBi
KSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEgIT09IGEg
JiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVj
dGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworLy8gVGhlIGJhc2UgY2xhc3MgaXMg
ZGVjbGFyZWQgaW4gZXZhbCBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBjYW4gYWRkIGVub3VnaAor
Ly8gcHJvcGVydGllcyB0byB0aGUgY2xhc3MgdG8gc3RvcmUgcHJpdmF0ZSBmaWVsZHMgaW4gb3V0
LW9mLWxpbmUgcHJvcGVydHkgc3RvcmFnZS4KK2xldCBCYXNlID0gZXZhbChgKGNsYXNzIEJhc2Ug
eworICAvLyBNZXRob2RzCisgIGNvbnN0cnVjdG9yKCkgeworICAgIC8vIERlZmluZSBwcm9wZXJ0
aWVzCisgICAgJHtBcnJheSgyMDApLm1hcCgoXywgaSkgPT4gYCAgdGhpcy54JHtpfSA9ICR7aX07
XG5gKS5qb2luKCIiKX0KKyAgfQorfSlgKTsKKworY2xhc3MgUHJpdmF0ZUZpZWxkQWZ0ZXJQcmV2
ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmplY3QucHJldmVudEV4dGVu
c2lvbnModGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQuZmFsc2UoT2JqZWN0LmlzRXh0
ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5pc0V4dGVuc2libGUodGhpcykiKSwgdGhpcy4jaSArIDEp
OworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkpIHsgdGhpcy4jaSA9IGk7
IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3IFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGFzc2VydC5lcXVhbHMoYy54MTUwID09PSAxNTApOwor
ICBjLngxNTAgPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChp
KTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0
ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytp
KQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRz
LXByaXZhdGUtcHJldmVudC1leHRlbnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzNjA5NzI3ODE0ZmM2
MDVlMTA0YzY2NGQ2ZTNlNjBlMmQ0YzVjMzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1wcmV2ZW50LWV4dGVuc2lvbnMuanMKQEAgLTAsMCAr
MSw0NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikK
KworbGV0IGFzc2VydCA9IE9iamVjdC5hc3NpZ24oCisgIGZ1bmN0aW9uIGFzc2VydChleHByLCBt
ZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSBmYWxzZSkKKyAgICAgIHRocm93IG5ldyBF
cnJvcihgRXhwZWN0ZWQgJHttZXNzYWdlIHx8ICJleHByIn0gdG8gYmUgdHJ1ZSwgYnV0IHdhcyAk
e2V4cHJ9YCk7CisgIH0sIHsKKyAgZmFsc2UoZXhwciwgbWVzc2FnZSA9ICIiKSB7CisgICAgaWYg
KGV4cHIgPT0gdHJ1ZSkKKyAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHttZXNzYWdl
IHx8ICJleHByIn0gdG8gYmUgZmFsc2UsIGJ1dCB3YXMgJHtleHByfWApCisgIH0sCisgIGVxdWFs
cyhhLCBiKSB7CisgICAgaWYgKGEgPT09IGIgfHwgKGEgPT09IGEgJiYgYiA9PT0gYikgfHwgKGEg
IT09IGEgJiYgYiAhPT0gYikpCisgICAgICByZXR1cm47CisKKyAgICB0aHJvdyBuZXcgRXJyb3Io
YEV4cGVjdGVkICR7YX0gdG8gYmUgJHtifWApOworICB9Cit9KTsKKworY2xhc3MgQmFzZSB7Cisg
IGNvbnN0cnVjdG9yKCkgeworICAgIHRoaXMueCA9IDE7CisgIH0KK30KKworY2xhc3MgUHJpdmF0
ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9ucyBleHRlbmRzIEJhc2UgeworICAjaSA9IChPYmpl
Y3QucHJldmVudEV4dGVuc2lvbnModGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQuZmFs
c2UoT2JqZWN0LmlzRXh0ZW5zaWJsZSh0aGlzKSwgIk9iamVjdC5pc0V4dGVuc2libGUodGhpcyki
KSwgdGhpcy4jaSArIDEpOworCisgIGdldCgpIHsgcmV0dXJuIHRoaXMuI2k7IH0KKyAgc2V0KGkp
IHsgdGhpcy4jaSA9IGk7IH0KK30KKworZnVuY3Rpb24gdGVzdChpKSB7CisgIGxldCBjID0gbmV3
IFByaXZhdGVGaWVsZEFmdGVyUHJldmVudEV4dGVuc2lvbnM7CisgIGMueCA9IDAuMTsKKyAgYXNz
ZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7CisgIGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMu
Z2V0KCksIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVz
dCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS1zZWFsLW91dC1vZi1saW5l
LmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUtc2VhbC1vdXQtb2YtbGlu
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NjFiMzBlNjJlMjgzOWFkNDc1MjMxZjM3Y2E0ZGZjNTExNjEwZDU0
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZhdGUt
c2VhbC1vdXQtb2YtbGluZS5qcwpAQCAtMCwwICsxLDUyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2ln
bigKKyAgZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHBy
ID09IGZhbHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwg
ImV4cHIifSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBmYWxzZShl
eHByLCBtZXNzYWdlID0gIiIpIHsKKyAgICBpZiAoZXhwciA9PSB0cnVlKQorICAgICAgdGhyb3cg
bmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIifSB0byBiZSBmYWxzZSwgYnV0
IHdhcyAke2V4cHJ9YCkKKyAgfSwKKyAgZXF1YWxzKGEsIGIpIHsKKyAgICBpZiAoYSA9PT0gYiB8
fCAoYSA9PT0gYSAmJiBiID09PSBiKSB8fCAoYSAhPT0gYSAmJiBiICE9PSBiKSkKKyAgICAgIHJl
dHVybjsKKworICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHthfSB0byBiZSAke2J9YCk7
CisgIH0KK30pOworCisvLyBUaGUgYmFzZSBjbGFzcyBpcyBkZWNsYXJlZCBpbiBldmFsIHNwZWNp
ZmljYWxseSBzbyB0aGF0IGl0IGNhbiBhZGQgZW5vdWdoCisvLyBwcm9wZXJ0aWVzIHRvIHRoZSBj
bGFzcyB0byBzdG9yZSBwcml2YXRlIGZpZWxkcyBpbiBvdXQtb2YtbGluZSBwcm9wZXJ0eSBzdG9y
YWdlLgorbGV0IEJhc2UgPSBldmFsKGAoY2xhc3MgQmFzZSB7CisgIC8vIE1ldGhvZHMKKyAgY29u
c3RydWN0b3IoKSB7CisgICAgLy8gRGVmaW5lIHByb3BlcnRpZXMKKyAgICAke0FycmF5KDIwMCku
bWFwKChfLCBpKSA9PiBgICB0aGlzLngke2l9ID0gJHtpfTtcbmApLmpvaW4oIiIpfQorICB9Cit9
KWApOworCitjbGFzcyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25zIGV4dGVuZHMg
QmFzZSB7CisgICNpID0gKE9iamVjdC5zZWFsKHRoaXMpLCA0Mik7CisgICNhc3NlcnQgPSAoYXNz
ZXJ0KE9iamVjdC5pc1NlYWxlZCh0aGlzKSwgIk9iamVjdC5pc1NlYWxlZCh0aGlzKSIpLCB0aGlz
LiNpICsgMSk7CisKKyAgZ2V0KCkgeyByZXR1cm4gdGhpcy4jaTsgfQorICBzZXQoaSkgeyB0aGlz
LiNpID0gaTsgfQorfQorCitmdW5jdGlvbiB0ZXN0KGkpIHsKKyAgbGV0IGMgPSBuZXcgUHJpdmF0
ZUZpZWxkQWZ0ZXJQcmV2ZW50RXh0ZW5zaW9uczsKKyAgYXNzZXJ0LmVxdWFscyhjLngxNTAgPT09
IDE1MCk7CisgIGMueDE1MCA9IDAuMTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCA0Mik7Cisg
IGMuc2V0KGkpOworICBhc3NlcnQuZXF1YWxzKGMuZ2V0KCksIGkpOworfQorbm9JbmxpbmUodGVz
dCk7CisKK3Rlc3QoMCk7Cit0ZXN0KDEpOwordGVzdCgyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MjAwOyArK2kpCisgIHRlc3QoaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1m
aWVsZHMtcHJpdmF0ZS1zZWFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXByaXZh
dGUtc2VhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODNlN2FiMzVkN2MxNGE2Yzc2OTEyNjI2Y2ZkMTI4MTdj
NWEwYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtc2VhbC5qcwpAQCAtMCwwICsxLDQzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorCitsZXQgYXNzZXJ0ID0gT2JqZWN0LmFzc2lnbigKKyAg
ZnVuY3Rpb24gYXNzZXJ0KGV4cHIsIG1lc3NhZ2UgPSAiIikgeworICAgIGlmIChleHByID09IGZh
bHNlKQorICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke21lc3NhZ2UgfHwgImV4cHIi
fSB0byBiZSB0cnVlLCBidXQgd2FzICR7ZXhwcn1gKTsKKyAgfSwgeworICBlcXVhbHMoYSwgYikg
eworICAgIGlmIChhID09PSBiIHx8IChhID09PSBhICYmIGIgPT09IGIpIHx8IChhICE9PSBhICYm
IGIgIT09IGIpKQorICAgICAgcmV0dXJuOworCisgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCAke2F9IHRvIGJlICR7Yn1gKTsKKyAgfQorfSk7CisKK2NsYXNzIEJhc2UgeworICBjb25zdHJ1
Y3RvcigpIHsKKyAgICB0aGlzLnggPSAxOworICB9Cit9CisKK2NsYXNzIFByaXZhdGVGaWVsZEFm
dGVyUHJldmVudEV4dGVuc2lvbnMgZXh0ZW5kcyBCYXNlIHsKKyAgI2kgPSAoT2JqZWN0LnNlYWwo
dGhpcyksIDQyKTsKKyAgI2Fzc2VydCA9IChhc3NlcnQoT2JqZWN0LmlzU2VhbGVkKHRoaXMpLCAi
T2JqZWN0LmlzU2VhbGVkKHRoaXMpIiksIHRoaXMuI2kgKyAxKTsKKworICBnZXQoKSB7IHJldHVy
biB0aGlzLiNpOyB9CisgIHNldChpKSB7IHRoaXMuI2kgPSBpOyB9Cit9CisKK2Z1bmN0aW9uIHRl
c3QoaSkgeworICBsZXQgYyA9IG5ldyBQcml2YXRlRmllbGRBZnRlclByZXZlbnRFeHRlbnNpb25z
OworICBjLnggPSAwLjE7CisgIGFzc2VydC5lcXVhbHMoYy5nZXQoKSwgNDIpOworICBjLnNldChp
KTsKKyAgYXNzZXJ0LmVxdWFscyhjLmdldCgpLCBpKTsKK30KK25vSW5saW5lKHRlc3QpOworCit0
ZXN0KDApOwordGVzdCgxKTsKK3Rlc3QoMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDIwMDsgKytp
KQorICB0ZXN0KGkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtdXNlLWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1maWVsZHMtcHJpdmF0ZS11
c2UtZXZhbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTc4ODA1N2IxYmY0OTU1MGEwZThmM2Q5OGE5NDFhODM3
Y2YxMWMzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXBy
aXZhdGUtdXNlLWV2YWwuanMKQEAgLTAsMCArMSwxNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIiwgIi0tdXNlUHVibGljQ2xhc3NGaWVsZHM9MSIpCisK
K2Z1bmN0aW9uIGFzc2VydChhLCBtZXNzYWdlKSB7CisgICAgaWYgKCFhKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobWVzc2FnZSk7Cit9CisKK2xldCBpbnN0ID0gbmV3IGNsYXNzIHsKKyAgYSA9
IGV2YWwoIihpKSA9PiBpLiNiIik7CisKKyAgI2IgPSB7fTsKK307CisKK2luc3QuYShpbnN0KS54
ID0gMTsKK2Fzc2VydChpbnN0LmEoaW5zdCkueCA9PSAxKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5zdGFuY2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9j
bGFzcy1maWVsZHMtc3RyZXNzLWluc3RhbmNlLmpzCmluZGV4IGU1MTYyOTlhNzkyYzYzODRiODQy
YzY5N2Y0MWZjZWQ3ZjVjZmZmY2YuLjUwNjlhN2RhNWExNTVkY2MwNjA0ZTQ2MzJiOTBlODMwOTM5
ZmU4MzYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2NsYXNzLWZpZWxkcy1zdHJlc3MtaW5z
dGFuY2UuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvY2xhc3MtZmllbGRzLXN0cmVzcy1pbnN0YW5j
ZS5qcwpAQCAtMSwxMSArMSwxNSBAQAotLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0Ns
YXNzRmllbGRzPXRydWUiKQorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVB1YmxpY0NsYXNzRmll
bGRzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCiAKIGNsYXNzIEEgewog
ICAgIGEgPSAwOwogICAgIGIgPSAxOworICAgICNjID0gMDsKKyAgICAjZCA9IDE7CiAgICAgZSA9
IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDA7IH07CisgICAgI2YgPSBmdW5jdGlvbigpIHsgcmV0dXJu
IDE7IH07CiAgICAgWyJnIl0gPSAwOwogICAgIGggPSBldmFsKCJ0cnVlIik7CisgICAgI2kgPSBl
dmFsKCJmYWxzZSIpOwogfQogCiBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVs
ZHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9vcHRpb25hbC1jaGFpbmluZy1hbmQtcHJpdmF0ZS1maWVs
ZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODQyY2YxMmI2NGExNjQzMDJlZDI3ZjViOTFlMDc1NDQ3MWUxMTdl
NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL29wdGlvbmFsLWNoYWluaW5nLWFu
ZC1wcml2YXRlLWZpZWxkcy5qcwpAQCAtMCwwICsxLDkzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogKGEsIGUpID0+IHsKKyAgICAgICAgaWYgKGEgIT09IGUpIAorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKKyAg
ICB9LAorCisgICAgdGhyb3dzOiAoZXhwZWN0ZWRFeGNlcHRpb24sIGZ1bmN0b3IsIG0pID0+IHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFeGNlcHRpb24pKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKKyAgICAgICAgfQorICAgIH0KK307
CisKKygoKSA9PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAg
ICAKKyAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICByZXR1cm4gbz8uI2Zp
ZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQzsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5h
Y2Nlc3MoYyksICd0ZXN0Jyk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3ModW5k
ZWZpbmVkKSwgdW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2Vzcyhu
dWxsKSwgdW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
KCkgPT4geworICAgICAgICBDLmFjY2Vzcyh7fSk7CisgICAgfSwgIk9iamVjdCB3aXRob3V0IHBy
aXZhdGUgZmllbGQgc2hvdWxkIHRocm93Iik7Cit9KSgpOworCisvLyBDaGFpbmVkIGNhc2UKKygo
KSA9PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZCA9ICd0ZXN0JzsKKyAgICAKKyAg
ICAgICAgc3RhdGljIGNoYWluZWRBY2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8ucHJp
dmF0ZT8uI2ZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQzsKKyAg
ICBsZXQgbyA9IHtwcml2YXRlOiBjfTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNjZXNzKG8pLCAndGVz
dCcpOworICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKEMuY2hhaW5lZEFjY2Vzcyh7fSksIHVuZGVm
aW5lZCk7CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5jaGFpbmVkQWNjZXNzKHtwcml2YXRl
OiBudWxsfSksIHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsICgpID0+IHsKKyAgICAgICAgby5wcml2YXRlID0ge307CisgICAgICAgIEMuY2hhaW5lZEFj
Y2VzcyhvKTsKKyAgICB9LCAiT2JqZWN0IHdpdGhvdXQgcHJpdmF0ZSBmaWVsZCBzaG91bGQgdGhy
b3ciKTsKK30pKCk7CisKKygoKSA9PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNmaWVsZDsK
KworICAgICAgICBzZXRGaWVsZCh2KSB7CisgICAgICAgICAgICB0aGlzLiNmaWVsZCA9IHY7Cisg
ICAgICAgIH0KKyAgICAKKyAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICBy
ZXR1cm4gby4jZmllbGQ/LnByb3BlcnR5OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMg
PSBuZXcgQzsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CisgICAgICAg
IGMuc2V0RmllbGQoe3Byb3BlcnR5OiAndGVzdCd9KTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1
ZShDLmFjY2VzcyhjKSwgJ3Rlc3QnKTsKKworICAgICAgICBjLnNldEZpZWxkKHVuZGVmaW5lZCk7
CisgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoYyksIHVuZGVmaW5lZCk7CisKKyAg
ICAgICAgYy5zZXRGaWVsZChudWxsKTsKKyAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2Vz
cyhjKSwgdW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
KCkgPT4geworICAgICAgICBDLmFjY2Vzcyh7fSk7CisgICAgfSwgIk9iamVjdCB3aXRob3V0IHBy
aXZhdGUgZmllbGQgc2hvdWxkIHRocm93Iik7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW5hbWUtYWNjZXNzLWluLWNvbXB1dGVkLXByb3BlcnR5LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21wdXRlZC1wcm9wZXJ0eS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xOWQ4ZTIxOTIzZjIwMjRkMDIyMDJmM2EyZTE2YmI0OWUxZjk1YjNkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lLWFjY2Vzcy1pbi1jb21w
dXRlZC1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDIwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0t
dXNlUHVibGljQ2xhc3NGaWVsZHM9MSIsICItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICB0aHJvd3M6IChleHBlY3RlZEVycm9yLCBmdW5jdG9yKSA9PiB7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yLm5hbWUgKyAiIGJ1dCB0aHJvd3M6ICIgKyBlLm5hbWUpOworICAgICAgICB9Cisg
ICAgfQorfQorCithc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgIGNsYXNzIEJh
c2UgeworICAgICAgICBbe30uI3hdID0gMTsgCisgICAgICAgICN4ID0gImZvbyI7CisgICAgfQor
fSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1ieS12YWwtZGlyZWN0LWFkZHBy
aXZhdGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2YXRlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkzMTM1NDY4NjkyN2YzNmNlZDlhOTlhZWU3NDQ5MWQ4ZjdmMjMzNzQKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtYnktdmFsLWRpcmVjdC1hZGRwcml2
YXRlLmpzCkBAIC0wLDAgKzEsMzQgQEAKKy8vIFRPRE86IC8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpIC0tIEN1cnJlbnRseSwgZWFnZXIgSklUIGlzIG5vdCBz
dXBwb3J0ZWQgZm9yIHByaXZhdGUgZmllbGQgYWNjZXNzLgorLy9AIHJ1bkRlZmF1bHQoIi0tdXNl
UHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vSklUKCItLXVzZVByaXZhdGVDbGFzc0Zp
ZWxkcz0xIikKKy8vQCBydW5Ob0xMSW50KCItLXVzZVByaXZhdGVDbGFzc0ZpZWxkcz0xIikKKwor
Ly8gUHJpdmF0ZUZpZWxkICJDcmVhdGUiIGFjY2VzcyBzaG91bGQgdGhyb3cgaWYgd3JpdGluZyB0
byBhIG5vbi1leGlzdGVudCBQcml2YXRlTmFtZS4KK2xldCBjLCBpID0gMCwgdGhyZXcgPSBmYWxz
ZTsKK2NsYXNzIEMgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4gaSA8IDI5
ID8gdGhpcyA6IGM7CisgICAgfQorfQorCitjbGFzcyBDQyBleHRlbmRzIEMgeworICAgICN4ID0g
aSsrOworICAgIHgoKSB7IHJldHVybiB0aGlzLiN4OyB9Cit9CisKK2MgPSBuZXcgQ0M7Cit0cnkg
eworICAgIGZvciAobGV0IGogPSAxOyBqIDwgNTA7ICsraikgeworICAgICAgICBsZXQgeCA9IG5l
dyBDQzsKKyAgICAgICAgaWYgKHgueCgpICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBFeHBlY3RlZCB4LngoKSB0byBiZSAke2p9LCBidXQgZm91bmQgJHt4LngoKX1gKTsKKyAg
ICB9Cit9IGNhdGNoIChlKSB7CisgICAgdGhyZXcgPSB0cnVlOworICAgIGlmIChpICE9PSAzMCB8
fCBlLmNvbnN0cnVjdG9yICE9PSBUeXBlRXJyb3IpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9
Cit9CisKK2lmICghdGhyZXcpCisgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBUeXBlRXJy
b3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHV0LWJ5LXZhbC1kaXJlY3QtcHV0cHJpdmF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3B1
dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjczMGI0NzU5NDlkNDMy
MWU5N2U3OTE3YjJlYjEwZmZkODdjYTI3ZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3B1dC1ieS12YWwtZGlyZWN0LXB1dHByaXZhdGUuanMKQEAgLTAsMCArMSwzMiBAQAorLy8g
RklYTUU6IC8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpIC0t
IEN1cnJlbnRseSwgZWFnZXIgSklUIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHByaXZhdGUgZmllbGQg
YWNjZXNzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyNzg0Cisv
L0AgcnVuRGVmYXVsdCgiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9MSIpCisvL0AgcnVuTm9KSVQo
Ii0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPTEiKQorLy9AIHJ1bk5vTExJbnQoIi0tdXNlUHJpdmF0
ZUNsYXNzRmllbGRzPTEiKQorCisvLyBQcml2YXRlRmllbGQgIlB1dCIgYWNjZXNzIHNob3VsZCB0
aHJvdyBpZiB3cml0aW5nIHRvIGEgbm9uLWV4aXN0ZW50IFByaXZhdGVOYW1lLgorbGV0IGMsIGkg
PSAwLCB0aHJldyA9IGZhbHNlOworY2xhc3MgQyB7CisgICAgI3g7CisgICAgY29uc3RydWN0b3Io
KSB7IHJldHVybiBpIDwgMzAgPyB0aGlzIDogeyBbU3ltYm9sLnRvU3RyaW5nVGFnXTogIndpdGhv
dXQgI3giIH07IH0KKyAgICBzdGF0aWMgeChvYmopIHsgcmV0dXJuIG9iai4jeCA9IGkrKzsgfQor
ICAgIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICJ3aXRoICN4IiB9Cit9CisK
K3RyeSB7CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCA1MDsgKytqKSB7CisgICAgICAgIGxldCBv
YmogPSBuZXcgQzsKKyAgICAgICAgbGV0IHJlc3VsdCA9IEMueChvYmopOworICAgICAgICBpZiAo
cmVzdWx0ICE9PSBqKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBDLngo
JHtvYmp9KSB0byBiZSAke2p9LCBidXQgZm91bmQgJHtyZXN1bHR9YCk7CisgICAgfQorfSBjYXRj
aCAoZSkgeworICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAvLyBydmFsIG9mIEFzc2lnbm1lbnRFeHBy
ZXNzaW9uIGlzIGV2YWx1YXRlZCBiZWZvcmUgUHJpdmF0ZUZpZWxkRmluZCgjeCwgbHJlZikgaXMg
cGVyZm9ybWVkLAorICAgIC8vIHRodXMgYGlgIGhhcyBhbHJlYWR5IGJlZW4gaW5jcmVtZW50ZWQu
CisgICAgaWYgKGkgIT09IDMxIHx8IGUuY29uc3RydWN0b3IgIT09IFR5cGVFcnJvcikgeworICAg
ICAgICB0aHJvdyBlOworICAgIH0KK30KKworaWYgKCF0aHJldykKKyAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIFR5cGVFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIv
Y29uZmlnLnlhbWwKaW5kZXggMzc0ZTk4ODdmYTIxMzFmNDcyZDYxYWY3Y2IwYTEwNzM2YzNmZmM0
Zi4uMzliYzQ4NzljNThiYjcxYmM5NWNiY2RhNWQ2MTI4ZjEzY2E5M2IwNyAxMDA2NDQKLS0tIGEv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbApAQCAtNiw2ICs2LDcgQEAgZmxhZ3M6CiAgIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0OiB1
c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZzCiAgIGNsYXNz
LWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCisgIGNsYXNzLWZpZWxkcy1wcml2
YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMKIHNraXA6CiAgIGZlYXR1cmVzOgogICAgIC0gU2hh
cmVkQXJyYXlCdWZmZXIKQEAgLTE0LDcgKzE1LDYgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzEKICAgICAtIHJlZ2V4cC1sb29rYmVo
aW5kCiAKLSAgICAtIGNsYXNzLWZpZWxkcy1wcml2YXRlCiAgICAgLSBjbGFzcy1tZXRob2RzLXBy
aXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1maWVsZHMtcHVibGljCiAgICAgLSBjbGFzcy1zdGF0
aWMtZmllbGRzLXByaXZhdGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>