<?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>219181</bug_id>
          
          <creation_ts>2020-11-19 15:07:23 -0800</creation_ts>
          <short_desc>[JSC] Implement private static method</short_desc>
          <delta_ts>2021-02-18 15:48:37 -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>194434</dependson>
    
    <dependson>194435</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>chi187</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</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>1709288</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-19 15:07:23 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710181</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-26 15:08:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/71754440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729875</commentid>
    <comment_count>2</comment_count>
      <attachid>420525</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-16 12:48:24 -0800</bug_when>
    <thetext>Created attachment 420525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730224</commentid>
    <comment_count>3</comment_count>
      <attachid>420629</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-17 04:57:58 -0800</bug_when>
    <thetext>Created attachment 420629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730755</commentid>
    <comment_count>4</comment_count>
      <attachid>420629</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-17 23:51:10 -0800</bug_when>
    <thetext>Comment on attachment 420629
Patch

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

r=me with comments.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2817
&gt; +        RefPtr&lt;RegisterID&gt; condition = newTemporary();
&gt; +        emitEqualityOp&lt;OpStricteq&gt;(condition.get(), base, brand);
&gt; +        emitJumpIfTrue(condition.get(), brandCheckOkLabel.get());

Please follow https://bugs.webkit.org/show_bug.cgi?id=221927 style

&gt; Source/JavaScriptCore/parser/Parser.cpp:3059
&gt; +                    auto declarationResult = classScope-&gt;declarePrivateSetter(*ident, tag);
&gt; +                    semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidDuplicateDeclaration, &quot;Declared private setter with an already used name&quot;);
&gt; +                    if (tag == ClassElementTag::Static) {
&gt; +                        semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private static setter if there is a non-static private getter with used name&quot;);
&gt; +                        declaresStaticPrivateAccessor = true;
&gt; +                    } else {
&gt; +                        semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private non-static setter if there is a static private getter with used name&quot;);
&gt; +                        declaresPrivateAccessor = true;
&gt; +                    }
&gt;                      type = static_cast&lt;PropertyNode::Type&gt;(type | PropertyNode::PrivateSetter);
&gt;                  } else {
&gt; -                    semanticFailIfTrue(classScope-&gt;declarePrivateGetter(*ident) &amp; DeclarationResult::InvalidDuplicateDeclaration, &quot;Declared private getter with an already used name&quot;);
&gt; -                    declaresPrivateAccessor = true;
&gt; +                    auto declarationResult = classScope-&gt;declarePrivateGetter(*ident, tag);
&gt; +                    semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidDuplicateDeclaration, &quot;Declared private getter with an already used name&quot;);
&gt; +                    if (tag == ClassElementTag::Static) {
&gt; +                        semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private static getter if there is a non-static private setter with used name&quot;);
&gt; +                        declaresStaticPrivateAccessor = true;
&gt; +                    } else {
&gt; +                        semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private non-static getter if there is a static private setter with used name&quot;);
&gt; +                        declaresPrivateAccessor = true;
&gt; +                    }

Both looks almost identical. We should remove `if (isSetter)` branching and pass &quot;getter&quot; / &quot;setter&quot; as a parameter to the error message.

auto declarationResult = classScope-&gt;declarePrivateGetter(*ident, tag);
semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidDuplicateDeclaration, &quot;Declared private &quot;, (isSetter ? &quot;setter&quot; : &quot;getter&quot;), &quot; with an already used name&quot;);
if (tag == ClassElementTag::Static) {
    semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private static &quot;, (isSetter ? &quot;setter&quot; : &quot;getter&quot;), &quot;if there is a non-static private setter with used name&quot;);
    declaresStaticPrivateAccessor = true;
} else {
    semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private non-static &quot;, (isSetter ? &quot;setter&quot; : &quot;getter&quot;), &quot; if there is a static private setter with used name&quot;);
    declaresPrivateAccessor = true;
}

&gt; Source/JavaScriptCore/parser/Parser.h:518
&gt;          return result;

Can you explain why declarePrivateMethod requires 

        useVariable(&amp;ident, false);
        addClosedVariableCandidateUnconditionally(ident.impl());

and the others are not?

&gt; Source/JavaScriptCore/parser/Parser.h:555
&gt; +    DeclarationResultMask declarePrivateSetter(const Identifier&amp; ident, ClassElementTag tag)
&gt;      {
&gt;          ASSERT(m_allowsLexicalDeclarations);
&gt;          DeclarationResultMask result = DeclarationResult::Valid;
&gt; -        bool addResult = m_lexicalVariables.declarePrivateSetter(ident);
&gt; +        auto addResult = tag == ClassElementTag::Static ? m_lexicalVariables.declareStaticPrivateSetter(ident) : m_lexicalVariables.declarePrivateSetter(ident);
&gt;  
&gt; -        if (!addResult) {
&gt; +        if (addResult == VariableEnvironment::PrivateDeclarationResult::DuplicatedName) {
&gt;              result |= DeclarationResult::InvalidDuplicateDeclaration;
&gt;              return result;
&gt;          }
&gt;  
&gt; +        if (addResult == VariableEnvironment::PrivateDeclarationResult::InvalidStaticNonStatic) {
&gt; +            result |= DeclarationResult::InvalidPrivateStaticNonStatic;
&gt; +            return result;
&gt; +        }
&gt; +
&gt;          return result;
&gt;      }
&gt;  
&gt; -    DeclarationResultMask declarePrivateGetter(const Identifier&amp; ident)
&gt; +    DeclarationResultMask declarePrivateGetter(const Identifier&amp; ident, ClassElementTag tag)
&gt;      {
&gt;          ASSERT(m_allowsLexicalDeclarations);
&gt;          DeclarationResultMask result = DeclarationResult::Valid;
&gt; -        bool addResult = m_lexicalVariables.declarePrivateGetter(ident);
&gt; +        auto addResult = tag == ClassElementTag::Static ? m_lexicalVariables.declareStaticPrivateGetter(ident) : m_lexicalVariables.declarePrivateGetter(ident);
&gt;  
&gt; -        if (!addResult) {
&gt; +        if (addResult == VariableEnvironment::PrivateDeclarationResult::DuplicatedName) {
&gt;              result |= DeclarationResult::InvalidDuplicateDeclaration;
&gt;              return result;
&gt;          }
&gt;  
&gt; +        if (addResult == VariableEnvironment::PrivateDeclarationResult::InvalidStaticNonStatic) {
&gt; +            result |= DeclarationResult::InvalidPrivateStaticNonStatic;
&gt; +            return result;
&gt; +        }
&gt; +

These functions are almost identical. Can you extract the common part out from them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730843</commentid>
    <comment_count>5</comment_count>
      <attachid>420629</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-18 07:29:41 -0800</bug_when>
    <thetext>Comment on attachment 420629
Patch

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

Thanks a lot for the review

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:2817
&gt;&gt; +        emitJumpIfTrue(condition.get(), brandCheckOkLabel.get());
&gt; 
&gt; Please follow https://bugs.webkit.org/show_bug.cgi?id=221927 style

Done.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3059
&gt;&gt; +                    }
&gt; 
&gt; Both looks almost identical. We should remove `if (isSetter)` branching and pass &quot;getter&quot; / &quot;setter&quot; as a parameter to the error message.
&gt; 
&gt; auto declarationResult = classScope-&gt;declarePrivateGetter(*ident, tag);
&gt; semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidDuplicateDeclaration, &quot;Declared private &quot;, (isSetter ? &quot;setter&quot; : &quot;getter&quot;), &quot; with an already used name&quot;);
&gt; if (tag == ClassElementTag::Static) {
&gt;     semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private static &quot;, (isSetter ? &quot;setter&quot; : &quot;getter&quot;), &quot;if there is a non-static private setter with used name&quot;);
&gt;     declaresStaticPrivateAccessor = true;
&gt; } else {
&gt;     semanticFailIfTrue(declarationResult &amp; DeclarationResult::InvalidPrivateStaticNonStatic, &quot;Cannot declare a private non-static &quot;, (isSetter ? &quot;setter&quot; : &quot;getter&quot;), &quot; if there is a static private setter with used name&quot;);
&gt;     declaresPrivateAccessor = true;
&gt; }

Done. I needed to add a couple of ternary per message, but we then removed a lot of duplicated code.

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:518
&gt;&gt;          return result;
&gt; 
&gt; Can you explain why declarePrivateMethod requires 
&gt; 
&gt;         useVariable(&amp;ident, false);
&gt;         addClosedVariableCandidateUnconditionally(ident.impl());
&gt; 
&gt; and the others are not?

This is a leftover from an old implementation of `VariableEnvironment::declarePrivateMethod` that was not setting the `VariableEnvyronmentEntry` properly. I just removed it, since it&apos;s unnecessary.

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:555
&gt;&gt; +
&gt; 
&gt; These functions are almost identical. Can you extract the common part out from them?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730844</commentid>
    <comment_count>6</comment_count>
      <attachid>420828</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-18 07:30:32 -0800</bug_when>
    <thetext>Created attachment 420828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731057</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-18 15:48:34 -0800</bug_when>
    <thetext>Committed r273107: &lt;https://commits.webkit.org/r273107&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420828.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420525</attachid>
            <date>2021-02-16 12:48:24 -0800</date>
            <delta_ts>2021-02-17 04:57:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219181-20210216174822.patch</filename>
            <type>text/plain</type>
            <size>59437</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjAzNTY3YzBhZDdhMjk1OGI3ZDkzNDllZDgyN2NmNzU0NDg2ODQyLi5hYWRiMmI3ZGQxN2JiZTZk
OTNkYTYzY2M4ZGU1YmUwOWMyN2VmY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMS0wMi0xNiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IHByaXZhdGUgc3RhdGljIG1ldGhvZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTgxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3RhdGljIHByaXZhdGUgbWV0aG9kcyBhbmQgYWNjZXNzb3JzCisgICAgICAg
IHByb3Bvc2FsIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0YXRp
Yy1jbGFzcy1mZWF0dXJlcy4KKyAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkaXZlcmdlIGEg
Yml0IGZyb20gcHJpdmF0ZSBtZXRob2RzJmFjY2Vzc29ycyBvbiB0aGUKKyAgICAgICAgYnJhbmQg
Y2hlY2ssIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2ltcGxlciB3YXkgdG8gcGVyZm9ybSBzdGF0
aWMKKyAgICAgICAgYnJhbmQgY2hlY2tzLiBTaW5jZSBvbmx5IHRoZSBjbGFzcyBjb25zdHJ1Y3Rv
ciBpcyBhbGxvd2VkIHRvIGFjY2VzcworICAgICAgICBpdHMgcHJpdmF0ZSBtZXRob2RzIGFuZCBh
Y2Nlc3NvcnMsIHdlIHNhdmUgaXQgb24gYEBwcml2YXRlQ2xhc3NCcmFuZGAKKyAgICAgICAgb24g
Y2xhc3MgbGV4aWNhbCBzY29wZSBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSByZWNlaXZlciBvZiB0
aGUgc3RhdGljCisgICAgICAgIHByaXZhdGUgbWV0aG9kIChhbmQgYWNjZXNzb3JzKSB1c2luZyBg
PT09YCBvcGVyYXRpb24uCisgICAgICAgIFdoaWxlIHRoaXMgZ2VuZW5yYXRlcyBtb3JlIGJ5dGVj
b2RlcyB0aGFuIGBjaGVja19wcml2YXRlX2JyYW5kYCwgd2UKKyAgICAgICAgZG9uJ3QgbmVlZCB0
byBwZXJmb3JtIGEgU3RydWN0dXJlIHRyYW5zaXRpb24gdG8gaW5zdGFsbCBhIGJyYW5kLCAKKyAg
ICAgICAgYW5kIGF2b2lkIGFsbG9jYXRpb24gb2YgYSBwcml2YXRlIHN5bWJvbC4gU2luY2UgZWFj
aCBldmFsdWF0aW9uIG9mIGEKKyAgICAgICAgY2xhc3MgZ2VuZXJhdGVzIGEgZGlmZmVyZW50IGNv
bnN0cnVjdG9yIG9iamVjdCwgd2UgcHJlc2VydmUgdGhlIHNlbWFudGljcworICAgICAgICB0aGF0
IHByaXZhdGUgbWV0aG9kcyBhcmUgbGV4aWNhbGx5IHNjb3BlZC4KKworICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJp
dmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxs
UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0
YWxsUHJpdmF0ZUNsYXNzQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UG9zdGZp
eE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAg
ICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xh
cmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlU2V0
dGVyKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAg
ICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlQWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAq
IHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1l
RW50cnk6OmlzU3RhdGljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRl
Y2xhcmVTdGF0aWNQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlU3RhdGljUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVN0YXRpY1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNTdGF0aWNQcml2YXRlTWV0aG9kT3JBY2Nlc3Nv
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc0luc3RhbmNl
UHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50OjpoYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvciBjb25zdCk6IERlbGV0ZWQuCisK
IDIwMjEtMDItMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBEeW5hbWljYWxseSBnZW5lcmF0ZSBlbnRpdGxlbWVudHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAwNDgwNTA5Y2Y4ZGY5ODEw
MTY5N2YxY2NhNDNkOWQ0MDhiYTZmZTI0Li43YmU2YzVkZjI5MTg0N2MxNDk4ZGY2MmJiNGJjYjAx
YmZkZTNhZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC0xNzQsOSArMTc0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdl
YkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKGluc3Rh
bmNlRmllbGRJbml0aWFsaXplcikgXAogICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAorICAgIG1h
Y3JvKHByaXZhdGVDbGFzc0JyYW5kKSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlv
bikgXAogICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpIFwKLSAgICBtYWNybyhlbnRyaWVz
KSBcCisgICAgbWFjcm8oZW50cmllcykKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IGRjOWMyZDk2MWI3ZTkyZDk1ODQwODg4YmQyZGMzZmQ3NDhjN2IyMTYuLmIx
NWIwNDZhZjk0MDkwYWFlZTdiYmRiMGNkOTkzNzIxZGJhMDlmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0yNzc2LDIwICsyNzc2LDI5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVh
dGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IEpTVGV4dFBvCiAKICAgICBW
YXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CiAKLSAgICBlbWl0UHV0VG9TY29w
ZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKKyAgICBlbWl0UHV0VG9TY29w
ZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJn
ZXQpCiB7CiAgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJTY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsKLSAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRT
eW1ib2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1RlbXBvcmFyeSgpLCBwcml2YXRlQnJhbmRW
YXJTY29wZS5nZXQoKSk7CisgICAgYm9vbCBpc1N0YXRpYyA9IGZhbHNlOworICAgIFJlZ2lzdGVy
SUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGVtaXRHZXRQcml2YXRlQnJhbmQobmV3VGVtcG9yYXJ5
KCksIHByaXZhdGVCcmFuZFZhclNjb3BlLmdldCgpLCBpc1N0YXRpYyk7CiAgICAgT3BTZXRQcml2
YXRlQnJhbmQ6OmVtaXQodGhpcywgdGFyZ2V0LCBwcml2YXRlQnJhbmRTeW1ib2wpOwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEluc3RhbGxQcml2YXRlQ2xhc3NCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpCiB7Ci0gICAgVmFy
aWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIFZhcmlhYmxlIHByaXZhdGVC
cmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRl
Q2xhc3NCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIGVtaXRQdXRUb1Njb3BlKHNjb3BlUmVnaXN0
ZXIoKSwgcHJpdmF0ZUJyYW5kVmFyLCB0YXJnZXQsIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0
aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworfQorCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNjb3BlLCBib29sIGlzU3RhdGljKQoreworICAgIFZhcmlhYmxlIHByaXZhdGVC
cmFuZFZhciA9IGlzU3RhdGljCisgICAgICAgID8gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLnByaXZhdGVDbGFzc0JyYW5kUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgOiB2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0
ZU5hbWUoKSk7CiAgICAgcmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwgcHJpdmF0
ZUJyYW5kVmFyLCBUaHJvd0lmTm90Rm91bmQpOwogfQogCkBAIC0yNzk5LDkgKzI4MDgsMjAgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCoKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBicmFuZFN5bWJvbCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVj
a1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZCwgYm9vbCBp
c1N0YXRpYykKIHsKLSAgICBPcENoZWNrUHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIGJhc2UsIGJy
YW5kU3ltYm9sKTsKKyAgICBpZiAoaXNTdGF0aWMpIHsKKyAgICAgICAgUmVmPExhYmVsPiBicmFu
ZENoZWNrT2tMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
b25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJp
Y3RlcT4oY29uZGl0aW9uLmdldCgpLCBiYXNlLCBicmFuZCk7CisgICAgICAgIGVtaXRKdW1wSWZU
cnVlKGNvbmRpdGlvbi5nZXQoKSwgYnJhbmRDaGVja09rTGFiZWwuZ2V0KCkpOworICAgICAgICBl
bWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBhY2Nlc3Mgc3RhdGljIHByaXZhdGUgbWV0aG9kIG9y
IGFjZXNzb3IiKTsKKworICAgICAgICBlbWl0TGFiZWwoYnJhbmRDaGVja09rTGFiZWwuZ2V0KCkp
OworICAgICAgICByZXR1cm47CisgICAgCisgICAgfQorICAgIE9wQ2hlY2tQcml2YXRlQnJhbmQ6
OmVtaXQodGhpcywgYmFzZSwgYnJhbmQpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U3VwZXJTYW1wbGVyQmVnaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGE1Y2JkMzY5OWE0NzNjYmRj
MDg3ZmJlNmZhMWIwY2ZkYjA0ZDU2N2UuLjlhMWRkYTczZGE5YjY2YTAyMzBlZjA2ZGUyNzRiMGQ1
NGE3OWUwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgyNyw4ICs4MjcsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBl
bWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOwotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c2NvcGUpOwotICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiBicmFuZCk7CisgICAgICAgIHZvaWQgZW1pdEluc3RhbGxQcml2YXRl
Q2xhc3NCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSwgYm9v
bCBpc1N0YXRpYyk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kLCBib29sIGlzU3RhdGljKTsKIAogICAgICAgICB2
b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBs
ZXJFbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCBlNWY4MWE1NmUzYjc5MGMwZmU1ZWExNzhkNDIwNDk2OWFmY2My
YTk1Li4yYTkxYTc2OTA2YzcyMzI2YTA1ODM1MWVlMTcyZjE3Nzg5NjZhZTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC05ODIsOCArOTgyLDggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0
eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0
ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENo
ZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7CisgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVt
aXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwg
cHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hl
Y2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgpLCBwcml2YXRlVHJh
aXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAg
ICB9CkBAIC05OTIsOCArOTkyLDggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQ
cm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJh
dG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5n
ZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgpLCBwcml2
YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Z2V0dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlckZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRE
aXJlY3RHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2V0dGVyU2V0dGVyT2JqLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVO
YW1lKCkpOwpAQCAtMTAwNyw4ICsxMDA3LDggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVt
aXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAg
ICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFt
ZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQo
KSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0g
Z2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgp
LCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
aHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhbiB1bmRlZmluZWQgcHJpdmF0ZSBnZXR0
ZXIiKTsKICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KQEAgLTEwNDcsOCArMTA0
Nyw4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAgICAgICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKIAotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJv
bCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVC
cmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOworICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0
ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHByaXZhdGVUcmFp
dHMuaXNTdGF0aWMoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJy
YW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRp
YygpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9
IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2Nv
cGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpKTsKQEAgLTEwNjQs
OCArMTA2NCw4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAgICAgICAgICAgICBWYXJpYWJs
ZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgdmFyKTsKIAotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFu
ZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1By
aXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0
UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHByaXZh
dGVUcmFpdHMuaXNTdGF0aWMoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJp
dmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5p
c1N0YXRpYygpKTsKIAogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigi
VHJ5aW5nIHRvIGFjY2VzcyBhbiB1bmRlZmluZWQgcHJpdmF0ZSBzZXR0ZXIiKTsKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZTsKQEAgLTI0MTIsOCArMjQxMiw4IEBAIFJlZ2lzdGVySUQqIFBvc3Rm
aXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVu
dCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJv
bC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3lt
Ym9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZS5nZXQoKSwgcHJpdmF0ZUJyYW5k
U3ltYm9sLmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcg
dG8gYWNjZXNzIGFuIHVuZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOwpAQCAtMjQyMyw4ICsyNDIz
LDggQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoaWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUg
PSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFBy
aXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJh
bmRTeW1ib2wuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5k
U3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRT
eW1ib2wuZ2V0KCksIHByaXZhdGVUcmFpdHMuaXNTdGF0aWMoKSk7CiAKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0dldHRlcigp
KSB7CkBAIC0yNzAxLDggKzI3MDEsOCBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShu
dWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJy
YW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9y
LmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQo
KSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2hlY2tQcml2YXRlQnJhbmQoYmFzZS5nZXQoKSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgpLCBw
cml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGFuIHVu
ZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOwpAQCAtMjcxMiw4ICsyNzEyLDggQEAgUmVnaXN0ZXJJ
RCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0
b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdl
dCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENo
ZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSwgcHJp
dmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKIAogICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0dl
dHRlcigpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyU2V0dGVyT2Jq
ID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwpAQCAtNTE1Miw3ICs1MTUyLDggQEAg
UmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2Nv
cGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6
ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCiAgICAg
Ym9vbCBoYXNQcml2YXRlTmFtZXMgPSAhIW1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNT
aXplKCk7Ci0gICAgYm9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFi
bGVzLmhhc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yKCk7CisgICAgYm9vbCBzaG91bGRFbWl0UHJp
dmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFibGVzLmhhc0luc3RhbmNlUHJpdmF0ZU1ldGhvZE9y
QWNjZXNzb3IoKTsKKyAgICBib29sIHNob3VsZEluc3RhbGxCcmFuZE9uQ29uc3RydWN0b3IgPSBt
X2xleGljYWxWYXJpYWJsZXMuaGFzU3RhdGljUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKICAg
ICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQogICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nl
c3NOYW1lcyhtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpKTsKICAg
ICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKQEAgLTUyNDQsNiArNTI0NSw5IEBAIFJlZ2lz
dGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29w
ZS5nZXQoKSwgY2xhc3NOYW1lVmFyLCBjb25zdHJ1Y3Rvci5nZXQoKSwgVGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKICAgICB9CiAKKyAgICBpZiAo
c2hvdWxkSW5zdGFsbEJyYW5kT25Db25zdHJ1Y3RvcikKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJ
bnN0YWxsUHJpdmF0ZUNsYXNzQnJhbmQoY29uc3RydWN0b3IuZ2V0KCkpOworCiAgICAgaWYgKCFz
dGF0aWNGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHN0YXRpY0ZpZWxkSW5pdGlhbGl6ZXIgPSBnZW5lcmF0b3IuZW1pdE5ld0NsYXNzRmllbGRJ
bml0aWFsaXplckZ1bmN0aW9uKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgV1RGTW92ZShzdGF0
aWNGaWVsZExvY2F0aW9ucyksIG1fY2xhc3NIZXJpdGFnZSk7CiAgICAgICAgIC8vIEZJWE1FOiBT
a2lwIHRoaXMgaWYgdGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uIGlzbid0IGdvaW5nIHRvIG5lZWQg
YSBob21lIG9iamVjdCAobm8gZXZhbCBvciBzdXBlciBwcm9wZXJ0aWVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDNiMWFmMGFkNjkyYmViZDU1OTZjMjhmMjc4
ZDllMzM5YjczNzA1YWMuLmI2NWIzMTkwMzZmOGIxY2E1NTFjZWMxNzlhNzc4YTIyNmRlYzM0YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4ODEsNiArMjg4
MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgY2xhc3NTY29wZS0+c2V0U3RyaWN0
TW9kZSgpOwogICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gZmFsc2U7CiAgICAgYm9v
bCBkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvciA9IGZhbHNlOworICAgIGJvb2wgZGVjbGFyZXNTdGF0
aWNQcml2YXRlTWV0aG9kID0gZmFsc2U7CisgICAgYm9vbCBkZWNsYXJlc1N0YXRpY1ByaXZhdGVB
Y2Nlc3NvciA9IGZhbHNlOwogICAgIG5leHQoKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
cmVxdWlyZW1lbnRzICE9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJl
bnRseSwgdGhlcmUgaXMgbm8gY2FsbGVyIHRoYXQgdXNlcyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVu
dHM6OlVubmFtZWQgZm9yIGNsYXNzIHN5bnRheC4iKTsKQEAgLTMwMDcsOSArMzAwOSwxNCBAQCBw
YXJzZU1ldGhvZDoKICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0
KCk7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRj
aChPUEVOUEFSRU4pKSB7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIHByaXZh
dGUgbWV0aG9kIik7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2Nv
cGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52
YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2Qg
dHdpY2UiKTsKLSAgICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZhdGVNZXRob2QgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJp
dmF0ZU1ldGhvZCgqaWRlbnQsIHRhZykgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxp
Y2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsK
KyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRh
Zzo6U3RhdGljICYmICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yUHJpdmF0ZUZp
ZWxkLCAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0aWMgcHJpdmF0ZSBtZXRob2QgbmFtZWQgJ2NvbnN0
cnVjdG9yJyIpOworCisgICAgICAgICAgICAgICAgaWYgKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6
OlN0YXRpYykKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNTdGF0aWNQcml2YXRlQWNjZXNz
b3IgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVj
bGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsKKwogICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0
aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVN
ZXRob2QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzAzMCwx
MiArMzAzNywyNiBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQ
cml2YXRlTWV0aG9kcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkgewogICAgICAgICAgICAgICAg
IGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICAgICAgaWYgKGlzU2V0
dGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3Bl
LT5kZWNsYXJlUHJpdmF0ZVNldHRlcigqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgc2V0dGVyIHdpdGggYW4g
YWxyZWFkeSB1c2VkIG5hbWUiKTsKLSAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRl
QWNjZXNzb3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRlY2xhcmF0aW9uUmVz
dWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVTZXR0ZXIoKmlkZW50LCB0YWcpOworICAg
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVjbGFyYXRpb25SZXN1bHQgJiBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiRGVjbGFyZWQg
cHJpdmF0ZSBzZXR0ZXIgd2l0aCBhbiBhbHJlYWR5IHVzZWQgbmFtZSIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZFByaXZhdGVTdGF0aWNOb25TdGF0aWMsICJDYW5ub3QgZGVj
bGFyZSBhIHByaXZhdGUgc3RhdGljIHNldHRlciBpZiB0aGVyZSBpcyBhIG5vbi1zdGF0aWMgcHJp
dmF0ZSBnZXR0ZXIgd2l0aCB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
Y2xhcmVzU3RhdGljUHJpdmF0ZUFjY2Vzc29yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShkZWNs
YXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkUHJpdmF0ZVN0YXRpY05v
blN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBub24tc3RhdGljIHNldHRlciBpZiB0
aGVyZSBpcyBhIHN0YXRpYyBwcml2YXRlIGdldHRlciB3aXRoIHVzZWQgbmFtZSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQpICYgRGVjbGFy
YXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZh
dGUgZ2V0dGVyIHdpdGggYW4gYWxyZWFkeSB1c2VkIG5hbWUiKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVHZXR0ZXIo
KmlkZW50LCB0YWcpOworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVj
bGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xh
cmF0aW9uLCAiRGVjbGFyZWQgcHJpdmF0ZSBnZXR0ZXIgd2l0aCBhbiBhbHJlYWR5IHVzZWQgbmFt
ZSIpOworICAgICAgICAgICAgICAgICAgICBpZiAodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3Rh
dGljKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVjbGFy
YXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFByaXZhdGVTdGF0aWNOb25T
dGF0aWMsICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc3RhdGljIGdldHRlciBpZiB0aGVyZSBp
cyBhIG5vbi1zdGF0aWMgcHJpdmF0ZSBzZXR0ZXIgd2l0aCB1c2VkIG5hbWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2xhcmVzU3RhdGljUHJpdmF0ZUFjY2Vzc29yID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkUHJpdmF0ZVN0YXRpY05vblN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBub24t
c3RhdGljIGdldHRlciBpZiB0aGVyZSBpcyBhIHN0YXRpYyBwcml2YXRlIHNldHRlciB3aXRoIHVz
ZWQgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlQWNjZXNz
b3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6
OlByaXZhdGVHZXR0ZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC0zMTI1LDcgKzMxNDYsMTUgQEAgcGFyc2VNZXRob2Q6CiAKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZV92PFRyZWVCdWlsZGVyLCBBU1RCdWlsZGVyPikgewogICAgICAgICBpZiAo
Y2xhc3NFbGVtZW50cykKLSAgICAgICAgICAgIGNsYXNzRWxlbWVudHMtPnNldEhhc1ByaXZhdGVB
Y2Nlc3NvcnMoZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IpOworICAgICAgICAgICAgY2xhc3NFbGVt
ZW50cy0+c2V0SGFzUHJpdmF0ZUFjY2Vzc29ycyhkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvciB8fCBk
ZWNsYXJlc1N0YXRpY1ByaXZhdGVBY2Nlc3Nvcik7CisgICAgfQorCisgICAgaWYgKGRlY2xhcmVz
U3RhdGljUHJpdmF0ZU1ldGhvZCB8fCBkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvcikgeworICAgICAg
ICBJZGVudGlmaWVyIHByaXZhdGVDbGFzc0JyYW5kSWRlbnRpZmllciA9IG1fdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUNsYXNzQnJhbmRQcml2YXRlTmFtZSgpOworICAg
ICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBjbGFzc1Njb3Bl
LT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZwcml2YXRlQ2xhc3NCcmFuZElkZW50aWZpZXIsIHRy
dWUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xhcmF0aW9uUmVzdWx0LCBkZWNsYXJhdGlv
blJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQpOworICAgICAgICBjbGFzc1Njb3Bl
LT51c2VWYXJpYWJsZSgmcHJpdmF0ZUNsYXNzQnJhbmRJZGVudGlmaWVyLCBmYWxzZSk7CisgICAg
ICAgIGNsYXNzU2NvcGUtPmFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5
KHByaXZhdGVDbGFzc0JyYW5kSWRlbnRpZmllci5pbXBsKCkpOwogICAgIH0KIAogICAgIGlmIChP
cHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewpAQCAtNDQ1NiwxMCArNDQ4NSw4IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1f
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAgICAgICAiQ2Fubm90IGRlY2xh
cmUgYSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKIAotICAgICAgICBp
ZiAobWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkp
CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6
Tm8sICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRlciBvdXRzaWRlIGEg
Y2xhc3MiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVt
ZW50VGFnOjpTdGF0aWMsICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRl
ciBhcyBzdGF0aWMiKTsKLSAgICAgICAgfQogICAgICAgICBuZXh0KCk7CiAgICAgfSBlbHNlIGlm
IChtYXRjaChET1VCTEUpIHx8IG1hdGNoKElOVEVHRVIpKSB7CiAgICAgICAgIG51bWVyaWNQcm9w
ZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCmluZGV4IDRlOTY2NGZlY2ZiNjkzMzA1NThlN2E4Njc0NmEyZDJiNjZk
OWM1NDAuLjhhYTVkZDgwMGI4MTU0OGFmZmViMDk2NzdlZjI3OTk2NzdlMjRhZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtOTQsNyArOTQsOCBAQCBlbnVtIGNsYXNz
IERlY2xhcmF0aW9uSW1wb3J0VHlwZSB7CiBlbnVtIERlY2xhcmF0aW9uUmVzdWx0IHsKICAgICBW
YWxpZCA9IDAsCiAgICAgSW52YWxpZFN0cmljdE1vZGUgPSAxIDw8IDAsCi0gICAgSW52YWxpZER1
cGxpY2F0ZURlY2xhcmF0aW9uID0gMSA8PCAxCisgICAgSW52YWxpZER1cGxpY2F0ZURlY2xhcmF0
aW9uID0gMSA8PCAxLAorICAgIEludmFsaWRQcml2YXRlU3RhdGljTm9uU3RhdGljID0gMSA8PCAy
CiB9OwogCiB0eXBlZGVmIHVpbnQ4X3QgRGVjbGFyYXRpb25SZXN1bHRNYXNrOwpAQCAtNTAwLDEx
ICs1MDEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0
ZU5hbWUoaWRlbnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJl
UHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIENs
YXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2Fs
RGVjbGFyYXRpb25zKTsKICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERl
Y2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKLSAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGlj
YWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnQpOworICAgICAgICBib29sIGFk
ZFJlc3VsdCA9IHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYyA/IG1fbGV4aWNhbFZhcmlh
Ymxlcy5kZWNsYXJlU3RhdGljUHJpdmF0ZU1ldGhvZChpZGVudCkgOiBtX2xleGljYWxWYXJpYWJs
ZXMuZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnQpOwogCiAgICAgICAgIGlmICghYWRkUmVzdWx0
KSB7CiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbjsKQEAgLTUxNywzMSArNTE4LDQxIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFy
ZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25S
ZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBD
bGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNh
bERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBE
ZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0gICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhp
Y2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50KTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMgPyBtX2xleGljYWxWYXJp
YWJsZXMuZGVjbGFyZVN0YXRpY1ByaXZhdGVTZXR0ZXIoaWRlbnQpIDogbV9sZXhpY2FsVmFyaWFi
bGVzLmRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50KTsKIAotICAgICAgICBpZiAoIWFkZFJlc3Vs
dCkgeworICAgICAgICBpZiAoYWRkUmVzdWx0ID09IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlByaXZh
dGVEZWNsYXJhdGlvblJlc3VsdDo6RHVwbGljYXRlZE5hbWUpIHsKICAgICAgICAgICAgIHJlc3Vs
dCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCisgICAgICAgIGlmIChhZGRSZXN1
bHQgPT0gVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkU3RhdGljTm9uU3RhdGljKSB7CisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25S
ZXN1bHQ6OkludmFsaWRQcml2YXRlU3RhdGljTm9uU3RhdGljOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUdl
dHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOwogICAgICAgICBE
ZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOwot
ICAgICAgICBib29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0
ZUdldHRlcihpZGVudCk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gdGFnID09IENsYXNzRWxl
bWVudFRhZzo6U3RhdGljID8gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVTdGF0aWNQcml2YXRl
R2V0dGVyKGlkZW50KSA6IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUdldHRlcihp
ZGVudCk7CiAKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgaWYgKGFkZFJlc3Vs
dCA9PSBWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQ6OkR1cGxp
Y2F0ZWROYW1lKSB7CiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6Oklu
dmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAorICAgICAgICBpZiAoYWRkUmVzdWx0ID09IFZhcmlhYmxlRW52aXJvbm1lbnQ6
OlByaXZhdGVEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0YXRpY05vblN0YXRpYykgeworICAg
ICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkUHJpdmF0ZVN0YXRp
Y05vblN0YXRpYzsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggMWFkYmU0YjA3OGYyNTM2
YWI2YjA5N2Q1ZTFhN2M3MjUyZjVjOTZkMC4uODEwNmEyMDdjNDcwZTNlMGNlMTc4YmJjNzdjMTVk
ZjMzYThkODlkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBWYXJpYWJsZUVu
dmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4KICAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9ydGVkKCk7CiB9CiAKLWJv
b2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVBY2Nlc3Nvcihjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHMgYWNjZXNzb3JUcmFpdHMpCitWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlRGVjbGFyYXRp
b25SZXN1bHQgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVBY2Nlc3Nvcihjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5
IGFjY2Vzc29yVHJhaXRzKQogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgbV9yYXJl
RGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsK
QEAgLTExMiw3MyArMTEyLDc1IEBAIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVBY2Nlc3Nvcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAgICAgYXV0byBm
aW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsK
IAogICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgp
KSB7Ci0gICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzRGVjbGFyZWQgfCBhY2Nlc3NvclRyYWl0cyk7CisgICAgICAgIFByaXZhdGVOYW1lRW50
cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBhY2Nlc3NvclRy
YWl0cy5iaXRzKCkpOwogCiAgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkoKTsKLSAgICAgICAgaWYgKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNTZXR0ZXIpCisgICAgICAgIGlmIChhY2Nlc3NvclRyYWl0cy5pc1NldHRlcigp
KQogICAgICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlU2V0dGVyKCk7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNHZXR0ZXIpOworICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzLmlz
R2V0dGVyKCkpOwogICAgICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CiAgICAg
ICAgIH0KICAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgICAgICBlbnRyeS5zZXRJc0Nh
cHR1cmVkKCk7CiAgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CiAKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRp
ZmllciwgbWV0YSk7Ci0gICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICAg
ICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAg
ICAgICByZXR1cm4gUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpTdWNjZXNzOwogICAgIH0KIAog
ICAgIFByaXZhdGVOYW1lRW50cnkgY3VycmVudEVudHJ5ID0gZmluZFJlc3VsdC0+dmFsdWU7CiAg
ICAgaWYgKGN1cnJlbnRFbnRyeS5pc0RlY2xhcmVkKCkpIHsKLSAgICAgICAgaWYgKChhY2Nlc3Nv
clRyYWl0cyA9PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyICYmICFjdXJyZW50
RW50cnkuaXNHZXR0ZXIoKSkKLSAgICAgICAgICAgIHx8IChhY2Nlc3NvclRyYWl0cyA9PSBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyICYmICFjdXJyZW50RW50cnkuaXNTZXR0ZXIo
KSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBs
aWNhdGUgcHJpdmF0ZSBhY2Nlc3Nvci4KKyAgICAgICAgaWYgKChhY2Nlc3NvclRyYWl0cy5pc1Nl
dHRlcigpICYmICFjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSkKKyAgICAgICAgICAgIHx8IChhY2Nl
c3NvclRyYWl0cy5pc0dldHRlcigpICYmICFjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSkpCisgICAg
ICAgICAgICByZXR1cm4gUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpEdXBsaWNhdGVkTmFtZTsK
KworICAgICAgICBpZiAoYWNjZXNzb3JUcmFpdHMuaXNTdGF0aWMoKSAhPSBjdXJyZW50RW50cnku
aXNTdGF0aWMoKSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQ6
OkludmFsaWRTdGF0aWNOb25TdGF0aWM7CiAKLSAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRh
KGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBhY2Nlc3NvclRyYWl0cyk7CisgICAgICAgIFByaXZhdGVO
YW1lRW50cnkgbWV0YShjdXJyZW50RW50cnkuYml0cygpIHwgYWNjZXNzb3JUcmFpdHMuYml0cygp
KTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1l
dGEpOwogCiAgICAgICAgIGF1dG8gZW50cnlJdGVyYXRvciA9IG1fbWFwLmZpbmQoaWRlbnRpZmll
cik7CiAgICAgICAgIEFTU0VSVChlbnRyeUl0ZXJhdG9yICE9IG1fbWFwLmVuZCgpKTsKLSAgICAg
ICAgaWYgKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0
ZXIpCisgICAgICAgIGlmIChhY2Nlc3NvclRyYWl0cy5pc1NldHRlcigpKQogICAgICAgICAgICAg
ZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRlU2V0dGVyKCk7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNHZXR0ZXIpOworICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzLmlz
R2V0dGVyKTsKICAgICAgICAgICAgIGVudHJ5SXRlcmF0b3ItPnZhbHVlLnNldElzUHJpdmF0ZUdl
dHRlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
biBQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQ6OlN1Y2Nlc3M7CiAgICAgfQogCiAgICAgLy8gaXQg
d2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KICAgICBhdXRvIGVudHJ5
ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Ci0gICAgaWYgKGFjY2Vzc29yVHJhaXRzID09
IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpCisgICAgaWYgKGFjY2Vzc29yVHJh
aXRzLmlzU2V0dGVyKCkpCiAgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOwogICAg
IGVsc2UgewotICAgICAgICBBU1NFUlQoYWNjZXNzb3JUcmFpdHMgPT0gUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzOjpJc0dldHRlcik7CisgICAgICAgIEFTU0VSVChhY2Nlc3NvclRyYWl0cy5pc0dl
dHRlcigpKTsKICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CiAgICAgfQogICAg
IGVudHJ5LnNldElzQ29uc3QoKTsKICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgbV9t
YXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKIAotICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50
cnkoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNs
YXJlZCB8IGFjY2Vzc29yVHJhaXRzKTsKKyAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1
cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQg
fCBhY2Nlc3NvclRyYWl0cy5iaXRzKCkpOwogICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LnNldChpZGVudGlmaWVyLCBuZXdFbnRyeSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0KKyAgICByZXR1
cm4gUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpTdWNjZXNzOwogfQogCi1ib29sIFZhcmlhYmxl
RW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpCitWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlRGVjbGFy
YXRpb25SZXN1bHQgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzIG1vZGlmaWVyVHJhaXRzKQogewotICAgIHJldHVybiBkZWNsYXJlUHJpdmF0ZUFj
Y2Vzc29yKGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpOwor
ICAgIHJldHVybiBkZWNsYXJlUHJpdmF0ZUFjY2Vzc29yKGlkZW50aWZpZXIsIFByaXZhdGVOYW1l
RW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlciB8IG1vZGlmaWVyVHJhaXRz
KSk7CiB9CiAKLWJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVHZXR0ZXIo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK1ZhcmlhYmxlRW52
aXJvbm1lbnQ6OlByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCBWYXJpYWJsZUVudmlyb25tZW50Ojpk
ZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHMgbW9kaWZpZXJUcmFpdHMpCiB7Ci0gICAg
cmV0dXJuIGRlY2xhcmVQcml2YXRlQWNjZXNzb3IoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzOjpJc0dldHRlcik7CisgICAgcmV0dXJuIGRlY2xhcmVQcml2YXRlQWNjZXNzb3Io
aWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Oklz
R2V0dGVyIHwgbW9kaWZpZXJUcmFpdHMpKTsKIH0KIAotYm9vbCBWYXJpYWJsZUVudmlyb25tZW50
OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKQorYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhv
ZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHMgYWRkaW9uYWxUcmFpdHMpCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQog
ICAgICAgICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJl
RGF0YT4oKTsKQEAgLTE4Niw3ICsxODgsNyBAQCBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRl
Y2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mCiAgICAg
YXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlm
aWVyKTsKIAogICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LmVuZCgpKSB7Ci0gICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9k
KTsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QgfCBhZGRp
b25hbFRyYWl0cyk7CiAKICAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRF
bnRyeSgpOwogICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKQEAgLTIwOCw3ICsy
MTAsNyBAQCBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mCiAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIs
IGVudHJ5KTsKIAogICAgIC8vIGl0IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVj
bGFyZWQuCi0gICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNVc2VkIHwgUHJpdmF0
ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CisgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRh
KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCB8IGFk
ZGlvbmFsVHJhaXRzKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKICAgICByZXR1cm4gIWFkZFJlc3VsdC5pc05l
d0VudHJ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuaAppbmRleCBhNmI5MTY2NGE1ZWVkYjU2NzZlYTI2NzM3N2JhOGRmODQyMjA0
YWM3Li5kMDZkZmQ0ZTNiMDkzODlkMzc4ZjM0YzYxYzQxMDU2ODM3OWYxOGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAt
MTEwLDYgKzExMCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXR0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1NldHRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0dldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzR2V0dGVyOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGlzRmllbGQoKSBjb25zdCB7IHJldHVybiAhaXNQcml2YXRlTWV0
aG9kT3JBY2Vzc29yKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdGF0aWMoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc1N0YXRpYzsgfQogCiAgICAgYm9vbCBpc1ByaXZhdGVNZXRo
b2RPckFjZXNzb3IoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgpIHx8IGlzU2V0dGVyKCkgfHwg
aXNHZXR0ZXIoKTsgfQogCkBAIC0xMzAsNiArMTMxLDcgQEAgcHVibGljOgogICAgICAgICBJc01l
dGhvZCA9IDEgPDwgMiwKICAgICAgICAgSXNHZXR0ZXIgPSAxIDw8IDMsCiAgICAgICAgIElzU2V0
dGVyID0gMSA8PCA0LAorICAgICAgICBJc1N0YXRpYyA9IDEgPDwgNSwKICAgICB9OwogCiBwcml2
YXRlOgpAQCAtMTk2LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtWYXJpYWJsZUFz
RXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CiAK
ICAgICBib29sIGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZDsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21h
cC5zaXplKCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9tYXAuc2l6
ZSgpICYmICFwcml2YXRlTmFtZXNTaXplKCk7IH0KIAogICAgIHVzaW5nIFByaXZhdGVOYW1lc1Jh
bmdlID0gV1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6Oml0ZXJhdG9y
PjsKIApAQCAtMjA0LDE1ICsyMDYsMjggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCB1c2VQcml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZh
dGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogCiAgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1l
dGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0
ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0
aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworICAgIGJv
b2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzIGFkZGlvbmFsVHJhaXRzID0gUHJp
dmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpOb25lKTsKIAotICAgIGJvb2wgZGVjbGFyZVByaXZhdGVB
Y2Nlc3Nvcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiwgUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzKTsKKyAgICBlbnVtIGNsYXNzIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCB7Cisg
ICAgICAgIFN1Y2Nlc3MsCisgICAgICAgIER1cGxpY2F0ZWROYW1lLAorICAgICAgICBJbnZhbGlk
U3RhdGljTm9uU3RhdGljCisgICAgfTsKKworICAgIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCBk
ZWNsYXJlUHJpdmF0ZUFjY2Vzc29yKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mLCBQ
cml2YXRlTmFtZUVudHJ5IGFjY2Vzc29yVHJhaXRzKTsKKyAgICAKKyAgICBib29sIGRlY2xhcmVT
dGF0aWNQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgewor
ICAgICAgICByZXR1cm4gZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCksIHN0
YXRpY19jYXN0PFByaXZhdGVOYW1lRW50cnk6OlRyYWl0cz4oUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc01ldGhvZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTdGF0aWMpKTsKKyAg
ICB9CiAKLSAgICBib29sIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50aWZpZXIuaW1wbCgp
KTsgfQotICAgIGJvb2wgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisgICAgUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0IGRl
Y2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJu
IGRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIFByaXZhdGVE
ZWNsYXJhdGlvblJlc3VsdCBkZWNsYXJlU3RhdGljUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZVNldHRlcihpZGVudGlmaWVy
LmltcGwoKSwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1N0YXRpYyk7IH0KKyAgICBQcml2
YXRlRGVjbGFyYXRpb25SZXN1bHQgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzIG1v
ZGlmaWVyVHJhaXRzID0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpOb25lKTsKIAotICAgIGJv
b2wgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBy
ZXR1cm4gZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0gICAgYm9v
bCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKTsKKyAgICBQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQgZGVjbGFyZVByaXZhdGVH
ZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZh
dGVHZXR0ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgUHJpdmF0ZURlY2xhcmF0aW9uUmVz
dWx0IGRlY2xhcmVTdGF0aWNQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlR2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpLCBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU3RhdGljKTsgfQorICAgIFByaXZhdGVEZWNsYXJhdGlv
blJlc3VsdCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHMgbW9kaWZpZXJUcmFpdHMg
PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Ok5vbmUpOwogCiAgICAgTWFwOjpBZGRSZXN1bHQg
ZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKQogICAgIHsKQEAgLTI1MywxNiArMjY4LDI5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICZtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lczsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKSBjb25zdAorICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBoYXNTdGF0aWNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKLSAgICAgICAgICAg
IGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkKKyAgICAgICAgICAg
IGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSAmJiBlbnRyeS52YWx1
ZS5pc1N0YXRpYygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0K
KyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgQUxXQVlT
X0lOTElORSBib29sIGhhc0luc3RhbmNlUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsK
KyAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSAm
JiAhZW50cnkudmFsdWUuaXNTdGF0aWMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1MTk4
Nzk3ZGYzNThjYzg4NjQzMmQyNTlkZTY2NGRhY2MzYzA5NTVhLi5iNjM2MjliMGY2Y2ZkZmFhYzIw
NTBjMjM1OWM3ZDMzNWQ2OGNjMzA0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAyLTE2ICBDYWlvIExp
bWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgcHJp
dmF0ZSBzdGF0aWMgbWV0aG9kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTkxODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9jbGFzcy1wcml2YXRlLW1ldGhvZC1hY2Nlc3MuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWFjY2Vzc29yLXN0YXRpYy1ub24tc3RhdGljLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanM6
CisgICAgICAgICogc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29yLWlu
bmVyLWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0
aG9kcy1hbmQtYWNjZXNzb3ItbXVsdGlwbGUtZXZhbHVhdGlvbi5qczogQWRkZWQuCisgICAgICAg
ICogc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wb3N0Zml4LW5v
ZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFu
ZC1hY2Nlc3NvcnMtcHJlZml4LW5vZGUuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29u
ZmlnLnlhbWw6CisKIDIwMjEtMDItMTUgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvY2xhc3MtcHJpdmF0ZS1tZXRob2QtYWNjZXNzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvY2xhc3MtcHJpdmF0ZS1tZXRob2QtYWNjZXNzLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUy
NzYyZWE1YjRiMTY4MWY1MzEwZWY4MWQ2OGI3OTQ3ZDQ4M2E4YTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1wcml2YXRlLW1ldGhvZC1hY2Nlc3MuanMKQEAgLTAsMCAr
MSwxMTMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikK
KworZnVuY3Rpb24gYXNzZXJ0KGEsIGUpIHsKKyAgICBpZiAoYSAhPT0gZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGUgKyAiIGJ1dCBnb3Q6ICIgKyBhKTsKK30KKwor
ZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGV4cGVjdGVkRXJyb3IsIGYpIHsKKyAgICB0cnkgeworICAg
ICAgICBmKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9m
IGV4cGVjdGVkRXJyb3IsIHRydWUpOworICAgIH0KK30KKworKCgpID0+IHsKKyAgICBjbGFzcyBD
IHsKKyAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAnc3RhdGlj
JzsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBzdGF0aWNBY2Nlc3MoKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgfQorCisgICAgICAgIGdldCAjZigpIHsKKyAg
ICAgICAgICAgIHJldHVybiAnaW5zdGFuY2UnOworICAgICAgICB9CisKKyAgICAgICAgaW5zdGFu
Y2VBY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jZjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQoQy5zdGF0aWNBY2Nlc3MoKSwg
J3N0YXRpYycpOworICAgIGFzc2VydChjLmluc3RhbmNlQWNjZXNzKCksICdpbnN0YW5jZScpOwor
CisgICAgYXNzZXJ0VGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBDLnN0YXRpY0Fj
Y2Vzcy5jYWxsKGMpOworICAgIH0pOworCisgICAgYXNzZXJ0VGhyb3dzKFR5cGVFcnJvciwgKCkg
PT4geworICAgICAgICBjLmluc3RhbmNlQWNjZXNzLmNhbGwoQyk7CisgICAgfSk7Cit9KSgpOwor
CisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgI20oKSB7CisgICAgICAg
ICAgICByZXR1cm4gJ3N0YXRpYyc7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgc3RhdGlj
QWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20oKTsKKyAgICAgICAgfQorCisg
ICAgICAgICNmKCkgeworICAgICAgICAgICAgcmV0dXJuICdpbnN0YW5jZSc7CisgICAgICAgIH0K
KworICAgICAgICBpbnN0YW5jZUFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNm
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
KEMuc3RhdGljQWNjZXNzKCksICdzdGF0aWMnKTsKKyAgICBhc3NlcnQoYy5pbnN0YW5jZUFjY2Vz
cygpLCAnaW5zdGFuY2UnKTsKKworICAgIGFzc2VydFRocm93cyhUeXBlRXJyb3IsICgpID0+IHsK
KyAgICAgICAgQy5zdGF0aWNBY2Nlc3MuY2FsbChjKTsKKyAgICB9KTsKKworICAgIGFzc2VydFRo
cm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5pbnN0YW5jZUFjY2Vzcy5jYWxsKEMp
OworICAgIH0pOworfSkoKTsKKworKCgpID0+IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3Rh
dGljIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aGlzLl9tID0gdjsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBzdGF0aWNBY2Nlc3MoKSB7CisgICAgICAgICAgICB0aGlzLiNtID0gJ3N0
YXRpYyc7CisgICAgICAgIH0KKworICAgICAgICBzZXQgI2YodikgeworICAgICAgICAgICAgdGhp
cy5fZiA9IHY7CisgICAgICAgIH0KKworICAgICAgICBpbnN0YW5jZUFjY2VzcygpIHsKKyAgICAg
ICAgICAgIHRoaXMuI2YgPSAnaW5zdGFuY2UnOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIEMuc3RhdGljQWNjZXNzKCk7CisgICAgYXNzZXJ0KEMuX20sICdz
dGF0aWMnKTsKKyAgICBjLmluc3RhbmNlQWNjZXNzKCkKKyAgICBhc3NlcnQoYy5fZiwgJ2luc3Rh
bmNlJyk7CisKKyAgICBhc3NlcnRUaHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIEMu
c3RhdGljQWNjZXNzLmNhbGwoYyk7CisgICAgfSk7CisKKyAgICBhc3NlcnRUaHJvd3MoVHlwZUVy
cm9yLCAoKSA9PiB7CisgICAgICAgIGMuaW5zdGFuY2VBY2Nlc3MuY2FsbChDKTsKKyAgICB9KTsK
K30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNzb3Itc3Rh
dGljLW5vbi1zdGF0aWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzc29yLXN0YXRp
Yy1ub24tc3RhdGljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyN2U0ZWRiMDUyMDk3MDE5MjhmMzdhNmEwOTk1
MWE4ZGMxYWEzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFj
Y2Vzc29yLXN0YXRpYy1ub24tc3RhdGljLmpzCkBAIC0wLDAgKzEsNDQgQEAKKy8vQCBydW4oIi0t
dXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5jdGlv
biBhc3NlcnQoYSwgZSwgbSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IobSk7Cit9CisKK2Z1bmN0aW9uIGFzc2VydFN5bnRheEVycm9yKGNvZGUpIHsKKyAgICB0
cnkgeworICAgICAgICBldmFsKGNvZGUpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNvZGUg
ZXhlY3V0ZWQgd2l0aG91dCB0aHJvd2luZyBTeW50YXhFcnJvciIpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgYXNzZXJ0KGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvciwgdHJ1ZSwgZS5tZXNz
YWdlKTsKKyAgICB9Cit9CisKK2Fzc2VydFN5bnRheEVycm9yKGAKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgc3RhdGljIGdldCAjbSgpIHt9CisgICAgICAgIHNldCAjbSh2KSB7fQorICAgIH0KK2Ap
OworCithc3NlcnRTeW50YXhFcnJvcihgCisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgp
IHt9CisgICAgICAgIHN0YXRpYyBzZXQgI20odikge30KKyAgICB9CitgKTsKKworYXNzZXJ0U3lu
dGF4RXJyb3IoYAorICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHt9Cisg
ICAgICAgIGdldCAjbSgpIHt9CisgICAgfQorYCk7CisKK2Fzc2VydFN5bnRheEVycm9yKGAKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHt9CisgICAgICAgIHN0YXRpYyBnZXQgI20o
KSB7fQorICAgIH0KK2ApOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdl
dHRlci1pbm5lci1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVy
LWNsYXNzLmpzCmluZGV4IDA2MGNlZGZlMjU0NmNhNTExODg2YTEwYzYyYzI1YzRhMDBkNTU4YzUu
LjA3NzFlNzkxODBjNjhhNmE3NzkxZWM0Yjk5Y2Q4MTMxMmE0ZDQ4Y2EgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzCkBAIC0xMjYsNyArMTI2LDcgQEAg
bGV0IGFzc2VydCA9IHsKICAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBj
bGFzcycpOwogCiAgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewotICAg
ICAgICBpbm5lckIubWV0aG9kKGMpOworICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QuY2FsbChp
bm5lckIpOwogICAgIH0pOwogfSkoKTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3Rh
dGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3ItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3Nvci1pbm5lci1jbGFzcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNTQwYjUwNDlhNjg5YTZlNzczY2RiOGM0YjRhOTcyNmVlYTViNDgyCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1h
bmQtYWNjZXNzb3ItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwyMjIgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAg
ICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSBy
aHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBi
dWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0
ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9y
KSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAi
ICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9
Cit9OworCisoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyAjbWV0
aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuICdvdXRlciBjbGFzcyc7CisgICAgICAgIH0KKwor
ICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI21ldGhv
ZCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElubmVyQyA9IGNsYXNzIHsKKyAgICAg
ICAgICAgIHN0YXRpYyAjbWV0aG9kMigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2lubmVy
IGNsYXNzJzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhdGljIGFjY2VzcygpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kMigpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcygpLCAnb3V0
ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuSW5uZXJDLmFjY2VzcygpLCAnaW5u
ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgQy5hY2Nlc3MuY2FsbChDLklubmVyQyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuSW5uZXJDLmFjY2Vzcy5j
YWxsKEMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgewor
ICAgICAgICBzdGF0aWMgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHJldHVybiAnb3V0ZXIgY2xh
c3MnOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNtZXRob2QoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBJbm5l
ckMgPSBjbGFzcyB7CisgICAgICAgICAgICBzdGF0aWMgI21ldGhvZDIoKSB7CisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgICAg
IHJldHVybiBvLiNtZXRob2QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoKSwgJ291dGVyIGNsYXNzJyk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShDLklubmVyQy5hY2Nlc3MoQyksICdvdXRlciBjbGFzcycpOworCisgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2Vzcy5j
YWxsKEMuSW5uZXJDKTsKKyAgICB9KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgQy5Jbm5lckMuYWNjZXNzKEMuSW5uZXJDKTsKKyAgICB9KTsK
K30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljIGdl
dCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAnb3V0ZXIgY2xhc3MnOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOwor
ICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElubmVyQyA9IGNsYXNzIHsKKyAgICAgICAgICAg
IHN0YXRpYyBnZXQgI20yKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnaW5uZXIgY2xhc3Mn
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLiNtMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3MoKSwgJ291dGVyIGNsYXNzJyk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShDLklubmVyQy5hY2Nlc3MoKSwgJ2lubmVyIGNsYXNzJyk7CisK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuYWNj
ZXNzLmNhbGwoQy5Jbm5lckMpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLklubmVyQy5hY2Nlc3MuY2FsbChDKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGlj
IGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAnb3V0ZXIgY2xhc3MnOworICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNt
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElubmVyQyA9IGNsYXNzIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBnZXQgI20yKCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
U2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
dGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC5zYW1lVmFsdWUoQy5hY2Nlc3Mo
KSwgJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLklubmVyQy5hY2Nlc3Mo
QyksICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBDLmFjY2Vzcy5jYWxsKEMuSW5uZXJDKTsKKyAgICB9KTsKKworICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5Jbm5lckMu
YWNjZXNzKEMuSW5uZXJDKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgc3RhdGljIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aGlzLl92
ID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAg
ICB0aGlzLiNtID0gJ291dGVyIGNsYXNzJzsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBJ
bm5lckMgPSBjbGFzcyB7CisgICAgICAgICAgICBzdGF0aWMgc2V0ICNtMih2KSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fdiA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRp
YyBhY2Nlc3MoKSB7CisgICAgICAgICAgICAgICAgdGhpcy4jbTIgPSAnaW5uZXIgY2xhc3MnOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQy5hY2Nlc3MoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKEMuX3YsICdvdXRlciBjbGFzcycpOworCisgICAgQy5Jbm5lckMuYWNj
ZXNzKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLklubmVyQy5fdiwgJ2lubmVyIGNsYXNzJyk7
CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMu
YWNjZXNzLmNhbGwoQy5Jbm5lckMpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLklubmVyQy5hY2Nlc3MuY2FsbChDKTsKKyAg
ICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3Rh
dGljIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aGlzLl92ID0gdjsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICB0aGlzLiNtID0gJ291dGVyIGNs
YXNzJzsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBJbm5lckMgPSBjbGFzcyB7CisgICAg
ICAgICAgICBzdGF0aWMgc2V0ICNtMih2KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJTaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICAgICAgby4jbSA9ICdpbm5lciBj
bGFzcyc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDLmFjY2Vzcygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoQy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBDLklu
bmVyQy5hY2Nlc3MoQyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLl92LCAnaW5uZXIgY2xhc3Mn
KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
Qy5hY2Nlc3MuY2FsbChDLklubmVyQyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuSW5uZXJDLmFjY2VzcyhDLklubmVyQyk7
CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJp
dmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3Nvci1tdWx0aXBsZS1ldmFsdWF0aW9uLmpzIGIvSlNUZXN0
cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3ItbXVsdGlwbGUtZXZh
bHVhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzZhZWRlMDdjMjI1MWY2Njg2NGRjNzE4NWY0YTllNzZl
YjE0OWI5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUt
bWV0aG9kcy1hbmQtYWNjZXNzb3ItbXVsdGlwbGUtZXZhbHVhdGlvbi5qcwpAQCAtMCwwICsxLDEw
NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAg
ICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6
IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAg
IG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5j
ZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gY2xh
c3NGYWN0b3J5KCkgeworICAgICAgICByZXR1cm4gY2xhc3MgeworICAgICAgICAgICAgc3RhdGlj
ICNtZXRob2QoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgICAg
IH0KKyAgICAKKyAgICAgICAgICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgICAg
IHJldHVybiBvLiNtZXRob2QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07Cisg
ICAgCisgICAgbGV0IEMxID0gY2xhc3NGYWN0b3J5KCk7CisgICAgbGV0IEMyID0gY2xhc3NGYWN0
b3J5KCk7CisgICAgCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDMS5hY2Nlc3MoQzEpLCAndGVzdCcp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoQzIuYWNjZXNzKEMyKSwgJ3Rlc3QnKTsKKyAgICAKKyAg
ICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBDMS5hY2Nl
c3MoQzIpOworICAgIH0pOworICAgIAorICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbiAoKSB7CisgICAgICAgIEMyLmFjY2VzcyhDMSk7CisgICAgfSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uIGNsYXNzRmFjdG9yeSgpIHsKKyAgICAgICAgcmV0dXJu
IGNsYXNzIHsKKyAgICAgICAgICAgIHN0YXRpYyBnZXQgI20oKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuICd0ZXN0JzsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHN0YXRpYyBh
Y2Nlc3MobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBsZXQgQzEgPSBjbGFzc0ZhY3RvcnkoKTsKKyAg
ICBsZXQgQzIgPSBjbGFzc0ZhY3RvcnkoKTsKKyAgICAKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMx
LmFjY2VzcyhDMSksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDMi5hY2Nlc3MoQzIp
LCAndGVzdCcpOworICAgIAorICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgIEMxLmFjY2VzcyhDMik7CisgICAgfSk7CisgICAgCisgICAgYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgQzIuYWNjZXNzKEMxKTsKKyAg
ICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gY2xhc3NGYWN0b3J5
KCkgeworICAgICAgICByZXR1cm4gY2xhc3MgeworICAgICAgICAgICAgc3RhdGljIHNldCAjbSh2
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fdiA9IHY7CisgICAgICAgICAgICB9CisgICAgCisg
ICAgICAgICAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gJ3Rl
c3QnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBsZXQgQzEg
PSBjbGFzc0ZhY3RvcnkoKTsKKyAgICBsZXQgQzIgPSBjbGFzc0ZhY3RvcnkoKTsKKyAgICAKKyAg
ICBDMS5hY2Nlc3MoQzEpOworICAgIGFzc2VydC5zYW1lVmFsdWUoQzEuX3YsICd0ZXN0Jyk7CisK
KyAgICBDMi5hY2Nlc3MoQzIpOworICAgIGFzc2VydC5zYW1lVmFsdWUoQzIuX3YsICd0ZXN0Jyk7
CisgICAgCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgQzEuYWNjZXNzKEMyKTsKKyAgICB9KTsKKyAgICAKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBDMi5hY2Nlc3MoQzEpOworICAgIH0pOworfSko
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1h
bmQtYWNjZXNzb3JzLXBvc3RmaXgtbm9kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1wcml2
YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wb3N0Zml4LW5vZGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZk
ZjcxNmNlYmZmNDhhMGFiYTMzODEyMThjYmEyZTBiZDg3ZGU4NgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wb3N0
Zml4LW5vZGUuanMKQEAgLTAsMCArMSwxNTggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhz
KTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJv
ciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rp
b24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyAjbWV0aG9kKCkgeworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
I21ldGhvZCsrOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKwor
KGZ1bmN0aW9uKCkgeworICAgIGxldCBleGVjdXRlZEdldHRlciA9IGZhbHNlOworICAgIGNsYXNz
IEMgeworICAgICAgICBzdGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgZXhlY3V0ZWRHZXR0
ZXIgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLiNtKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAg
fSk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHRydWUsIGV4ZWN1dGVkR2V0dGVyKTsKK30pKCk7
CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljIHNldCAjbSh2
KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBleGVjdXRl
ZCIpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNtKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9
KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQg
I20odikgeworICAgICAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZSg1LCB2KTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRpYyBnZXQgI20oKSB7CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jbSsrOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnNhbWVWYWx1ZSg0LCBDLmFj
Y2VzcygpKTsKK30pKCk7CisKKy8vIElnbm9yZWQgcmVzdWx0CisKKyhmdW5jdGlvbigpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljICNtZXRob2QoKSB7CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBjYWxsZWQiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICB0aGlzLiNtZXRob2QtLTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAg
ICBsZXQgZXhlY3V0ZWRHZXR0ZXIgPSBmYWxzZTsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3Rh
dGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgIGV4ZWN1dGVkR2V0dGVyID0gdHJ1ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICB0aGlzLiNtLS07
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKHRydWUsIGV4ZWN1dGVkR2V0dGVyKTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgc3RhdGljIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBleGVjdXRlZCIpOworICAgICAgICB9CisKKyAgICAg
ICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20tLTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgc3RhdGljIHNldCAjbSh2KSB7CisgICAgICAgICAgICBhc3NlcnQuc2Ft
ZVZhbHVlKDMsIHYpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAg
ICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2Vzcygp
IHsKKyAgICAgICAgICAgIHRoaXMuI20tLTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEMuYWNj
ZXNzKCk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0
ZS1tZXRob2RzLWFuZC1hY2Nlc3NvcnMtcHJlZml4LW5vZGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9z
dGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3NvcnMtcHJlZml4LW5vZGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODAxYjEzZjNhNDdiOWY3YzE0MzY1MTRlODNmNmE0MGExMDVlNTI0MwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vz
c29ycy1wcmVmaXgtbm9kZS5qcwpAQCAtMCwwICsxLDE1OCBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6
ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9y
LCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
KyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljICNtZXRob2QoKSB7
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBjYWxsZWQiKTsK
KyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1
cm4gKyt0aGlzLiNtZXRob2Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9
KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAgbGV0IGV4ZWN1dGVkR2V0dGVyID0gZmFsc2U7Cisg
ICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBnZXQgI20oKSB7CisgICAgICAgICAgICBleGVj
dXRlZEdldHRlciA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkg
eworICAgICAgICAgICAgcmV0dXJuICsrdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3Mo
KTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUodHJ1ZSwgZXhlY3V0ZWRHZXR0ZXIp
OworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMg
c2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJl
IGV4ZWN1dGVkIik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAg
ICAgICAgICAgcmV0dXJuICsrdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAg
ICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3Rh
dGljIHNldCAjbSh2KSB7CisgICAgICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKDUsIHYpOworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJl
dHVybiArK3RoaXMuI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KDUsIEMuYWNjZXNzKCkpOworfSkoKTsKKworLy8gSWdub3JlZCByZXN1bHQKKworKGZ1bmN0aW9u
KCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgI21ldGhvZCgpIHsKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIpOworICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIC0tdGhpcy4jbWV0aG9k
OworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBDLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9u
KCkgeworICAgIGxldCBleGVjdXRlZEdldHRlciA9IGZhbHNlOworICAgIGNsYXNzIEMgeworICAg
ICAgICBzdGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgZXhlY3V0ZWRHZXR0ZXIgPSB0cnVl
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIC0t
dGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKKworICAgIGFzc2Vy
dC5zYW1lVmFsdWUodHJ1ZSwgZXhlY3V0ZWRHZXR0ZXIpOworfSkoKTsKKworKGZ1bmN0aW9uKCkg
eworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkIik7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgLS10aGlzLiNtOworICAg
ICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgICAgICBDLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIGFz
c2VydC5zYW1lVmFsdWUoMywgdik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgZ2V0ICNt
KCkgeworICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMg
YWNjZXNzKCkgeworICAgICAgICAgICAgLS10aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisg
ICAgQy5hY2Nlc3MoKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA0MTE2Njc2ZGQxZWE4
NjQzMTU4NjQwOTVlNTQ2MWQxOTBkNmU1YmExLi44MmE2OWIzOGJhZjc3OWQwMjIzNjllZDMzOTg4
ODIyNzc1OWU3YTE5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysr
IGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC03LDYgKzcsNyBAQCBmbGFnczoKICAg
Y2xhc3MtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBjbGFzcy1zdGF0aWMt
ZmllbGRzLXB1YmxpYzogdXNlUHVibGljU3RhdGljQ2xhc3NGaWVsZHMKICAgY2xhc3Mtc3RhdGlj
LWZpZWxkcy1wcml2YXRlOiB1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMKKyAgY2xhc3Mtc3Rh
dGljLW1ldGhvZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZU1ldGhvZHMKICAgSW50bC5EYXRlVGltZUZv
cm1hdC1kYXlQZXJpb2Q6IHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZAogICBTaGFyZWRB
cnJheUJ1ZmZlcjogdXNlU2hhcmVkQXJyYXlCdWZmZXIKICAgQXRvbWljczogdXNlU2hhcmVkQXJy
YXlCdWZmZXIKQEAgLTIwLDcgKzIxLDYgQEAgc2tpcDoKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5k
CiAgICAgLSBsZWdhY3ktcmVnZXhwCiAKLSAgICAtIGNsYXNzLXN0YXRpYy1tZXRob2RzLXByaXZh
dGUKICAgICAtIGNsZWFudXBTb21lCiAgICAgLSBob3N0LWdjLXJlcXVpcmVkCiAgICAgIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDc1Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420629</attachid>
            <date>2021-02-17 04:57:58 -0800</date>
            <delta_ts>2021-02-18 07:30:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219181-20210217095756.patch</filename>
            <type>text/plain</type>
            <size>59439</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjAzNTY3YzBhZDdhMjk1OGI3ZDkzNDllZDgyN2NmNzU0NDg2ODQyLi5hYWRiMmI3ZGQxN2JiZTZk
OTNkYTYzY2M4ZGU1YmUwOWMyN2VmY2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMS0wMi0xNiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IHByaXZhdGUgc3RhdGljIG1ldGhvZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTgxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3RhdGljIHByaXZhdGUgbWV0aG9kcyBhbmQgYWNjZXNzb3JzCisgICAgICAg
IHByb3Bvc2FsIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0YXRp
Yy1jbGFzcy1mZWF0dXJlcy4KKyAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkaXZlcmdlIGEg
Yml0IGZyb20gcHJpdmF0ZSBtZXRob2RzJmFjY2Vzc29ycyBvbiB0aGUKKyAgICAgICAgYnJhbmQg
Y2hlY2ssIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2ltcGxlciB3YXkgdG8gcGVyZm9ybSBzdGF0
aWMKKyAgICAgICAgYnJhbmQgY2hlY2tzLiBTaW5jZSBvbmx5IHRoZSBjbGFzcyBjb25zdHJ1Y3Rv
ciBpcyBhbGxvd2VkIHRvIGFjY2VzcworICAgICAgICBpdHMgcHJpdmF0ZSBtZXRob2RzIGFuZCBh
Y2Nlc3NvcnMsIHdlIHNhdmUgaXQgb24gYEBwcml2YXRlQ2xhc3NCcmFuZGAKKyAgICAgICAgb24g
Y2xhc3MgbGV4aWNhbCBzY29wZSBhbmQgY29tcGFyZSBpdCB3aXRoIHRoZSByZWNlaXZlciBvZiB0
aGUgc3RhdGljCisgICAgICAgIHByaXZhdGUgbWV0aG9kIChhbmQgYWNjZXNzb3JzKSB1c2luZyBg
PT09YCBvcGVyYXRpb24uCisgICAgICAgIFdoaWxlIHRoaXMgZ2VuZW5yYXRlcyBtb3JlIGJ5dGVj
b2RlcyB0aGFuIGBjaGVja19wcml2YXRlX2JyYW5kYCwgd2UKKyAgICAgICAgZG9uJ3QgbmVlZCB0
byBwZXJmb3JtIGEgU3RydWN0dXJlIHRyYW5zaXRpb24gdG8gaW5zdGFsbCBhIGJyYW5kLCAKKyAg
ICAgICAgYW5kIGF2b2lkIGFsbG9jYXRpb24gb2YgYSBwcml2YXRlIHN5bWJvbC4gU2luY2UgZWFj
aCBldmFsdWF0aW9uIG9mIGEKKyAgICAgICAgY2xhc3MgZ2VuZXJhdGVzIGEgZGlmZmVyZW50IGNv
bnN0cnVjdG9yIG9iamVjdCwgd2UgcHJlc2VydmUgdGhlIHNlbWFudGljcworICAgICAgICB0aGF0
IHByaXZhdGUgbWV0aG9kcyBhcmUgbGV4aWNhbGx5IHNjb3BlZC4KKworICAgICAgICAqIGJ1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJp
dmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxs
UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0
YWxsUHJpdmF0ZUNsYXNzQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdldFByaXZhdGVCcmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q2hlY2tQcml2YXRlQnJhbmQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAg
ICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAo
SlNDOjpCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UG9zdGZp
eE5vZGU6OmVtaXREb3QpOgorICAgICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAg
ICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xh
c3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xh
cmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlU2V0
dGVyKToKKyAgICAgICAgKEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAg
ICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlQWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpW
YXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6
OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKEpT
Qzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QpOgorICAgICAgICAq
IHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50Lmg6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1l
RW50cnk6OmlzU3RhdGljIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRl
Y2xhcmVTdGF0aWNQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9u
bWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlU3RhdGljUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlZhcmlh
YmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFy
aWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVN0YXRpY1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAo
SlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNTdGF0aWNQcml2YXRlTWV0aG9kT3JBY2Nlc3Nv
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6Omhhc0luc3RhbmNl
UHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50OjpoYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvciBjb25zdCk6IERlbGV0ZWQuCisK
IDIwMjEtMDItMTYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBEeW5hbWljYWxseSBnZW5lcmF0ZSBlbnRpdGxlbWVudHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCAwNDgwNTA5Y2Y4ZGY5ODEw
MTY5N2YxY2NhNDNkOWQ0MDhiYTZmZTI0Li43YmU2YzVkZjI5MTg0N2MxNDk4ZGY2MmJiNGJjYjAx
YmZkZTNhZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5O
YW1lcy5oCkBAIC0xNzQsOSArMTc0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKHdl
YkFzc2VtYmx5SW5zdGFudGlhdGVTdHJlYW1pbmdJbnRlcm5hbCkgXAogICAgIG1hY3JvKGluc3Rh
bmNlRmllbGRJbml0aWFsaXplcikgXAogICAgIG1hY3JvKHByaXZhdGVCcmFuZCkgXAorICAgIG1h
Y3JvKHByaXZhdGVDbGFzc0JyYW5kKSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHlGdW5jdGlv
bikgXAogICAgIG1hY3JvKGNyZWF0ZVByaXZhdGVTeW1ib2wpIFwKLSAgICBtYWNybyhlbnRyaWVz
KSBcCisgICAgbWFjcm8oZW50cmllcykKIAogCiBuYW1lc3BhY2UgU3ltYm9scyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IGRjOWMyZDk2MWI3ZTkyZDk1ODQwODg4YmQyZGMzZmQ3NDhjN2IyMTYuLmIx
NWIwNDZhZjk0MDkwYWFlZTdiYmRiMGNkOTkzNzIxZGJhMDlmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0yNzc2LDIwICsyNzc2LDI5IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVh
dGVQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogc2NvcGUsIGNvbnN0IEpTVGV4dFBvCiAKICAgICBW
YXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKSk7CiAKLSAgICBlbWl0UHV0VG9TY29w
ZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKKyAgICBlbWl0UHV0VG9TY29w
ZShzY29wZSwgcHJpdmF0ZUJyYW5kVmFyLCBuZXdTeW1ib2wsIERvTm90VGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJn
ZXQpCiB7CiAgICAgVmFyaWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOwogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRWYXJTY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgcHJpdmF0ZUJyYW5kVmFyKTsKLSAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRT
eW1ib2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1RlbXBvcmFyeSgpLCBwcml2YXRlQnJhbmRW
YXJTY29wZS5nZXQoKSk7CisgICAgYm9vbCBpc1N0YXRpYyA9IGZhbHNlOworICAgIFJlZ2lzdGVy
SUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGVtaXRHZXRQcml2YXRlQnJhbmQobmV3VGVtcG9yYXJ5
KCksIHByaXZhdGVCcmFuZFZhclNjb3BlLmdldCgpLCBpc1N0YXRpYyk7CiAgICAgT3BTZXRQcml2
YXRlQnJhbmQ6OmVtaXQodGhpcywgdGFyZ2V0LCBwcml2YXRlQnJhbmRTeW1ib2wpOwogfQogCi1S
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIHNjb3BlKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEluc3RhbGxQcml2YXRlQ2xhc3NCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpCiB7Ci0gICAgVmFy
aWFibGUgcHJpdmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIFZhcmlhYmxlIHByaXZhdGVC
cmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2YXRl
Q2xhc3NCcmFuZFByaXZhdGVOYW1lKCkpOworICAgIGVtaXRQdXRUb1Njb3BlKHNjb3BlUmVnaXN0
ZXIoKSwgcHJpdmF0ZUJyYW5kVmFyLCB0YXJnZXQsIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0
aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworfQorCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIHNjb3BlLCBib29sIGlzU3RhdGljKQoreworICAgIFZhcmlhYmxlIHByaXZhdGVC
cmFuZFZhciA9IGlzU3RhdGljCisgICAgICAgID8gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLnByaXZhdGVDbGFzc0JyYW5kUHJpdmF0ZU5hbWUoKSkKKyAgICAgICAgOiB2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0
ZU5hbWUoKSk7CiAgICAgcmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZSwgcHJpdmF0
ZUJyYW5kVmFyLCBUaHJvd0lmTm90Rm91bmQpOwogfQogCkBAIC0yNzk5LDkgKzI4MDgsMjAgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQcml2YXRlRmllbGRQdXQoUmVnaXN0
ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCoKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiBicmFuZFN5bWJvbCkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDaGVj
a1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZCwgYm9vbCBp
c1N0YXRpYykKIHsKLSAgICBPcENoZWNrUHJpdmF0ZUJyYW5kOjplbWl0KHRoaXMsIGJhc2UsIGJy
YW5kU3ltYm9sKTsKKyAgICBpZiAoaXNTdGF0aWMpIHsKKyAgICAgICAgUmVmPExhYmVsPiBicmFu
ZENoZWNrT2tMYWJlbCA9IG5ld0xhYmVsKCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBj
b25kaXRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZW1pdEVxdWFsaXR5T3A8T3BTdHJp
Y3RlcT4oY29uZGl0aW9uLmdldCgpLCBiYXNlLCBicmFuZCk7CisgICAgICAgIGVtaXRKdW1wSWZU
cnVlKGNvbmRpdGlvbi5nZXQoKSwgYnJhbmRDaGVja09rTGFiZWwuZ2V0KCkpOworICAgICAgICBl
bWl0VGhyb3dUeXBlRXJyb3IoIkNhbm5vdCBhY2Nlc3Mgc3RhdGljIHByaXZhdGUgbWV0aG9kIG9y
IGFjZXNzb3IiKTsKKworICAgICAgICBlbWl0TGFiZWwoYnJhbmRDaGVja09rTGFiZWwuZ2V0KCkp
OworICAgICAgICByZXR1cm47CisgICAgCisgICAgfQorICAgIE9wQ2hlY2tQcml2YXRlQnJhbmQ6
OmVtaXQodGhpcywgYmFzZSwgYnJhbmQpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U3VwZXJTYW1wbGVyQmVnaW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGE1Y2JkMzY5OWE0NzNjYmRj
MDg3ZmJlNmZhMWIwY2ZkYjA0ZDU2N2UuLjlhMWRkYTczZGE5YjY2YTAyMzBlZjA2ZGUyNzRiMGQ1
NGE3OWUwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgyNyw4ICs4MjcsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRz
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKICAgICAgICAgdm9pZCBl
bWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOwotICAgICAgICBSZWdp
c3RlcklEKiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
c2NvcGUpOwotICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZhdGVCcmFuZChSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiBicmFuZCk7CisgICAgICAgIHZvaWQgZW1pdEluc3RhbGxQcml2YXRl
Q2xhc3NCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSwgYm9v
bCBpc1N0YXRpYyk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJpdmF0ZUJyYW5kKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kLCBib29sIGlzU3RhdGljKTsKIAogICAgICAgICB2
b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBs
ZXJFbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCBlNWY4MWE1NmUzYjc5MGMwZmU1ZWExNzhkNDIwNDk2OWFmY2My
YTk1Li4yYTkxYTc2OTA2YzcyMzI2YTA1ODM1MWVlMTcyZjE3Nzg5NjZhZTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBA
IC05ODIsOCArOTgyLDggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0
eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0
ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENo
ZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7CisgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVt
aXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwg
cHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hl
Y2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgpLCBwcml2YXRlVHJh
aXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAg
ICB9CkBAIC05OTIsOCArOTkyLDggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQ
cm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJh
dG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5n
ZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgpLCBwcml2
YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Z2V0dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlckZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRE
aXJlY3RHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2V0dGVyU2V0dGVyT2JqLmdl
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVO
YW1lKCkpOwpAQCAtMTAwNyw4ICsxMDA3LDggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVt
aXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAg
ICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFt
ZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQo
KSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0g
Z2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgp
LCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
aHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhbiB1bmRlZmluZWQgcHJpdmF0ZSBnZXR0
ZXIiKTsKICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAgIH0KQEAgLTEwNDcsOCArMTA0
Nyw4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAgICAgICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKIAotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJv
bCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVC
cmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOworICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0
ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHByaXZhdGVUcmFp
dHMuaXNTdGF0aWMoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJy
YW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRp
YygpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9
IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2Nv
cGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpKTsKQEAgLTEwNjQs
OCArMTA2NCw4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAgICAgICAgICAgICBWYXJpYWJs
ZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgdmFyKTsKIAotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFu
ZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1By
aXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0
UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHByaXZh
dGVUcmFpdHMuaXNTdGF0aWMoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJp
dmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5p
c1N0YXRpYygpKTsKIAogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigi
VHJ5aW5nIHRvIGFjY2VzcyBhbiB1bmRlZmluZWQgcHJpdmF0ZSBzZXR0ZXIiKTsKICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZTsKQEAgLTI0MTIsOCArMjQxMiw4IEBAIFJlZ2lzdGVySUQqIFBvc3Rm
aXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVu
dCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJv
bC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3lt
Ym9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZS5nZXQoKSwgcHJpdmF0ZUJyYW5k
U3ltYm9sLmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcg
dG8gYWNjZXNzIGFuIHVuZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOwpAQCAtMjQyMyw4ICsyNDIz
LDggQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoaWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUg
PSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFBy
aXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJh
bmRTeW1ib2wuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5k
U3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRT
eW1ib2wuZ2V0KCksIHByaXZhdGVUcmFpdHMuaXNTdGF0aWMoKSk7CiAKICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0dldHRlcigp
KSB7CkBAIC0yNzAxLDggKzI3MDEsOCBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShu
dWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJy
YW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9y
LmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQo
KSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2hlY2tQcml2YXRlQnJhbmQoYmFzZS5nZXQoKSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgpLCBw
cml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGFuIHVu
ZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOwpAQCAtMjcxMiw4ICsyNzEyLDggQEAgUmVnaXN0ZXJJ
RCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0
b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdl
dCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENo
ZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSwgcHJp
dmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKIAogICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0dl
dHRlcigpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyU2V0dGVyT2Jq
ID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwpAQCAtNTE1Miw3ICs1MTUyLDggQEAg
UmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZ2VuZXJhdG9yLnB1c2hMZXhpY2FsU2Nv
cGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6
ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6SXNOZXN0ZWQpOwogCiAgICAg
Ym9vbCBoYXNQcml2YXRlTmFtZXMgPSAhIW1fbGV4aWNhbFZhcmlhYmxlcy5wcml2YXRlTmFtZXNT
aXplKCk7Ci0gICAgYm9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFi
bGVzLmhhc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yKCk7CisgICAgYm9vbCBzaG91bGRFbWl0UHJp
dmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFibGVzLmhhc0luc3RhbmNlUHJpdmF0ZU1ldGhvZE9y
QWNjZXNzb3IoKTsKKyAgICBib29sIHNob3VsZEluc3RhbGxCcmFuZE9uQ29uc3RydWN0b3IgPSBt
X2xleGljYWxWYXJpYWJsZXMuaGFzU3RhdGljUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKICAg
ICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQogICAgICAgICBnZW5lcmF0b3IucHVzaFByaXZhdGVBY2Nl
c3NOYW1lcyhtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgpKTsKICAg
ICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKQEAgLTUyNDQsNiArNTI0NSw5IEBAIFJlZ2lz
dGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShzY29w
ZS5nZXQoKSwgY2xhc3NOYW1lVmFyLCBjb25zdHJ1Y3Rvci5nZXQoKSwgVGhyb3dJZk5vdEZvdW5k
LCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsKICAgICB9CiAKKyAgICBpZiAo
c2hvdWxkSW5zdGFsbEJyYW5kT25Db25zdHJ1Y3RvcikKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRJ
bnN0YWxsUHJpdmF0ZUNsYXNzQnJhbmQoY29uc3RydWN0b3IuZ2V0KCkpOworCiAgICAgaWYgKCFz
dGF0aWNGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHN0YXRpY0ZpZWxkSW5pdGlhbGl6ZXIgPSBnZW5lcmF0b3IuZW1pdE5ld0NsYXNzRmllbGRJ
bml0aWFsaXplckZ1bmN0aW9uKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgV1RGTW92ZShzdGF0
aWNGaWVsZExvY2F0aW9ucyksIG1fY2xhc3NIZXJpdGFnZSk7CiAgICAgICAgIC8vIEZJWE1FOiBT
a2lwIHRoaXMgaWYgdGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uIGlzbid0IGdvaW5nIHRvIG5lZWQg
YSBob21lIG9iamVjdCAobm8gZXZhbCBvciBzdXBlciBwcm9wZXJ0aWVzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDNiMWFmMGFkNjkyYmViZDU1OTZjMjhmMjc4
ZDllMzM5YjczNzA1YWMuLmI2NWIzMTkwMzZmOGIxY2E1NTFjZWMxNzlhNzc4YTIyNmRlYzM0YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4ODEsNiArMjg4
MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgY2xhc3NTY29wZS0+c2V0U3RyaWN0
TW9kZSgpOwogICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gZmFsc2U7CiAgICAgYm9v
bCBkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvciA9IGZhbHNlOworICAgIGJvb2wgZGVjbGFyZXNTdGF0
aWNQcml2YXRlTWV0aG9kID0gZmFsc2U7CisgICAgYm9vbCBkZWNsYXJlc1N0YXRpY1ByaXZhdGVB
Y2Nlc3NvciA9IGZhbHNlOwogICAgIG5leHQoKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
cmVxdWlyZW1lbnRzICE9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJl
bnRseSwgdGhlcmUgaXMgbm8gY2FsbGVyIHRoYXQgdXNlcyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVu
dHM6OlVubmFtZWQgZm9yIGNsYXNzIHN5bnRheC4iKTsKQEAgLTMwMDcsOSArMzAwOSwxNCBAQCBw
YXJzZU1ldGhvZDoKICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0
KCk7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRj
aChPUEVOUEFSRU4pKSB7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIHByaXZh
dGUgbWV0aG9kIik7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2Nv
cGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52
YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2Qg
dHdpY2UiKTsKLSAgICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZhdGVNZXRob2QgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJp
dmF0ZU1ldGhvZCgqaWRlbnQsIHRhZykgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxp
Y2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsK
KyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRh
Zzo6U3RhdGljICYmICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNvbnN0cnVjdG9yUHJpdmF0ZUZp
ZWxkLCAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0aWMgcHJpdmF0ZSBtZXRob2QgbmFtZWQgJ2NvbnN0
cnVjdG9yJyIpOworCisgICAgICAgICAgICAgICAgaWYgKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6
OlN0YXRpYykKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNTdGF0aWNQcml2YXRlQWNjZXNz
b3IgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZGVj
bGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsKKwogICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0
aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVN
ZXRob2QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzAzMCwx
MiArMzAzNywyNiBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQ
cml2YXRlTWV0aG9kcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkgewogICAgICAgICAgICAgICAg
IGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICAgICAgaWYgKGlzU2V0
dGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3Bl
LT5kZWNsYXJlUHJpdmF0ZVNldHRlcigqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgc2V0dGVyIHdpdGggYW4g
YWxyZWFkeSB1c2VkIG5hbWUiKTsKLSAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRl
QWNjZXNzb3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRlY2xhcmF0aW9uUmVz
dWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVTZXR0ZXIoKmlkZW50LCB0YWcpOworICAg
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVjbGFyYXRpb25SZXN1bHQgJiBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiRGVjbGFyZWQg
cHJpdmF0ZSBzZXR0ZXIgd2l0aCBhbiBhbHJlYWR5IHVzZWQgbmFtZSIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZFByaXZhdGVTdGF0aWNOb25TdGF0aWMsICJDYW5ub3QgZGVj
bGFyZSBhIHByaXZhdGUgc3RhdGljIHNldHRlciBpZiB0aGVyZSBpcyBhIG5vbi1zdGF0aWMgcHJp
dmF0ZSBnZXR0ZXIgd2l0aCB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRl
Y2xhcmVzU3RhdGljUHJpdmF0ZUFjY2Vzc29yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShkZWNs
YXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkUHJpdmF0ZVN0YXRpY05v
blN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBub24tc3RhdGljIHNldHRlciBpZiB0
aGVyZSBpcyBhIHN0YXRpYyBwcml2YXRlIGdldHRlciB3aXRoIHVzZWQgbmFtZSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQpICYgRGVjbGFy
YXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZh
dGUgZ2V0dGVyIHdpdGggYW4gYWxyZWFkeSB1c2VkIG5hbWUiKTsKLSAgICAgICAgICAgICAgICAg
ICAgZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBh
dXRvIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVHZXR0ZXIo
KmlkZW50LCB0YWcpOworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVj
bGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xh
cmF0aW9uLCAiRGVjbGFyZWQgcHJpdmF0ZSBnZXR0ZXIgd2l0aCBhbiBhbHJlYWR5IHVzZWQgbmFt
ZSIpOworICAgICAgICAgICAgICAgICAgICBpZiAodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3Rh
dGljKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVjbGFy
YXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFByaXZhdGVTdGF0aWNOb25T
dGF0aWMsICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc3RhdGljIGdldHRlciBpZiB0aGVyZSBp
cyBhIG5vbi1zdGF0aWMgcHJpdmF0ZSBzZXR0ZXIgd2l0aCB1c2VkIG5hbWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlY2xhcmVzU3RhdGljUHJpdmF0ZUFjY2Vzc29yID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkUHJpdmF0ZVN0YXRpY05vblN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBub24t
c3RhdGljIGdldHRlciBpZiB0aGVyZSBpcyBhIHN0YXRpYyBwcml2YXRlIHNldHRlciB3aXRoIHVz
ZWQgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlQWNjZXNz
b3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6
OlByaXZhdGVHZXR0ZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC0zMTI1LDcgKzMxNDYsMTUgQEAgcGFyc2VNZXRob2Q6CiAKICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfc2FtZV92PFRyZWVCdWlsZGVyLCBBU1RCdWlsZGVyPikgewogICAgICAgICBpZiAo
Y2xhc3NFbGVtZW50cykKLSAgICAgICAgICAgIGNsYXNzRWxlbWVudHMtPnNldEhhc1ByaXZhdGVB
Y2Nlc3NvcnMoZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IpOworICAgICAgICAgICAgY2xhc3NFbGVt
ZW50cy0+c2V0SGFzUHJpdmF0ZUFjY2Vzc29ycyhkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvciB8fCBk
ZWNsYXJlc1N0YXRpY1ByaXZhdGVBY2Nlc3Nvcik7CisgICAgfQorCisgICAgaWYgKGRlY2xhcmVz
U3RhdGljUHJpdmF0ZU1ldGhvZCB8fCBkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvcikgeworICAgICAg
ICBJZGVudGlmaWVyIHByaXZhdGVDbGFzc0JyYW5kSWRlbnRpZmllciA9IG1fdm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUNsYXNzQnJhbmRQcml2YXRlTmFtZSgpOworICAg
ICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBjbGFzc1Njb3Bl
LT5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZwcml2YXRlQ2xhc3NCcmFuZElkZW50aWZpZXIsIHRy
dWUpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xhcmF0aW9uUmVzdWx0LCBkZWNsYXJhdGlv
blJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQpOworICAgICAgICBjbGFzc1Njb3Bl
LT51c2VWYXJpYWJsZSgmcHJpdmF0ZUNsYXNzQnJhbmRJZGVudGlmaWVyLCBmYWxzZSk7CisgICAg
ICAgIGNsYXNzU2NvcGUtPmFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5
KHByaXZhdGVDbGFzc0JyYW5kSWRlbnRpZmllci5pbXBsKCkpOwogICAgIH0KIAogICAgIGlmIChP
cHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewpAQCAtNDQ1NiwxMCArNDQ4NSw4IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1f
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAgICAgICAiQ2Fubm90IGRlY2xh
cmUgYSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKIAotICAgICAgICBp
ZiAobWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkp
CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6
Tm8sICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRlciBvdXRzaWRlIGEg
Y2xhc3MiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVt
ZW50VGFnOjpTdGF0aWMsICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRl
ciBhcyBzdGF0aWMiKTsKLSAgICAgICAgfQogICAgICAgICBuZXh0KCk7CiAgICAgfSBlbHNlIGlm
IChtYXRjaChET1VCTEUpIHx8IG1hdGNoKElOVEVHRVIpKSB7CiAgICAgICAgIG51bWVyaWNQcm9w
ZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCmluZGV4IDRlOTY2NGZlY2ZiNjkzMzA1NThlN2E4Njc0NmEyZDJiNjZk
OWM1NDAuLjhhYTVkZDgwMGI4MTU0OGFmZmViMDk2NzdlZjI3OTk2NzdlMjRhZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtOTQsNyArOTQsOCBAQCBlbnVtIGNsYXNz
IERlY2xhcmF0aW9uSW1wb3J0VHlwZSB7CiBlbnVtIERlY2xhcmF0aW9uUmVzdWx0IHsKICAgICBW
YWxpZCA9IDAsCiAgICAgSW52YWxpZFN0cmljdE1vZGUgPSAxIDw8IDAsCi0gICAgSW52YWxpZER1
cGxpY2F0ZURlY2xhcmF0aW9uID0gMSA8PCAxCisgICAgSW52YWxpZER1cGxpY2F0ZURlY2xhcmF0
aW9uID0gMSA8PCAxLAorICAgIEludmFsaWRQcml2YXRlU3RhdGljTm9uU3RhdGljID0gMSA8PCAy
CiB9OwogCiB0eXBlZGVmIHVpbnQ4X3QgRGVjbGFyYXRpb25SZXN1bHRNYXNrOwpAQCAtNTAwLDEx
ICs1MDEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2xleGljYWxWYXJpYWJsZXMudXNlUHJpdmF0
ZU5hbWUoaWRlbnQpOwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJl
UHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIENs
YXNzRWxlbWVudFRhZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2Fs
RGVjbGFyYXRpb25zKTsKICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERl
Y2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKLSAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGlj
YWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnQpOworICAgICAgICBib29sIGFk
ZFJlc3VsdCA9IHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYyA/IG1fbGV4aWNhbFZhcmlh
Ymxlcy5kZWNsYXJlU3RhdGljUHJpdmF0ZU1ldGhvZChpZGVudCkgOiBtX2xleGljYWxWYXJpYWJs
ZXMuZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnQpOwogCiAgICAgICAgIGlmICghYWRkUmVzdWx0
KSB7CiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBs
aWNhdGVEZWNsYXJhdGlvbjsKQEAgLTUxNywzMSArNTE4LDQxIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFy
ZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRpb25S
ZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBD
bGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNh
bERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBE
ZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0gICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhp
Y2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50KTsKKyAgICAgICAgYXV0byBh
ZGRSZXN1bHQgPSB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMgPyBtX2xleGljYWxWYXJp
YWJsZXMuZGVjbGFyZVN0YXRpY1ByaXZhdGVTZXR0ZXIoaWRlbnQpIDogbV9sZXhpY2FsVmFyaWFi
bGVzLmRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50KTsKIAotICAgICAgICBpZiAoIWFkZFJlc3Vs
dCkgeworICAgICAgICBpZiAoYWRkUmVzdWx0ID09IFZhcmlhYmxlRW52aXJvbm1lbnQ6OlByaXZh
dGVEZWNsYXJhdGlvblJlc3VsdDo6RHVwbGljYXRlZE5hbWUpIHsKICAgICAgICAgICAgIHJlc3Vs
dCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCisgICAgICAgIGlmIChhZGRSZXN1
bHQgPT0gVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkU3RhdGljTm9uU3RhdGljKSB7CisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25S
ZXN1bHQ6OkludmFsaWRQcml2YXRlU3RhdGljTm9uU3RhdGljOworICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUdl
dHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQ2xhc3NFbGVtZW50VGFnIHRhZykKICAgICB7
CiAgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOwogICAgICAgICBE
ZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOwot
ICAgICAgICBib29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0
ZUdldHRlcihpZGVudCk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gdGFnID09IENsYXNzRWxl
bWVudFRhZzo6U3RhdGljID8gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVTdGF0aWNQcml2YXRl
R2V0dGVyKGlkZW50KSA6IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUdldHRlcihp
ZGVudCk7CiAKLSAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgaWYgKGFkZFJlc3Vs
dCA9PSBWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQ6OkR1cGxp
Y2F0ZWROYW1lKSB7CiAgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6Oklu
dmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAorICAgICAgICBpZiAoYWRkUmVzdWx0ID09IFZhcmlhYmxlRW52aXJvbm1lbnQ6
OlByaXZhdGVEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0YXRpY05vblN0YXRpYykgeworICAg
ICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkUHJpdmF0ZVN0YXRp
Y05vblN0YXRpYzsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggMWFkYmU0YjA3OGYyNTM2
YWI2YjA5N2Q1ZTFhN2M3MjUyZjVjOTZkMC4uZmEwMDYwNjA2NGIxODZkODE5MzJjN2U5MTIxMTNm
YWQ1ZGM1ODA3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBWYXJpYWJsZUVu
dmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4KICAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9ydGVkKCk7CiB9CiAKLWJv
b2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVBY2Nlc3Nvcihjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHMgYWNjZXNzb3JUcmFpdHMpCitWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlRGVjbGFyYXRp
b25SZXN1bHQgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVBY2Nlc3Nvcihjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5
IGFjY2Vzc29yVHJhaXRzKQogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgbV9yYXJl
RGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsK
QEAgLTExMiw3MyArMTEyLDc1IEBAIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVBY2Nlc3Nvcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAgICAgYXV0byBm
aW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsK
IAogICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgp
KSB7Ci0gICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzRGVjbGFyZWQgfCBhY2Nlc3NvclRyYWl0cyk7CisgICAgICAgIFByaXZhdGVOYW1lRW50
cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBhY2Nlc3NvclRy
YWl0cy5iaXRzKCkpOwogCiAgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50
RW50cnkoKTsKLSAgICAgICAgaWYgKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNTZXR0ZXIpCisgICAgICAgIGlmIChhY2Nlc3NvclRyYWl0cy5pc1NldHRlcigp
KQogICAgICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlU2V0dGVyKCk7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNHZXR0ZXIpOworICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzLmlz
R2V0dGVyKCkpOwogICAgICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CiAgICAg
ICAgIH0KICAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgICAgICBlbnRyeS5zZXRJc0Nh
cHR1cmVkKCk7CiAgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CiAKLSAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRp
ZmllciwgbWV0YSk7Ci0gICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICAg
ICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAg
ICAgICByZXR1cm4gUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpTdWNjZXNzOwogICAgIH0KIAog
ICAgIFByaXZhdGVOYW1lRW50cnkgY3VycmVudEVudHJ5ID0gZmluZFJlc3VsdC0+dmFsdWU7CiAg
ICAgaWYgKGN1cnJlbnRFbnRyeS5pc0RlY2xhcmVkKCkpIHsKLSAgICAgICAgaWYgKChhY2Nlc3Nv
clRyYWl0cyA9PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyICYmICFjdXJyZW50
RW50cnkuaXNHZXR0ZXIoKSkKLSAgICAgICAgICAgIHx8IChhY2Nlc3NvclRyYWl0cyA9PSBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyICYmICFjdXJyZW50RW50cnkuaXNTZXR0ZXIo
KSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBs
aWNhdGUgcHJpdmF0ZSBhY2Nlc3Nvci4KKyAgICAgICAgaWYgKChhY2Nlc3NvclRyYWl0cy5pc1Nl
dHRlcigpICYmICFjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSkKKyAgICAgICAgICAgIHx8IChhY2Nl
c3NvclRyYWl0cy5pc0dldHRlcigpICYmICFjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSkpCisgICAg
ICAgICAgICByZXR1cm4gUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpEdXBsaWNhdGVkTmFtZTsK
KworICAgICAgICBpZiAoYWNjZXNzb3JUcmFpdHMuaXNTdGF0aWMoKSAhPSBjdXJyZW50RW50cnku
aXNTdGF0aWMoKSkKKyAgICAgICAgICAgIHJldHVybiBQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQ6
OkludmFsaWRTdGF0aWNOb25TdGF0aWM7CiAKLSAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRh
KGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBhY2Nlc3NvclRyYWl0cyk7CisgICAgICAgIFByaXZhdGVO
YW1lRW50cnkgbWV0YShjdXJyZW50RW50cnkuYml0cygpIHwgYWNjZXNzb3JUcmFpdHMuYml0cygp
KTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1l
dGEpOwogCiAgICAgICAgIGF1dG8gZW50cnlJdGVyYXRvciA9IG1fbWFwLmZpbmQoaWRlbnRpZmll
cik7CiAgICAgICAgIEFTU0VSVChlbnRyeUl0ZXJhdG9yICE9IG1fbWFwLmVuZCgpKTsKLSAgICAg
ICAgaWYgKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0
ZXIpCisgICAgICAgIGlmIChhY2Nlc3NvclRyYWl0cy5pc1NldHRlcigpKQogICAgICAgICAgICAg
ZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRlU2V0dGVyKCk7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNHZXR0ZXIpOworICAgICAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzLmlz
R2V0dGVyKCkpOwogICAgICAgICAgICAgZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRl
R2V0dGVyKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdDo6U3VjY2VzczsKICAgICB9CiAKICAgICAvLyBp
dCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgogICAgIGF1dG8gZW50
cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKLSAgICBpZiAoYWNjZXNzb3JUcmFpdHMg
PT0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcikKKyAgICBpZiAoYWNjZXNzb3JU
cmFpdHMuaXNTZXR0ZXIoKSkKICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlU2V0dGVyKCk7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChhY2Nlc3NvclRyYWl0cyA9PSBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKyAgICAgICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzLmlz
R2V0dGVyKCkpOwogICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVHZXR0ZXIoKTsKICAgICB9CiAg
ICAgZW50cnkuc2V0SXNDb25zdCgpOwogICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKICAgICBt
X21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwogCi0gICAgUHJpdmF0ZU5hbWVFbnRyeSBuZXdF
bnRyeShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0Rl
Y2xhcmVkIHwgYWNjZXNzb3JUcmFpdHMpOworICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50cnko
Y3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJl
ZCB8IGFjY2Vzc29yVHJhaXRzLmJpdHMoKSk7CiAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuc2V0KGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKLSAgICByZXR1cm4gdHJ1ZTsKLQorICAgIHJl
dHVybiBQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQ6OlN1Y2Nlc3M7CiB9CiAKLWJvb2wgVmFyaWFi
bGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK1ZhcmlhYmxlRW52aXJvbm1lbnQ6OlByaXZhdGVEZWNs
YXJhdGlvblJlc3VsdCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZVNldHRlcihj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHMgbW9kaWZpZXJUcmFpdHMpCiB7Ci0gICAgcmV0dXJuIGRlY2xhcmVQcml2YXRl
QWNjZXNzb3IoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcik7
CisgICAgcmV0dXJuIGRlY2xhcmVQcml2YXRlQWNjZXNzb3IoaWRlbnRpZmllciwgUHJpdmF0ZU5h
bWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyIHwgbW9kaWZpZXJUcmFp
dHMpKTsKIH0KIAotYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRl
cihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQorVmFyaWFibGVF
bnZpcm9ubWVudDo6UHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0IFZhcmlhYmxlRW52aXJvbm1lbnQ6
OmRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0cyBtb2RpZmllclRyYWl0cykKIHsKLSAg
ICByZXR1cm4gZGVjbGFyZVByaXZhdGVBY2Nlc3NvcihpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKyAgICByZXR1cm4gZGVjbGFyZVByaXZhdGVBY2Nlc3Nv
cihpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6
SXNHZXR0ZXIgfCBtb2RpZmllclRyYWl0cykpOwogfQogCi1ib29sIFZhcmlhYmxlRW52aXJvbm1l
bnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0
aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIsIFByaXZhdGVO
YW1lRW50cnk6OlRyYWl0cyBhZGRpb25hbFRyYWl0cykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEp
CiAgICAgICAgIG1fcmFyZURhdGEgPSBtYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJh
cmVEYXRhPigpOwpAQCAtMTg2LDcgKzE4OCw3IEBAIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6
ZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYKICAg
ICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50
aWZpZXIpOwogCiAgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuZW5kKCkpIHsKLSAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50
cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRo
b2QpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCB8IGFk
ZGlvbmFsVHJhaXRzKTsKIAogICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5KCk7CiAgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZU1ldGhvZCgpOwpAQCAtMjA4LDcg
KzIxMCw3IEBAIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2Qo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYKICAgICBtX21hcC5hZGQoaWRlbnRpZmll
ciwgZW50cnkpOwogCiAgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBk
ZWNsYXJlZC4KLSAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1VzZWQgfCBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKyAgICBQcml2YXRlTmFtZUVudHJ5IG1l
dGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzOjpJc1VzZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kIHwg
YWRkaW9uYWxUcmFpdHMpOwogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEpOwogICAgIHJldHVybiAhYWRkUmVzdWx0Lmlz
TmV3RW50cnk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oCmluZGV4IGE2YjkxNjY0YTVlZWRiNTY3NmVhMjY3Mzc3YmE4ZGY4NDIy
MDRhYzcuLmQwNmRmZDRlM2IwOTM4OWQzNzhmMzRjNjFjNDEwNTY4Mzc5ZjE4ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBA
IC0xMTAsNiArMTEwLDcgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1NldHRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2V0dGVyOyB9CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNHZXR0ZXI7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNGaWVsZCgpIGNvbnN0IHsgcmV0dXJuICFpc1ByaXZhdGVN
ZXRob2RPckFjZXNzb3IoKTsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1N0YXRpYygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU3RhdGljOyB9CiAKICAgICBib29sIGlzUHJpdmF0ZU1l
dGhvZE9yQWNlc3NvcigpIGNvbnN0IHsgcmV0dXJuIGlzTWV0aG9kKCkgfHwgaXNTZXR0ZXIoKSB8
fCBpc0dldHRlcigpOyB9CiAKQEAgLTEzMCw2ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIElz
TWV0aG9kID0gMSA8PCAyLAogICAgICAgICBJc0dldHRlciA9IDEgPDwgMywKICAgICAgICAgSXNT
ZXR0ZXIgPSAxIDw8IDQsCisgICAgICAgIElzU3RhdGljID0gMSA8PCA1LAogICAgIH07CiAKIHBy
aXZhdGU6CkBAIC0xOTYsNyArMTk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya1ZhcmlhYmxl
QXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsK
IAogICAgIGJvb2wgaXNFdmVyeXRoaW5nQ2FwdHVyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRXZl
cnl0aGluZ0NhcHR1cmVkOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1f
bWFwLnNpemUoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21hcC5z
aXplKCkgJiYgIXByaXZhdGVOYW1lc1NpemUoKTsgfQogCiAgICAgdXNpbmcgUHJpdmF0ZU5hbWVz
UmFuZ2UgPSBXVEY6Okl0ZXJhdG9yUmFuZ2U8UHJpdmF0ZU5hbWVFbnZpcm9ubWVudDo6aXRlcmF0
b3I+OwogCkBAIC0yMDQsMTUgKzIwNiwyOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHVzZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgdXNlUHJp
dmF0ZU5hbWUoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAKICAgICBib29sIGRlY2xhcmVQcml2YXRl
TWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2
YXRlTWV0aG9kKGlkZW50aWZpZXIuaW1wbCgpKTsgfQotICAgIGJvb2wgZGVjbGFyZVByaXZhdGVN
ZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisgICAg
Ym9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHMgYWRkaW9uYWxUcmFpdHMgPSBQ
cml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Ok5vbmUpOwogCi0gICAgYm9vbCBkZWNsYXJlUHJpdmF0
ZUFjY2Vzc29yKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mLCBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHMpOworICAgIGVudW0gY2xhc3MgUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0IHsK
KyAgICAgICAgU3VjY2VzcywKKyAgICAgICAgRHVwbGljYXRlZE5hbWUsCisgICAgICAgIEludmFs
aWRTdGF0aWNOb25TdGF0aWMKKyAgICB9OworCisgICAgUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0
IGRlY2xhcmVQcml2YXRlQWNjZXNzb3IoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYs
IFByaXZhdGVOYW1lRW50cnkgYWNjZXNzb3JUcmFpdHMpOworICAgIAorICAgIGJvb2wgZGVjbGFy
ZVN0YXRpY1ByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKKyAgICB7
CisgICAgICAgIHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSwg
c3RhdGljX2Nhc3Q8UHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzPihQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzTWV0aG9kIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1N0YXRpYykpOwor
ICAgIH0KIAotICAgIGJvb2wgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVTZXR0ZXIoaWRlbnRpZmllci5pbXBs
KCkpOyB9Ci0gICAgYm9vbCBkZWNsYXJlUHJpdmF0ZVNldHRlcihjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKyAgICBQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQg
ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1
cm4gZGVjbGFyZVByaXZhdGVTZXR0ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgUHJpdmF0
ZURlY2xhcmF0aW9uUmVzdWx0IGRlY2xhcmVTdGF0aWNQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50aWZp
ZXIuaW1wbCgpLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU3RhdGljKTsgfQorICAgIFBy
aXZhdGVEZWNsYXJhdGlvblJlc3VsdCBkZWNsYXJlUHJpdmF0ZVNldHRlcihjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHMg
bW9kaWZpZXJUcmFpdHMgPSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Ok5vbmUpOwogCi0gICAg
Ym9vbCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHJldHVybiBkZWNsYXJlUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBi
b29sIGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpOworICAgIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCBkZWNsYXJlUHJpdmF0
ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJp
dmF0ZUdldHRlcihpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBQcml2YXRlRGVjbGFyYXRpb25S
ZXN1bHQgZGVjbGFyZVN0YXRpY1ByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnRpZmllci5pbXBsKCksIFBy
aXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTdGF0aWMpOyB9CisgICAgUHJpdmF0ZURlY2xhcmF0
aW9uUmVzdWx0IGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0cyBtb2RpZmllclRyYWl0
cyA9IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6Tm9uZSk7CiAKICAgICBNYXA6OkFkZFJlc3Vs
dCBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpCiAgICAgewpAQCAtMjUzLDE2ICsyNjgsMjkgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gJm1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzOwogICAgIH0KIAotICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBoYXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0CisgICAgQUxXQVlT
X0lOTElORSBib29sIGhhc1N0YXRpY1ByaXZhdGVNZXRob2RPckFjY2Vzc29yKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkgewotICAgICAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpKQorICAgICAgICAg
ICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpICYmIGVudHJ5LnZh
bHVlLmlzU3RhdGljKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
LQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaGFzSW5zdGFuY2VQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0
CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIAorICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBwcml2YXRlTmFtZXMoKSkg
eworICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNlc3Nvcigp
ICYmICFlbnRyeS52YWx1ZS5pc1N0YXRpYygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUx
OTg3OTdkZjM1OGNjODg2NDMyZDI1OWRlNjY0ZGFjYzNjMDk1NWEuLmI2MzYyOWIwZjZjZmRmYWFj
MjA1MGMyMzU5YzdkMzM1ZDY4Y2MzMDQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDItMTYgIENhaW8g
TGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBw
cml2YXRlIHN0YXRpYyBtZXRob2QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTE4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2NsYXNzLXByaXZhdGUtbWV0aG9kLWFjY2Vzcy5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYWNjZXNzb3Itc3RhdGljLW5vbi1zdGF0aWMu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5q
czoKKyAgICAgICAgKiBzdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3It
aW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9zdGF0aWMtcHJpdmF0ZS1t
ZXRob2RzLWFuZC1hY2Nlc3Nvci1tdWx0aXBsZS1ldmFsdWF0aW9uLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBzdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBvc3RmaXgt
bm9kZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhvZHMt
YW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9j
b25maWcueWFtbDoKKwogMjAyMS0wMi0xNSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5j
b20+CiAKICAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgYWNjZXNzb3JzCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9jbGFzcy1wcml2YXRlLW1ldGhvZC1hY2Nlc3MuanMgYi9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1wcml2YXRlLW1ldGhvZC1hY2Nlc3MuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTI3NjJlYTViNGIxNjgxZjUzMTBlZjgxZDY4Yjc5NDdkNDgzYThhOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2NsYXNzLXByaXZhdGUtbWV0aG9kLWFjY2Vzcy5qcwpAQCAtMCww
ICsxLDExMyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitmdW5jdGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQor
CitmdW5jdGlvbiBhc3NlcnRUaHJvd3MoZXhwZWN0ZWRFcnJvciwgZikgeworICAgIHRyeSB7Cisg
ICAgICAgIGYoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNl
b2YgZXhwZWN0ZWRFcnJvciwgdHJ1ZSk7CisgICAgfQorfQorCisoKCkgPT4geworICAgIGNsYXNz
IEMgeworICAgICAgICBzdGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICdzdGF0
aWMnOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIHN0YXRpY0FjY2VzcygpIHsKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLiNtOworICAgICAgICB9CisKKyAgICAgICAgZ2V0ICNmKCkgewor
ICAgICAgICAgICAgcmV0dXJuICdpbnN0YW5jZSc7CisgICAgICAgIH0KKworICAgICAgICBpbnN0
YW5jZUFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydChDLnN0YXRpY0FjY2Vzcygp
LCAnc3RhdGljJyk7CisgICAgYXNzZXJ0KGMuaW5zdGFuY2VBY2Nlc3MoKSwgJ2luc3RhbmNlJyk7
CisKKyAgICBhc3NlcnRUaHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIEMuc3RhdGlj
QWNjZXNzLmNhbGwoYyk7CisgICAgfSk7CisKKyAgICBhc3NlcnRUaHJvd3MoVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgICAgIGMuaW5zdGFuY2VBY2Nlc3MuY2FsbChDKTsKKyAgICB9KTsKK30pKCk7
CisKKygoKSA9PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyAjbSgpIHsKKyAgICAg
ICAgICAgIHJldHVybiAnc3RhdGljJzsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBzdGF0
aWNBY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgICAgICB9CisK
KyAgICAgICAgI2YoKSB7CisgICAgICAgICAgICByZXR1cm4gJ2luc3RhbmNlJzsKKyAgICAgICAg
fQorCisgICAgICAgIGluc3RhbmNlQWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
I2YoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3Nl
cnQoQy5zdGF0aWNBY2Nlc3MoKSwgJ3N0YXRpYycpOworICAgIGFzc2VydChjLmluc3RhbmNlQWNj
ZXNzKCksICdpbnN0YW5jZScpOworCisgICAgYXNzZXJ0VGhyb3dzKFR5cGVFcnJvciwgKCkgPT4g
eworICAgICAgICBDLnN0YXRpY0FjY2Vzcy5jYWxsKGMpOworICAgIH0pOworCisgICAgYXNzZXJ0
VGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmluc3RhbmNlQWNjZXNzLmNhbGwo
Qyk7CisgICAgfSk7Cit9KSgpOworCisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAgICAgICBz
dGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX20gPSB2OworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIHN0YXRpY0FjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20gPSAn
c3RhdGljJzsKKyAgICAgICAgfQorCisgICAgICAgIHNldCAjZih2KSB7CisgICAgICAgICAgICB0
aGlzLl9mID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGluc3RhbmNlQWNjZXNzKCkgeworICAg
ICAgICAgICAgdGhpcy4jZiA9ICdpbnN0YW5jZSc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgQy5zdGF0aWNBY2Nlc3MoKTsKKyAgICBhc3NlcnQoQy5fbSwg
J3N0YXRpYycpOworICAgIGMuaW5zdGFuY2VBY2Nlc3MoKQorICAgIGFzc2VydChjLl9mLCAnaW5z
dGFuY2UnKTsKKworICAgIGFzc2VydFRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAg
Qy5zdGF0aWNBY2Nlc3MuY2FsbChjKTsKKyAgICB9KTsKKworICAgIGFzc2VydFRocm93cyhUeXBl
RXJyb3IsICgpID0+IHsKKyAgICAgICAgYy5pbnN0YW5jZUFjY2Vzcy5jYWxsKEMpOworICAgIH0p
OworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1hY2Nlc3Nvci1z
dGF0aWMtbm9uLXN0YXRpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNzb3Itc3Rh
dGljLW5vbi1zdGF0aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI3ZTRlZGIwNTIwOTcwMTkyOGYzN2E2YTA5
OTUxYThkYzFhYTNhNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
YWNjZXNzb3Itc3RhdGljLW5vbi1zdGF0aWMuanMKQEAgLTAsMCArMSw0NCBAQAorLy9AIHJ1bigi
LS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0
aW9uIGFzc2VydChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihtKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0U3ludGF4RXJyb3IoY29kZSkgeworICAg
IHRyeSB7CisgICAgICAgIGV2YWwoY29kZSk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29k
ZSBleGVjdXRlZCB3aXRob3V0IHRocm93aW5nIFN5bnRheEVycm9yIik7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yLCB0cnVlLCBlLm1l
c3NhZ2UpOworICAgIH0KK30KKworYXNzZXJ0U3ludGF4RXJyb3IoYAorICAgIGNsYXNzIEMgewor
ICAgICAgICBzdGF0aWMgZ2V0ICNtKCkge30KKyAgICAgICAgc2V0ICNtKHYpIHt9CisgICAgfQor
YCk7CisKK2Fzc2VydFN5bnRheEVycm9yKGAKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNt
KCkge30KKyAgICAgICAgc3RhdGljIHNldCAjbSh2KSB7fQorICAgIH0KK2ApOworCithc3NlcnRT
eW50YXhFcnJvcihgCisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQgI20odikge30K
KyAgICAgICAgZ2V0ICNtKCkge30KKyAgICB9CitgKTsKKworYXNzZXJ0U3ludGF4RXJyb3IoYAor
ICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikge30KKyAgICAgICAgc3RhdGljIGdldCAj
bSgpIHt9CisgICAgfQorYCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
Z2V0dGVyLWlubmVyLWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5u
ZXItY2xhc3MuanMKaW5kZXggMDYwY2VkZmUyNTQ2Y2E1MTE4ODZhMTBjNjJjMjVjNGEwMGQ1NThj
NS4uMDc3MWU3OTE4MGM2OGE2YTc3OTFlYzRiOTljZDgxMzEyYTRkNDhjYSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKKysrIGIvSlNUZXN0
cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTEyNiw3ICsxMjYsNyBA
QCBsZXQgYXNzZXJ0ID0gewogICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVy
IGNsYXNzJyk7CiAKICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgICAgIEMucHJvdG90eXBlLm1ldGhvZC5jYWxs
KGlubmVyQik7CiAgICAgfSk7CiB9KSgpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9z
dGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3Nvci1pbm5lci1jbGFzcy5qcyBiL0pTVGVz
dHMvc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29yLWlubmVyLWNsYXNz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1NDBiNTA0OWE2ODlhNmU3NzNjZGI4YzRiNGE5NzI2ZWVhNWI0ODIK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2Rz
LWFuZC1hY2Nlc3Nvci1pbm5lci1jbGFzcy5qcwpAQCAtMCwwICsxLDIyMiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09
IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAi
IGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBl
Y3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAg
IH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJy
b3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAg
IH0KK307CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljICNt
ZXRob2QoKSB7CisgICAgICAgICAgICByZXR1cm4gJ291dGVyIGNsYXNzJzsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0
aG9kKCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSW5uZXJDID0gY2xhc3MgeworICAg
ICAgICAgICAgc3RhdGljICNtZXRob2QyKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnaW5u
ZXIgY2xhc3MnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYWNjZXNzKCkg
eworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QyKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKCksICdv
dXRlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoQy5Jbm5lckMuYWNjZXNzKCksICdp
bm5lciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgICAgICBDLmFjY2Vzcy5jYWxsKEMuSW5uZXJDKTsKKyAgICB9KTsKKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5Jbm5lckMuYWNjZXNz
LmNhbGwoQyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgIHN0YXRpYyAjbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuICdvdXRlciBj
bGFzcyc7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI21ldGhvZCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElu
bmVyQyA9IGNsYXNzIHsKKyAgICAgICAgICAgIHN0YXRpYyAjbWV0aG9kMigpIHsKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBjYWxsZWQiKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG8uI21ldGhvZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcygpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKEMuSW5uZXJDLmFjY2VzcyhDKSwgJ291dGVyIGNsYXNzJyk7CisKKyAg
ICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNz
LmNhbGwoQy5Jbm5lckMpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgICAgICBDLklubmVyQy5hY2Nlc3MoQy5Jbm5lckMpOworICAgIH0p
OworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMg
Z2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICdvdXRlciBjbGFzcyc7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI207
CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSW5uZXJDID0gY2xhc3MgeworICAgICAgICAg
ICAgc3RhdGljIGdldCAjbTIoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdpbm5lciBjbGFz
cyc7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20yOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcygpLCAnb3V0ZXIgY2xhc3MnKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuSW5uZXJDLmFjY2VzcygpLCAnaW5uZXIgY2xhc3MnKTsK
KworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5h
Y2Nlc3MuY2FsbChDLklubmVyQyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuSW5uZXJDLmFjY2Vzcy5jYWxsKEMpOworICAg
IH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0
aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICdvdXRlciBjbGFzcyc7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMu
I207CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSW5uZXJDID0gY2xhc3MgeworICAgICAg
ICAgICAgc3RhdGljIGdldCAjbTIoKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2Vz
cygpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuSW5uZXJDLmFjY2Vz
cyhDKSwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzLmNhbGwoQy5Jbm5lckMpOworICAgIH0pOworCisg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLklubmVy
Qy5hY2Nlc3MoQy5Jbm5lckMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAg
IGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMu
X3YgPSB2OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAg
ICAgIHRoaXMuI20gPSAnb3V0ZXIgY2xhc3MnOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGlj
IElubmVyQyA9IGNsYXNzIHsKKyAgICAgICAgICAgIHN0YXRpYyBzZXQgI20yKHYpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLl92ID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3Rh
dGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgICAgICB0aGlzLiNtMiA9ICdpbm5lciBjbGFzcyc7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDLmFjY2VzcygpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoQy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBDLklubmVyQy5h
Y2Nlc3MoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuSW5uZXJDLl92LCAnaW5uZXIgY2xhc3Mn
KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
Qy5hY2Nlc3MuY2FsbChDLklubmVyQyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuSW5uZXJDLmFjY2Vzcy5jYWxsKEMpOwor
ICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBz
dGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2OworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20gPSAnb3V0ZXIg
Y2xhc3MnOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElubmVyQyA9IGNsYXNzIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBzZXQgI20yKHYpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIlNob3VsZCBuZXZlciBiZSBleGVjdXRlZCIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBzdGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gJ2lubmVy
IGNsYXNzJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEMuYWNjZXNz
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIEMu
SW5uZXJDLmFjY2VzcyhDKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuX3YsICdpbm5lciBjbGFz
cycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBDLmFjY2Vzcy5jYWxsKEMuSW5uZXJDKTsKKyAgICB9KTsKKworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5Jbm5lckMuYWNjZXNzKEMuSW5uZXJD
KTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1w
cml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29yLW11bHRpcGxlLWV2YWx1YXRpb24uanMgYi9KU1Rl
c3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3Nvci1tdWx0aXBsZS1l
dmFsdWF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNmFlZGUwN2MyMjUxZjY2ODY0ZGM3MTg1ZjRhOWU3
NmViMTQ5YjkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0
ZS1tZXRob2RzLWFuZC1hY2Nlc3Nvci1tdWx0aXBsZS1ldmFsdWF0aW9uLmpzCkBAIC0wLDAgKzEs
MTA1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAg
ICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93
czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUp
OworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiBj
bGFzc0ZhY3RvcnkoKSB7CisgICAgICAgIHJldHVybiBjbGFzcyB7CisgICAgICAgICAgICBzdGF0
aWMgI21ldGhvZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgICAgICAg
ICAgfQorICAgIAorICAgICAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG8uI21ldGhvZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsK
KyAgICAKKyAgICBsZXQgQzEgPSBjbGFzc0ZhY3RvcnkoKTsKKyAgICBsZXQgQzIgPSBjbGFzc0Zh
Y3RvcnkoKTsKKyAgICAKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMxLmFjY2VzcyhDMSksICd0ZXN0
Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDMi5hY2Nlc3MoQzIpLCAndGVzdCcpOworICAgIAor
ICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIEMxLmFj
Y2VzcyhDMik7CisgICAgfSk7CisgICAgCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgQzIuYWNjZXNzKEMxKTsKKyAgICB9KTsKK30pKCk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gY2xhc3NGYWN0b3J5KCkgeworICAgICAgICByZXR1
cm4gY2xhc3MgeworICAgICAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gJ3Rlc3QnOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgc3RhdGlj
IGFjY2VzcyhvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIGxldCBDMSA9IGNsYXNzRmFjdG9yeSgpOwor
ICAgIGxldCBDMiA9IGNsYXNzRmFjdG9yeSgpOworICAgIAorICAgIGFzc2VydC5zYW1lVmFsdWUo
QzEuYWNjZXNzKEMxKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMyLmFjY2VzcyhD
MiksICd0ZXN0Jyk7CisgICAgCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgQzEuYWNjZXNzKEMyKTsKKyAgICB9KTsKKyAgICAKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBDMi5hY2Nlc3MoQzEpOwor
ICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiBjbGFzc0ZhY3Rv
cnkoKSB7CisgICAgICAgIHJldHVybiBjbGFzcyB7CisgICAgICAgICAgICBzdGF0aWMgc2V0ICNt
KHYpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl92ID0gdjsKKyAgICAgICAgICAgIH0KKyAgICAK
KyAgICAgICAgICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgICAgIG8uI20gPSAn
dGVzdCc7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIGxldCBD
MSA9IGNsYXNzRmFjdG9yeSgpOworICAgIGxldCBDMiA9IGNsYXNzRmFjdG9yeSgpOworICAgIAor
ICAgIEMxLmFjY2VzcyhDMSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDMS5fdiwgJ3Rlc3QnKTsK
KworICAgIEMyLmFjY2VzcyhDMik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDMi5fdiwgJ3Rlc3Qn
KTsKKyAgICAKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAg
ICAgICBDMS5hY2Nlc3MoQzIpOworICAgIH0pOworICAgIAorICAgIGFzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIEMyLmFjY2VzcyhDMSk7CisgICAgfSk7Cit9
KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2Rz
LWFuZC1hY2Nlc3NvcnMtcG9zdGZpeC1ub2RlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXBy
aXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBvc3RmaXgtbm9kZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZmRmNzE2Y2ViZmY0OGEwYWJhMzM4MTIxOGNiYTJlMGJkODdkZTg2Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBv
c3RmaXgtbm9kZS5qcwpAQCAtMCwwICsxLDE1OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVz
ZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTog
ZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyBy
aHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkg
eworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVy
cm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5j
dGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljICNtZXRob2QoKSB7CisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBjYWxsZWQiKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jbWV0aG9kKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgpOwor
CisoZnVuY3Rpb24oKSB7CisgICAgbGV0IGV4ZWN1dGVkR2V0dGVyID0gZmFsc2U7CisgICAgY2xh
c3MgQyB7CisgICAgICAgIHN0YXRpYyBnZXQgI20oKSB7CisgICAgICAgICAgICBleGVjdXRlZEdl
dHRlciA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuI20rKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAg
ICB9KTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUodHJ1ZSwgZXhlY3V0ZWRHZXR0ZXIpOworfSko
KTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNt
KHYpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1
dGVkIik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI20rKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsK
K30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljIHNl
dCAjbSh2KSB7CisgICAgICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKDUsIHYpOworICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLiNtKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKDQsIEMu
YWNjZXNzKCkpOworfSkoKTsKKworLy8gSWdub3JlZCByZXN1bHQKKworKGZ1bmN0aW9uKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIpOworICAgICAgICB9CisKKyAg
ICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI21ldGhvZC0tOworICAg
ICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgICAgICBDLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgewor
ICAgIGxldCBleGVjdXRlZEdldHRlciA9IGZhbHNlOworICAgIGNsYXNzIEMgeworICAgICAgICBz
dGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgZXhlY3V0ZWRHZXR0ZXIgPSB0cnVlOworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20t
LTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zYW1l
VmFsdWUodHJ1ZSwgZXhlY3V0ZWRHZXR0ZXIpOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAg
IGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkIik7CisgICAgICAgIH0KKworICAg
ICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgdGhpcy4jbS0tOworICAgICAgICB9
CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBDLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIGFzc2VydC5z
YW1lVmFsdWUoMywgdik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgZ2V0ICNtKCkgewor
ICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNz
KCkgeworICAgICAgICAgICAgdGhpcy4jbS0tOworICAgICAgICB9CisgICAgfQorCisgICAgQy5h
Y2Nlc3MoKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1wcml2
YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qcyBiL0pTVGVzdHMvc3RyZXNz
L3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MDFiMTNmM2E0N2I5ZjdjMTQzNjUxNGU4M2Y2YTQwYTEwNWU1MjQzCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNj
ZXNzb3JzLXByZWZpeC1ub2RlLmpzCkBAIC0wLDAgKzEsMTU4IEBACisvL0AgcmVxdWlyZU9wdGlv
bnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdv
dDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJy
b3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsK
KworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgI21ldGhvZCgp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIp
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJl
dHVybiArK3RoaXMuI21ldGhvZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsK
K30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBsZXQgZXhlY3V0ZWRHZXR0ZXIgPSBmYWxzZTsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgIGV4
ZWN1dGVkR2V0dGVyID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3Mo
KSB7CisgICAgICAgICAgICByZXR1cm4gKyt0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2Vz
cygpOworICAgIH0pOworCisgICAgYXNzZXJ0LnNhbWVWYWx1ZSh0cnVlLCBleGVjdXRlZEdldHRl
cik7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRp
YyBzZXQgI20odikgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIg
YmUgZXhlY3V0ZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7Cisg
ICAgICAgICAgICByZXR1cm4gKyt0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2VzcygpOwor
ICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBz
dGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoNSwgdik7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJu
IDQ7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAg
cmV0dXJuICsrdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC5zYW1lVmFs
dWUoNSwgQy5hY2Nlc3MoKSk7Cit9KSgpOworCisvLyBJZ25vcmVkIHJlc3VsdAorCisoZnVuY3Rp
b24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyAjbWV0aG9kKCkgeworICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgLS10aGlzLiNtZXRo
b2Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rp
b24oKSB7CisgICAgbGV0IGV4ZWN1dGVkR2V0dGVyID0gZmFsc2U7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgIHN0YXRpYyBnZXQgI20oKSB7CisgICAgICAgICAgICBleGVjdXRlZEdldHRlciA9IHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAg
LS10aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2VzcygpOworICAgIH0pOworCisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZSh0cnVlLCBleGVjdXRlZEdldHRlcik7Cit9KSgpOworCisoZnVuY3Rpb24o
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQgI20odikgeworICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQiKTsKKyAgICAgICAg
fQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICAtLXRoaXMuI207Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7
CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQgI20odikgeworICAgICAgICAgICAg
YXNzZXJ0LnNhbWVWYWx1ZSgzLCB2KTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBnZXQg
I20oKSB7CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRp
YyBhY2Nlc3MoKSB7CisgICAgICAgICAgICAtLXRoaXMuI207CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBDLmFjY2VzcygpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDQxMTY2NzZkZDFl
YTg2NDMxNTg2NDA5NWU1NDYxZDE5MGQ2ZTViYTEuLjgyYTY5YjM4YmFmNzc5ZDAyMjM2OWVkMzM5
ODg4MjI3NzU5ZTdhMTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAor
KysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTcsNiArNyw3IEBAIGZsYWdzOgog
ICBjbGFzcy1tZXRob2RzLXByaXZhdGU6IHVzZVByaXZhdGVNZXRob2RzCiAgIGNsYXNzLXN0YXRp
Yy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcwogICBjbGFzcy1zdGF0
aWMtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcworICBjbGFzcy1z
dGF0aWMtbWV0aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBJbnRsLkRhdGVUaW1l
Rm9ybWF0LWRheVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCiAgIFNoYXJl
ZEFycmF5QnVmZmVyOiB1c2VTaGFyZWRBcnJheUJ1ZmZlcgogICBBdG9taWNzOiB1c2VTaGFyZWRB
cnJheUJ1ZmZlcgpAQCAtMjAsNyArMjEsNiBAQCBza2lwOgogICAgIC0gcmVnZXhwLWxvb2tiZWhp
bmQKICAgICAtIGxlZ2FjeS1yZWdleHAKIAotICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMtcHJp
dmF0ZQogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQKICAgICAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420828</attachid>
            <date>2021-02-18 07:30:32 -0800</date>
            <delta_ts>2021-02-18 15:48:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219181-20210218123029.patch</filename>
            <type>text/plain</type>
            <size>59430</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NjAzNTY3YzBhZDdhMjk1OGI3ZDkzNDllZDgyN2NmNzU0NDg2ODQyLi5hYWQ0NWY4ZjIzYjQ2NGM5
ZWE5Njk5MTE0ZjZkZTVkYzJiZjVlZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMS0wMi0xOCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IHByaXZhdGUgc3RhdGljIG1ldGhvZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTgxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGlt
cGxlbWVudGluZyBzdGF0aWMgcHJpdmF0ZSBtZXRob2RzIGFuZCBhY2Nlc3NvcnMKKyAgICAgICAg
cHJvcG9zYWwgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RhdGlj
LWNsYXNzLWZlYXR1cmVzLgorICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGRpdmVyZ2UgYSBi
aXQgZnJvbSBwcml2YXRlIG1ldGhvZHMmYWNjZXNzb3JzIG9uIHRoZQorICAgICAgICBicmFuZCBj
aGVjaywgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzaW1wbGVyIHdheSB0byBwZXJmb3JtIHN0YXRp
YworICAgICAgICBicmFuZCBjaGVja3MuIFNpbmNlIG9ubHkgdGhlIGNsYXNzIGNvbnN0cnVjdG9y
IGlzIGFsbG93ZWQgdG8gYWNjZXNzCisgICAgICAgIGl0cyBwcml2YXRlIG1ldGhvZHMgYW5kIGFj
Y2Vzc29ycywgd2Ugc2F2ZSBpdCBvbiBgQHByaXZhdGVDbGFzc0JyYW5kYAorICAgICAgICBvbiBj
bGFzcyBsZXhpY2FsIHNjb3BlIGFuZCBjb21wYXJlIGl0IHdpdGggdGhlIHJlY2VpdmVyIG9mIHRo
ZSBzdGF0aWMKKyAgICAgICAgcHJpdmF0ZSBtZXRob2QgKGFuZCBhY2Nlc3NvcnMpIHVzaW5nIGA9
PT1gIG9wZXJhdGlvbi4KKyAgICAgICAgV2hpbGUgdGhpcyBnZW5lbnJhdGVzIG1vcmUgYnl0ZWNv
ZGVzIHRoYW4gYGNoZWNrX3ByaXZhdGVfYnJhbmRgLCB3ZQorICAgICAgICBkb24ndCBuZWVkIHRv
IHBlcmZvcm0gYSBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiB0byBpbnN0YWxsIGEgYnJhbmQsIAorICAg
ICAgICBhbmQgYXZvaWQgYWxsb2NhdGlvbiBvZiBhIHByaXZhdGUgc3ltYm9sLiBTaW5jZSBlYWNo
IGV2YWx1YXRpb24gb2YgYQorICAgICAgICBjbGFzcyBnZW5lcmF0ZXMgYSBkaWZmZXJlbnQgY29u
c3RydWN0b3Igb2JqZWN0LCB3ZSBwcmVzZXJ2ZSB0aGUgc2VtYW50aWNzCisgICAgICAgIHRoYXQg
cHJpdmF0ZSBtZXRob2RzIGFyZSBsZXhpY2FsbHkgc2NvcGVkLgorCisgICAgICAgICogYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDcmVhdGVQcml2
YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3RhbGxQ
cml2YXRlQnJhbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluc3Rh
bGxQcml2YXRlQ2xhc3NCcmFuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0UHJpdmF0ZUJyYW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDaGVja1ByaXZhdGVCcmFuZCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChK
U0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQb3N0Zml4
Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXREb3QpOgorICAg
ICAgICAoSlNDOjpDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcik6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFy
ZVByaXZhdGVNZXRob2QpOgorICAgICAgICAoSlNDOjpTY29wZTo6ZGVjbGFyZVByaXZhdGVBY2Nl
c3Nvcik6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6CisgICAg
ICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcGFyc2Vy
L1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpkZWNsYXJlUHJpdmF0ZUFjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZp
cm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVu
dmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKToKKyAgICAgICAgKiBwYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1N0
YXRpYyBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmlzRW1wdHkg
Y29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlU3RhdGlj
UHJpdmF0ZU1ldGhvZCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xh
cmVQcml2YXRlU2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVj
bGFyZVN0YXRpY1ByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJv
bm1lbnQ6OmRlY2xhcmVTdGF0aWNQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFyaWFi
bGVFbnZpcm9ubWVudDo6aGFzU3RhdGljUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpoYXNJbnN0YW5jZVByaXZhdGVNZXRo
b2RPckFjY2Vzc29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6
aGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IgY29uc3QpOiBEZWxldGVkLgorCiAyMDIxLTAyLTE2
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gRHlu
YW1pY2FsbHkgZ2VuZXJhdGUgZW50aXRsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggMDQ4MDUwOWNmOGRmOTgxMDE2OTdmMWNjYTQz
ZDlkNDA4YmE2ZmUyNC4uN2JlNmM1ZGYyOTE4NDdjMTQ5OGRmNjJiYjRiY2IwMWJmZGUzYWY5MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAt
MTc0LDkgKzE3NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyh3ZWJBc3NlbWJseUlu
c3RhbnRpYXRlU3RyZWFtaW5nSW50ZXJuYWwpIFwKICAgICBtYWNybyhpbnN0YW5jZUZpZWxkSW5p
dGlhbGl6ZXIpIFwKICAgICBtYWNybyhwcml2YXRlQnJhbmQpIFwKKyAgICBtYWNybyhwcml2YXRl
Q2xhc3NCcmFuZCkgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5RnVuY3Rpb24pIFwKICAgICBt
YWNybyhjcmVhdGVQcml2YXRlU3ltYm9sKSBcCi0gICAgbWFjcm8oZW50cmllcykgXAorICAgIG1h
Y3JvKGVudHJpZXMpCiAKIAogbmFtZXNwYWNlIFN5bWJvbHMgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRl
eCBkYzljMmQ5NjFiN2U5MmQ5NTg0MDg4OGJkMmRjM2ZkNzQ4YzdiMjE2Li5mNWY5Y2U2NmMyMjkw
YjdmYjU0OWNjMzNmOWJjNmYwNWU4MDdiYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjc3Niwy
MCArMjc3NiwyOSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q3JlYXRlUHJpdmF0ZUJy
YW5kKFJlZ2lzdGVySUQqIHNjb3BlLCBjb25zdCBKU1RleHRQbwogCiAgICAgVmFyaWFibGUgcHJp
dmF0ZUJyYW5kVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnBy
aXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOwogCi0gICAgZW1pdFB1dFRvU2NvcGUoc2NvcGUsIHBy
aXZhdGVCcmFuZFZhciwgbmV3U3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpJbml0aWFsaXphdGlvbik7CisgICAgZW1pdFB1dFRvU2NvcGUoc2NvcGUsIHBy
aXZhdGVCcmFuZFZhciwgbmV3U3ltYm9sLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6
YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEluc3RhbGxQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0KQogewogICAg
IFZhcmlhYmxlIHByaXZhdGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5wcml2YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZUJyYW5kVmFyU2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHBy
aXZhdGVCcmFuZFZhcik7Ci0gICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZW1p
dEdldFByaXZhdGVCcmFuZChuZXdUZW1wb3JhcnkoKSwgcHJpdmF0ZUJyYW5kVmFyU2NvcGUuZ2V0
KCkpOworICAgIGJvb2wgaXNTdGF0aWMgPSBmYWxzZTsKKyAgICBSZWdpc3RlcklEKiBwcml2YXRl
QnJhbmRTeW1ib2wgPSBlbWl0R2V0UHJpdmF0ZUJyYW5kKG5ld1RlbXBvcmFyeSgpLCBwcml2YXRl
QnJhbmRWYXJTY29wZS5nZXQoKSwgaXNTdGF0aWMpOwogICAgIE9wU2V0UHJpdmF0ZUJyYW5kOjpl
bWl0KHRoaXMsIHRhcmdldCwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKIH0KIAotUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBzY29wZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbnN0YWxsUHJp
dmF0ZUNsYXNzQnJhbmQoUmVnaXN0ZXJJRCogdGFyZ2V0KQogewotICAgIFZhcmlhYmxlIHByaXZh
dGVCcmFuZFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcml2
YXRlQnJhbmRQcml2YXRlTmFtZSgpKTsKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSB2
YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJpdmF0ZUNsYXNzQnJhbmRQ
cml2YXRlTmFtZSgpKTsKKyAgICBlbWl0UHV0VG9TY29wZShzY29wZVJlZ2lzdGVyKCksIHByaXZh
dGVCcmFuZFZhciwgdGFyZ2V0LCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25N
b2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKK30KKworUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBz
Y29wZSwgYm9vbCBpc1N0YXRpYykKK3sKKyAgICBWYXJpYWJsZSBwcml2YXRlQnJhbmRWYXIgPSBp
c1N0YXRpYworICAgICAgICA/IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5wcml2YXRlQ2xhc3NCcmFuZFByaXZhdGVOYW1lKCkpCisgICAgICAgIDogdmFyaWFibGUocHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCkpOwog
ICAgIHJldHVybiBlbWl0R2V0RnJvbVNjb3BlKGRzdCwgc2NvcGUsIHByaXZhdGVCcmFuZFZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKIH0KIApAQCAtMjc5OSw5ICsyODA4LDE3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHJpdmF0ZUZpZWxkUHV0KFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2hlY2tQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
YnJhbmRTeW1ib2wpCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2hlY2tQcml2YXRlQnJh
bmQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogYnJhbmQsIGJvb2wgaXNTdGF0aWMpCiB7
Ci0gICAgT3BDaGVja1ByaXZhdGVCcmFuZDo6ZW1pdCh0aGlzLCBiYXNlLCBicmFuZFN5bWJvbCk7
CisgICAgaWYgKGlzU3RhdGljKSB7CisgICAgICAgIFJlZjxMYWJlbD4gYnJhbmRDaGVja09rTGFi
ZWwgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0RXF1YWxpdHlPcDxP
cFN0cmljdGVxPihuZXdUZW1wb3JhcnkoKSwgYmFzZSwgYnJhbmQpLCBicmFuZENoZWNrT2tMYWJl
bC5nZXQoKSk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGFjY2VzcyBzdGF0
aWMgcHJpdmF0ZSBtZXRob2Qgb3IgYWNlc3NvciIpOworICAgICAgICBlbWl0TGFiZWwoYnJhbmRD
aGVja09rTGFiZWwuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgCisgICAgfQorICAgIE9w
Q2hlY2tQcml2YXRlQnJhbmQ6OmVtaXQodGhpcywgYmFzZSwgYnJhbmQpOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0U3VwZXJTYW1wbGVyQmVnaW4oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IGE1Y2JkMzY5OWE0NzNjYmRjMDg3ZmJlNmZhMWIwY2ZkYjA0ZDU2N2UuLjlhMWRkYTczZGE5YjY2
YTAyMzBlZjA2ZGUyNzRiMGQ1NGE3OWUwOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTgyNyw4ICs4Mjcs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0Q3JlYXRlUHJpdmF0ZUJy
YW5kKFJlZ2lzdGVySUQqIGRzdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KTsKICAgICAgICAgdm9pZCBlbWl0SW5zdGFsbFByaXZhdGVCcmFuZChSZWdpc3RlcklEKiB0YXJn
ZXQpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0UHJpdmF0ZUJyYW5kKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogc2NvcGUpOwotICAgICAgICB2b2lkIGVtaXRDaGVja1ByaXZhdGVC
cmFuZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBicmFuZCk7CisgICAgICAgIHZvaWQg
ZW1pdEluc3RhbGxQcml2YXRlQ2xhc3NCcmFuZChSZWdpc3RlcklEKiB0YXJnZXQpOworCisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRQcml2YXRlQnJhbmQoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBzY29wZSwgYm9vbCBpc1N0YXRpYyk7CisgICAgICAgIHZvaWQgZW1pdENoZWNrUHJp
dmF0ZUJyYW5kKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGJyYW5kLCBib29sIGlzU3Rh
dGljKTsKIAogICAgICAgICB2b2lkIGVtaXRTdXBlclNhbXBsZXJCZWdpbigpOwogICAgICAgICB2
b2lkIGVtaXRTdXBlclNhbXBsZXJFbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBlNWY4MWE1NmUzYjc5MGMwZmU1
ZWExNzhkNDIwNDk2OWFmY2MyYTk1Li4yYTkxYTc2OTA2YzcyMzI2YTA1ODM1MWVlMTcyZjE3Nzg5
NjZhZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCkBAIC05ODIsOCArOTgyLDggQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2kKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlm
aWVyTmFtZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRl
QnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJv
bC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3lt
Ym9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9s
LmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lm
Tm90Rm91bmQpOwogICAgICAgICB9CkBAIC05OTIsOCArOTkyLDggQEAgUmVnaXN0ZXJJRCogQmFz
ZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2kKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudGlmaWVyTmFtZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQ
cml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFu
ZFN5bWJvbC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJy
YW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5k
U3ltYm9sLmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lm
Tm90Rm91bmQpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlckZ1bmN0aW9u
ID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
Z2V0dGVyU2V0dGVyT2JqLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdldFByaXZhdGVOYW1lKCkpOwpAQCAtMTAwNyw4ICsxMDA3LDggQEAgUmVnaXN0ZXJJ
RCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJp
YWJsZShpZGVudGlmaWVyTmFtZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVt
aXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZh
dGVCcmFuZFN5bWJvbC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJp
dmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0
ZUJyYW5kU3ltYm9sLmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhbiB1bmRl
ZmluZWQgcHJpdmF0ZSBnZXR0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiBkc3Q7CiAgICAgICAg
IH0KQEAgLTEwNDcsOCArMTA0Nyw4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0
UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAgICAgICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwog
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKIAotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVy
YXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUu
Z2V0KCksIHByaXZhdGVUcmFpdHMuaXNTdGF0aWMoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSwgcHJp
dmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRl
TmFtZSgpKTsKQEAgLTEwNjQsOCArMTA2NCw4IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjpl
bWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAg
ICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5h
bWUpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKIAotICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5k
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0
KCkpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9
IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCksIHByaXZhdGVUcmFpdHMuaXNTdGF0aWMoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQo
KSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKIAogICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhbiB1bmRlZmluZWQgcHJpdmF0ZSBz
ZXR0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKQEAgLTI0MTIsOCArMjQxMiw4IEBA
IFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShpZGVudCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVt
aXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7
Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCks
IHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRp
YygpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZS5n
ZXQoKSwgcHJpdmF0ZUJyYW5kU3ltYm9sLmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkp
OwogCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93
VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGFuIHVuZGVmaW5lZCBwcml2YXRlIHNldHRlciIp
OwpAQCAtMjQyMyw4ICsyNDIzLDggQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3Qo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgICAgICBW
YXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOwogICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2
YXIpOwogCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRTeW1ib2wgPSBn
ZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNj
b3BlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNl
LmdldCgpLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0
YXRpYygpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdl
dCgpLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCksIHByaXZhdGVUcmFpdHMuaXNTdGF0aWMoKSk7
CiAKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOwogICAgICAgICBpZiAocHJpdmF0
ZVRyYWl0cy5pc0dldHRlcigpKSB7CkBAIC0yNzAxLDggKzI3MDEsOCBAQCBSZWdpc3RlcklEKiBQ
cmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudCk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCi0gICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJh
bmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5
bWJvbC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5k
U3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBzY29wZS5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZS5nZXQoKSwgcHJpdmF0ZUJy
YW5kU3ltYm9sLmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOwogCiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2
b3RFbmQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlp
bmcgdG8gYWNjZXNzIGFuIHVuZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOwpAQCAtMjcxMiw4ICsy
NzEyLDggQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdl
bmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAKLSAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0
UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVC
cmFuZFN5bWJvbC5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJh
bmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIHNjb3BlLmdldCgpLCBwcml2YXRlVHJhaXRzLmlzU3RhdGljKCkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFu
ZFN5bWJvbC5nZXQoKSwgcHJpdmF0ZVRyYWl0cy5pc1N0YXRpYygpKTsKIAogICAgICAgICBpZiAo
cHJpdmF0ZVRyYWl0cy5pc0dldHRlcigpKSB7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZ2V0dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwpAQCAt
NTE1Miw3ICs1MTUyLDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAgICAgICAgZ2VuZXJh
dG9yLnB1c2hMZXhpY2FsU2NvcGUodGhpcywgQnl0ZWNvZGVHZW5lcmF0b3I6OlREWkNoZWNrT3B0
aW1pemF0aW9uOjpPcHRpbWl6ZSwgQnl0ZWNvZGVHZW5lcmF0b3I6Ok5lc3RlZFNjb3BlVHlwZTo6
SXNOZXN0ZWQpOwogCiAgICAgYm9vbCBoYXNQcml2YXRlTmFtZXMgPSAhIW1fbGV4aWNhbFZhcmlh
Ymxlcy5wcml2YXRlTmFtZXNTaXplKCk7Ci0gICAgYm9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5k
ID0gbV9sZXhpY2FsVmFyaWFibGVzLmhhc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yKCk7CisgICAg
Ym9vbCBzaG91bGRFbWl0UHJpdmF0ZUJyYW5kID0gbV9sZXhpY2FsVmFyaWFibGVzLmhhc0luc3Rh
bmNlUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKTsKKyAgICBib29sIHNob3VsZEluc3RhbGxCcmFu
ZE9uQ29uc3RydWN0b3IgPSBtX2xleGljYWxWYXJpYWJsZXMuaGFzU3RhdGljUHJpdmF0ZU1ldGhv
ZE9yQWNjZXNzb3IoKTsKICAgICBpZiAoaGFzUHJpdmF0ZU5hbWVzKQogICAgICAgICBnZW5lcmF0
b3IucHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhtX2xleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVF
bnZpcm9ubWVudCgpKTsKICAgICBpZiAoc2hvdWxkRW1pdFByaXZhdGVCcmFuZCkKQEAgLTUyNDQs
NiArNTI0NSw5IEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0VG9TY29wZShzY29wZS5nZXQoKSwgY2xhc3NOYW1lVmFyLCBjb25zdHJ1Y3Rvci5nZXQo
KSwgVGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkluaXRpYWxpemF0aW9uKTsK
ICAgICB9CiAKKyAgICBpZiAoc2hvdWxkSW5zdGFsbEJyYW5kT25Db25zdHJ1Y3RvcikKKyAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRJbnN0YWxsUHJpdmF0ZUNsYXNzQnJhbmQoY29uc3RydWN0b3IuZ2V0
KCkpOworCiAgICAgaWYgKCFzdGF0aWNGaWVsZExvY2F0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN0YXRpY0ZpZWxkSW5pdGlhbGl6ZXIgPSBnZW5lcmF0b3Iu
ZW1pdE5ld0NsYXNzRmllbGRJbml0aWFsaXplckZ1bmN0aW9uKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgV1RGTW92ZShzdGF0aWNGaWVsZExvY2F0aW9ucyksIG1fY2xhc3NIZXJpdGFnZSk7CiAg
ICAgICAgIC8vIEZJWE1FOiBTa2lwIHRoaXMgaWYgdGhlIGluaXRpYWxpemVyIGZ1bmN0aW9uIGlz
bid0IGdvaW5nIHRvIG5lZWQgYSBob21lIG9iamVjdCAobm8gZXZhbCBvciBzdXBlciBwcm9wZXJ0
aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDNiMWFmMGFk
NjkyYmViZDU1OTZjMjhmMjc4ZDllMzM5YjczNzA1YWMuLmU5NWFjMDFlYzNlMmM5YWM1MDJkODRm
YzkwYzEyMjU3MDUyMGYxZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTI4ODEsNiArMjg4MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgY2xh
c3NTY29wZS0+c2V0U3RyaWN0TW9kZSgpOwogICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0aG9k
ID0gZmFsc2U7CiAgICAgYm9vbCBkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvciA9IGZhbHNlOworICAg
IGJvb2wgZGVjbGFyZXNTdGF0aWNQcml2YXRlTWV0aG9kID0gZmFsc2U7CisgICAgYm9vbCBkZWNs
YXJlc1N0YXRpY1ByaXZhdGVBY2Nlc3NvciA9IGZhbHNlOwogICAgIG5leHQoKTsKIAogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UocmVxdWlyZW1lbnRzICE9IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50
czo6VW5uYW1lZCwgIkN1cnJlbnRseSwgdGhlcmUgaXMgbm8gY2FsbGVyIHRoYXQgdXNlcyBGdW5j
dGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQgZm9yIGNsYXNzIHN5bnRheC4iKTsKQEAgLTMw
MDcsOSArMzAwOSwxNCBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7
CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0
ZU1ldGhvZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7Ci0gICAgICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIkNhbm5vdCBkZWNs
YXJlIGEgc3RhdGljIHByaXZhdGUgbWV0aG9kIik7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCppZGVudCkgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xh
cmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKLSAgICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZh
dGVNZXRob2QgPSB0cnVlOworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFz
c1Njb3BlLT5kZWNsYXJlUHJpdmF0ZU1ldGhvZCgqaWRlbnQsIHRhZykgJiBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0
ZSBtZXRob2QgdHdpY2UiKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFn
ID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljICYmICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmNv
bnN0cnVjdG9yUHJpdmF0ZUZpZWxkLCAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0aWMgcHJpdmF0ZSBt
ZXRob2QgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOworCisgICAgICAgICAgICAgICAgaWYgKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYykKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNT
dGF0aWNQcml2YXRlQWNjZXNzb3IgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsKKwogICAgICAgICAg
ICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9w
ZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpAQCAtMzAyOSwxNSArMzAzNiwyMSBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgaWYg
KGlzR2V0dGVyIHx8IGlzU2V0dGVyKSB7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJp
dmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpIHsKICAgICAgICAgICAgICAgICBp
ZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwotICAgICAgICAgICAgICAgIGlmIChpc1NldHRl
cikgewotICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+
ZGVjbGFyZVByaXZhdGVTZXR0ZXIoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlk
RHVwbGljYXRlRGVjbGFyYXRpb24sICJEZWNsYXJlZCBwcml2YXRlIHNldHRlciB3aXRoIGFuIGFs
cmVhZHkgdXNlZCBuYW1lIik7Ci0gICAgICAgICAgICAgICAgICAgIGRlY2xhcmVzUHJpdmF0ZUFj
Y2Vzc29yID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFBy
b3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcik7CisK
KyAgICAgICAgICAgICAgICBhdXRvIGRlY2xhcmF0aW9uUmVzdWx0ID0gaXNTZXR0ZXIgPyBjbGFz
c1Njb3BlLT5kZWNsYXJlUHJpdmF0ZVNldHRlcigqaWRlbnQsIHRhZykgOiBjbGFzc1Njb3BlLT5k
ZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQsIHRhZyk7CisgICAgICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgc2V0dGVyIHdpdGggYW4g
YWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICBpZiAodGFnID09IENsYXNzRWxl
bWVudFRhZzo6U3RhdGljKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkUHJpdmF0ZVN0
YXRpY05vblN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBzdGF0aWMgIiwgKGlzU2V0
dGVyID8gInNldHRlciIgOiAiZ2V0dGVyIikgICwgIiBpZiB0aGVyZSBpcyBhIG5vbi1zdGF0aWMg
cHJpdmF0ZSAiLCAoaXNTZXR0ZXIgPyAiZ2V0dGVyIiA6ICJzZXR0ZXIiKSwgIiB3aXRoIHVzZWQg
bmFtZSIpOworICAgICAgICAgICAgICAgICAgICBkZWNsYXJlc1N0YXRpY1ByaXZhdGVBY2Nlc3Nv
ciA9IHRydWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlR2V0dGVyKCppZGVu
dCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiRGVj
bGFyZWQgcHJpdmF0ZSBnZXR0ZXIgd2l0aCBhbiBhbHJlYWR5IHVzZWQgbmFtZSIpOworICAgICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZFByaXZhdGVTdGF0aWNOb25TdGF0aWMsICJDYW5ub3QgZGVj
bGFyZSBhIHByaXZhdGUgbm9uLXN0YXRpYyAiLCAoaXNTZXR0ZXIgPyAic2V0dGVyIiA6ICJnZXR0
ZXIiKSwgIiBpZiB0aGVyZSBpcyBhIHN0YXRpYyBwcml2YXRlICIsIChpc1NldHRlciA/ICJnZXR0
ZXIiIDogInNldHRlciIpLCAiIHdpdGggdXNlZCBuYW1lIik7CiAgICAgICAgICAgICAgICAgICAg
IGRlY2xhcmVzUHJpdmF0ZUFjY2Vzc29yID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgdHlw
ZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZUdldHRlcik7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYg
KGlzU2V0dGVyKQorICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVy
dHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKTsKKyAgICAg
ICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8
UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0
PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKICAg
ICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBl
IHwgKGlzR2V0dGVyID8gUHJvcGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRl
cikpOwpAQCAtMzEyNSw3ICszMTM4LDE1IEBAIHBhcnNlTWV0aG9kOgogCiAgICAgaWYgY29uc3Rl
eHByIChzdGQ6OmlzX3NhbWVfdjxUcmVlQnVpbGRlciwgQVNUQnVpbGRlcj4pIHsKICAgICAgICAg
aWYgKGNsYXNzRWxlbWVudHMpCi0gICAgICAgICAgICBjbGFzc0VsZW1lbnRzLT5zZXRIYXNQcml2
YXRlQWNjZXNzb3JzKGRlY2xhcmVzUHJpdmF0ZUFjY2Vzc29yKTsKKyAgICAgICAgICAgIGNsYXNz
RWxlbWVudHMtPnNldEhhc1ByaXZhdGVBY2Nlc3NvcnMoZGVjbGFyZXNQcml2YXRlQWNjZXNzb3Ig
fHwgZGVjbGFyZXNTdGF0aWNQcml2YXRlQWNjZXNzb3IpOworICAgIH0KKworICAgIGlmIChkZWNs
YXJlc1N0YXRpY1ByaXZhdGVNZXRob2QgfHwgZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IpIHsKKyAg
ICAgICAgSWRlbnRpZmllciBwcml2YXRlQ2xhc3NCcmFuZElkZW50aWZpZXIgPSBtX3ZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnByaXZhdGVDbGFzc0JyYW5kUHJpdmF0ZU5hbWUoKTsK
KyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NT
Y29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZSgmcHJpdmF0ZUNsYXNzQnJhbmRJZGVudGlmaWVy
LCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChkZWNsYXJhdGlvblJlc3VsdCwgZGVjbGFy
YXRpb25SZXN1bHQgPT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKTsKKyAgICAgICAgY2xhc3NT
Y29wZS0+dXNlVmFyaWFibGUoJnByaXZhdGVDbGFzc0JyYW5kSWRlbnRpZmllciwgZmFsc2UpOwor
ICAgICAgICBjbGFzc1Njb3BlLT5hZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZVVuY29uZGl0aW9u
YWxseShwcml2YXRlQ2xhc3NCcmFuZElkZW50aWZpZXIuaW1wbCgpKTsKICAgICB9CiAKICAgICBp
ZiAoT3B0aW9uczo6dXNlUHJpdmF0ZUNsYXNzRmllbGRzKCkpIHsKQEAgLTQ0NTYsMTAgKzQ0Nzcs
OCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
dGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9
PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLAogICAgICAgICAgICAgIkNhbm5vdCBk
ZWNsYXJlIGEgZ2V0dGVyIG9yIHNldHRlciBuYW1lZCAnY29uc3RydWN0b3InIik7CiAKLSAgICAg
ICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICBpZiAobWF0Y2goUFJJVkFURU5B
TUUpKQogICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRU
YWc6Ok5vLCAiQ2Fubm90IGRlY2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBnZXR0ZXIgb3V0c2lk
ZSBhIGNsYXNzIik7Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNz
RWxlbWVudFRhZzo6U3RhdGljLCAiQ2Fubm90IGRlY2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBn
ZXR0ZXIgYXMgc3RhdGljIik7Ci0gICAgICAgIH0KICAgICAgICAgbmV4dCgpOwogICAgIH0gZWxz
ZSBpZiAobWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSkgewogICAgICAgICBudW1lcmlj
UHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA0ZTk2NjRmZWNmYjY5MzMwNTU4ZTdhODY3NDZhMmQy
YjY2ZDljNTQwLi41MmJhNGE5YTIwN2QyYWEyMGMwZmY0NGUyNzE2NWUyZjVkZWRjYjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTk0LDcgKzk0LDggQEAgZW51bSBj
bGFzcyBEZWNsYXJhdGlvbkltcG9ydFR5cGUgewogZW51bSBEZWNsYXJhdGlvblJlc3VsdCB7CiAg
ICAgVmFsaWQgPSAwLAogICAgIEludmFsaWRTdHJpY3RNb2RlID0gMSA8PCAwLAotICAgIEludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbiA9IDEgPDwgMQorICAgIEludmFsaWREdXBsaWNhdGVEZWNs
YXJhdGlvbiA9IDEgPDwgMSwKKyAgICBJbnZhbGlkUHJpdmF0ZVN0YXRpY05vblN0YXRpYyA9IDEg
PDwgMgogfTsKIAogdHlwZWRlZiB1aW50OF90IERlY2xhcmF0aW9uUmVzdWx0TWFzazsKQEAgLTUw
MCw0OSArNTAxLDUwIEBAIHB1YmxpYzoKICAgICAgICAgbV9sZXhpY2FsVmFyaWFibGVzLnVzZVBy
aXZhdGVOYW1lKGlkZW50KTsKICAgICB9CiAKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVj
bGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgRGVjbGFyYXRp
b25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4
aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQg
PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7Ci0gICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9s
ZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50KTsKKyAgICAgICAgYm9v
bCBhZGRSZXN1bHQgPSB0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMgPyBtX2xleGljYWxW
YXJpYWJsZXMuZGVjbGFyZVN0YXRpY1ByaXZhdGVNZXRob2QoaWRlbnQpIDogbV9sZXhpY2FsVmFy
aWFibGVzLmRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50KTsKIAogICAgICAgICBpZiAoIWFkZFJl
c3VsdCkgewogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlk
RHVwbGljYXRlRGVjbGFyYXRpb247CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CiAKLSAgICAgICAgdXNlVmFyaWFibGUoJmlkZW50LCBmYWxzZSk7Ci0gICAgICAgIGFkZENs
b3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LmltcGwoKSk7Ci0KICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sg
ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgZW51bSBj
bGFzcyBQcml2YXRlQWNjZXNzb3JUeXBlIHsgU2V0dGVyLCBHZXR0ZXIgfTsKKworICAgIERlY2xh
cmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUFjY2Vzc29yKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBDbGFzc0VsZW1lbnRUYWcgdGFnLCBQcml2YXRlQWNjZXNzb3JUeXBlIGFjY2Vzc29y
VHlwZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMp
OwogICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1
bHQ6OlZhbGlkOwotICAgICAgICBib29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5k
ZWNsYXJlUHJpdmF0ZVNldHRlcihpZGVudCk7CisgICAgICAgIFZhcmlhYmxlRW52aXJvbm1lbnQ6
OlByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCBhZGRSZXN1bHQ7CisgICAgICAgIGlmIChhY2Nlc3Nv
clR5cGUgPT0gUHJpdmF0ZUFjY2Vzc29yVHlwZTo6U2V0dGVyKQorICAgICAgICAgICAgYWRkUmVz
dWx0ID0gdGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljID8gbV9sZXhpY2FsVmFyaWFibGVz
LmRlY2xhcmVTdGF0aWNQcml2YXRlU2V0dGVyKGlkZW50KSA6IG1fbGV4aWNhbFZhcmlhYmxlcy5k
ZWNsYXJlUHJpdmF0ZVNldHRlcihpZGVudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFk
ZFJlc3VsdCA9IHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYyA/IG1fbGV4aWNhbFZhcmlh
Ymxlcy5kZWNsYXJlU3RhdGljUHJpdmF0ZUdldHRlcihpZGVudCkgOiBtX2xleGljYWxWYXJpYWJs
ZXMuZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnQpOwogCi0gICAgICAgIGlmICghYWRkUmVzdWx0
KSB7CisgICAgICAgIGlmIChhZGRSZXN1bHQgPT0gVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0
ZURlY2xhcmF0aW9uUmVzdWx0OjpEdXBsaWNhdGVkTmFtZSkKICAgICAgICAgICAgIHJlc3VsdCB8
PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwotICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQorCisgICAgICAgIGlmIChhZGRSZXN1bHQg
PT0gVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlk
U3RhdGljTm9uU3RhdGljKQorICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkUHJpdmF0ZVN0YXRpY05vblN0YXRpYzsKIAogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUdldHRl
cihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVj
bGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIENsYXNzRWxlbWVudFRh
ZyB0YWcpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25z
KTsKLSAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVz
dWx0OjpWYWxpZDsKLSAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMu
ZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnQpOwotCi0gICAgICAgIGlmICghYWRkUmVzdWx0KSB7
Ci0gICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNh
dGVEZWNsYXJhdGlvbjsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGRlY2xhcmVQcml2YXRlQWNjZXNzb3IoaWRlbnQsIHRhZywgUHJpdmF0ZUFj
Y2Vzc29yVHlwZTo6U2V0dGVyKTsKKyAgICB9CiAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIENsYXNzRWxlbWVudFRhZyB0YWcpCisgICAgeworICAgICAgICBBU1NFUlQo
bV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgcmV0dXJuIGRlY2xhcmVQcml2
YXRlQWNjZXNzb3IoaWRlbnQsIHRhZywgUHJpdmF0ZUFjY2Vzc29yVHlwZTo6R2V0dGVyKTsKICAg
ICB9CiAKICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVGaWVsZChjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDFhZGJlNGIwNzhmMjUzNmFiNmIwOTdk
NWUxYTdjNzI1MmY1Yzk2ZDAuLmZhMDA2MDYwNjRiMTg2ZDgxOTMyYzdlOTEyMTEzZmFkNWRjNTgw
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVu
dDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
CiAgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOwogfQogCi1ib29sIFZhcmlh
YmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlQWNjZXNzb3IoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzIGFjY2Vz
c29yVHJhaXRzKQorVmFyaWFibGVFbnZpcm9ubWVudDo6UHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0
IFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlQWNjZXNzb3IoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeSBhY2Nlc3Nv
clRyYWl0cykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgIG1fcmFyZURhdGEgPSBX
VEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CkBAIC0xMTIs
NzMgKzExMiw3NSBAQCBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlQWNj
ZXNzb3IoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGF1dG8gZmluZFJlc3Vs
dCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CiAKICAgICBp
ZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgewotICAg
ICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0Rl
Y2xhcmVkIHwgYWNjZXNzb3JUcmFpdHMpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEo
UHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgYWNjZXNzb3JUcmFpdHMuYml0
cygpKTsKIAogICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7
Ci0gICAgICAgIGlmIChhY2Nlc3NvclRyYWl0cyA9PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzU2V0dGVyKQorICAgICAgICBpZiAoYWNjZXNzb3JUcmFpdHMuaXNTZXR0ZXIoKSkKICAgICAg
ICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIEFTU0VSVChhY2Nlc3NvclRyYWl0cyA9PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzR2V0dGVyKTsKKyAgICAgICAgICAgIEFTU0VSVChhY2Nlc3NvclRyYWl0cy5pc0dldHRlcigp
KTsKICAgICAgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZUdldHRlcigpOwogICAgICAgICB9CiAg
ICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKICAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgp
OwogICAgICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwogCi0gICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1l
dGEpOwotICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgICAgIG1fcmFy
ZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0
dXJuIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdDo6U3VjY2VzczsKICAgICB9CiAKICAgICBQcml2
YXRlTmFtZUVudHJ5IGN1cnJlbnRFbnRyeSA9IGZpbmRSZXN1bHQtPnZhbHVlOwogICAgIGlmIChj
dXJyZW50RW50cnkuaXNEZWNsYXJlZCgpKSB7Ci0gICAgICAgIGlmICgoYWNjZXNzb3JUcmFpdHMg
PT0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlciAmJiAhY3VycmVudEVudHJ5Lmlz
R2V0dGVyKCkpCi0gICAgICAgICAgICB8fCAoYWNjZXNzb3JUcmFpdHMgPT0gUHJpdmF0ZU5hbWVF
bnRyeTo6VHJhaXRzOjpJc0dldHRlciAmJiAhY3VycmVudEVudHJ5LmlzU2V0dGVyKCkpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHBy
aXZhdGUgYWNjZXNzb3IuCisgICAgICAgIGlmICgoYWNjZXNzb3JUcmFpdHMuaXNTZXR0ZXIoKSAm
JiAhY3VycmVudEVudHJ5LmlzR2V0dGVyKCkpCisgICAgICAgICAgICB8fCAoYWNjZXNzb3JUcmFp
dHMuaXNHZXR0ZXIoKSAmJiAhY3VycmVudEVudHJ5LmlzU2V0dGVyKCkpKQorICAgICAgICAgICAg
cmV0dXJuIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdDo6RHVwbGljYXRlZE5hbWU7CisKKyAgICAg
ICAgaWYgKGFjY2Vzc29yVHJhaXRzLmlzU3RhdGljKCkgIT0gY3VycmVudEVudHJ5LmlzU3RhdGlj
KCkpCisgICAgICAgICAgICByZXR1cm4gUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlk
U3RhdGljTm9uU3RhdGljOwogCi0gICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShjdXJyZW50
RW50cnkuYml0cygpIHwgYWNjZXNzb3JUcmFpdHMpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5
IG1ldGEoY3VycmVudEVudHJ5LmJpdHMoKSB8IGFjY2Vzc29yVHJhaXRzLmJpdHMoKSk7CiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKIAog
ICAgICAgICBhdXRvIGVudHJ5SXRlcmF0b3IgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOwogICAg
ICAgICBBU1NFUlQoZW50cnlJdGVyYXRvciAhPSBtX21hcC5lbmQoKSk7Ci0gICAgICAgIGlmIChh
Y2Nlc3NvclRyYWl0cyA9PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKQorICAg
ICAgICBpZiAoYWNjZXNzb3JUcmFpdHMuaXNTZXR0ZXIoKSkKICAgICAgICAgICAgIGVudHJ5SXRl
cmF0b3ItPnZhbHVlLnNldElzUHJpdmF0ZVNldHRlcigpOwogICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIEFTU0VSVChhY2Nlc3NvclRyYWl0cyA9PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzR2V0dGVyKTsKKyAgICAgICAgICAgIEFTU0VSVChhY2Nlc3NvclRyYWl0cy5pc0dldHRlcigp
KTsKICAgICAgICAgICAgIGVudHJ5SXRlcmF0b3ItPnZhbHVlLnNldElzUHJpdmF0ZUdldHRlcigp
OwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBQcml2
YXRlRGVjbGFyYXRpb25SZXN1bHQ6OlN1Y2Nlc3M7CiAgICAgfQogCiAgICAgLy8gaXQgd2FzIHBy
ZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KICAgICBhdXRvIGVudHJ5ID0gVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5KCk7Ci0gICAgaWYgKGFjY2Vzc29yVHJhaXRzID09IFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpCisgICAgaWYgKGFjY2Vzc29yVHJhaXRzLmlz
U2V0dGVyKCkpCiAgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOwogICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQoYWNjZXNzb3JUcmFpdHMgPT0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc0dldHRlcik7CisgICAgICAgIEFTU0VSVChhY2Nlc3NvclRyYWl0cy5pc0dldHRlcigp
KTsKICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CiAgICAgfQogICAgIGVudHJ5
LnNldElzQ29uc3QoKTsKICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CiAgICAgbV9tYXAuYWRk
KGlkZW50aWZpZXIsIGVudHJ5KTsKIAotICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50cnkoY3Vy
cmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8
IGFjY2Vzc29yVHJhaXRzKTsKKyAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJlbnRF
bnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBhY2Nl
c3NvclRyYWl0cy5iaXRzKCkpOwogICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChp
ZGVudGlmaWVyLCBuZXdFbnRyeSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0KKyAgICByZXR1cm4gUHJp
dmF0ZURlY2xhcmF0aW9uUmVzdWx0OjpTdWNjZXNzOwogfQogCi1ib29sIFZhcmlhYmxlRW52aXJv
bm1lbnQ6OmRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpCitWYXJpYWJsZUVudmlyb25tZW50OjpQcml2YXRlRGVjbGFyYXRpb25S
ZXN1bHQgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzIG1vZGlmaWVyVHJhaXRzKQogewotICAgIHJldHVybiBkZWNsYXJlUHJpdmF0ZUFjY2Vzc29y
KGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpOworICAgIHJl
dHVybiBkZWNsYXJlUHJpdmF0ZUFjY2Vzc29yKGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnko
UHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlciB8IG1vZGlmaWVyVHJhaXRzKSk7CiB9
CiAKLWJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK1ZhcmlhYmxlRW52aXJvbm1l
bnQ6OlByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
LCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHMgbW9kaWZpZXJUcmFpdHMpCiB7Ci0gICAgcmV0dXJu
IGRlY2xhcmVQcml2YXRlQWNjZXNzb3IoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc0dldHRlcik7CisgICAgcmV0dXJuIGRlY2xhcmVQcml2YXRlQWNjZXNzb3IoaWRlbnRp
ZmllciwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVy
IHwgbW9kaWZpZXJUcmFpdHMpKTsKIH0KIAotYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKQorYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHMgYWRkaW9uYWxUcmFpdHMpCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAg
ICBtX3JhcmVEYXRhID0gbWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4o
KTsKQEAgLTE4Niw3ICsxODgsNyBAQCBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQ
cml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mCiAgICAgYXV0byBm
aW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsK
IAogICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgp
KSB7Ci0gICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKTsKKyAg
ICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNE
ZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QgfCBhZGRpb25hbFRy
YWl0cyk7CiAKICAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgp
OwogICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVNZXRob2QoKTsKQEAgLTIwOCw3ICsyMTAsNyBA
QCBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mCiAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5
KTsKIAogICAgIC8vIGl0IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQu
Ci0gICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNE
ZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVF
bnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CisgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNVc2VkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCB8IGFkZGlvbmFs
VHJhaXRzKTsKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVz
LnNldChpZGVudGlmaWVyLCBtZXRhKTsKICAgICByZXR1cm4gIWFkZFJlc3VsdC5pc05ld0VudHJ5
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuaAppbmRleCBhNmI5MTY2NGE1ZWVkYjU2NzZlYTI2NzM3N2JhOGRmODQyMjA0YWM3Li5k
MDZkZmQ0ZTNiMDkzODlkMzc4ZjM0YzYxYzQxMDU2ODM3OWYxOGUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtMTEwLDYg
KzExMCw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc1NldHRlcjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0dldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzR2V0dGVyOyB9CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzRmllbGQoKSBjb25zdCB7IHJldHVybiAhaXNQcml2YXRlTWV0aG9kT3JB
Y2Vzc29yKCk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTdGF0aWMoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc1N0YXRpYzsgfQogCiAgICAgYm9vbCBpc1ByaXZhdGVNZXRob2RPckFj
ZXNzb3IoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgpIHx8IGlzU2V0dGVyKCkgfHwgaXNHZXR0
ZXIoKTsgfQogCkBAIC0xMzAsNiArMTMxLDcgQEAgcHVibGljOgogICAgICAgICBJc01ldGhvZCA9
IDEgPDwgMiwKICAgICAgICAgSXNHZXR0ZXIgPSAxIDw8IDMsCiAgICAgICAgIElzU2V0dGVyID0g
MSA8PCA0LAorICAgICAgICBJc1N0YXRpYyA9IDEgPDwgNSwKICAgICB9OwogCiBwcml2YXRlOgpA
QCAtMTk2LDcgKzE5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtWYXJpYWJsZUFzRXhwb3J0
ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CiAKICAgICBi
b29sIGlzRXZlcnl0aGluZ0NhcHR1cmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0V2ZXJ5dGhpbmdD
YXB0dXJlZDsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX21hcC5zaXpl
KCk7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9tYXAuc2l6ZSgpICYm
ICFwcml2YXRlTmFtZXNTaXplKCk7IH0KIAogICAgIHVzaW5nIFByaXZhdGVOYW1lc1JhbmdlID0g
V1RGOjpJdGVyYXRvclJhbmdlPFByaXZhdGVOYW1lRW52aXJvbm1lbnQ6Oml0ZXJhdG9yPjsKIApA
QCAtMjA0LDE1ICsyMDYsMjggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCB1c2VQ
cml2YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHVzZVByaXZhdGVOYW1l
KGlkZW50aWZpZXIuaW1wbCgpKTsgfQogCiAgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhv
ZChpZGVudGlmaWVyLmltcGwoKSk7IH0KLSAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworICAgIGJvb2wgZGVj
bGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRp
ZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzIGFkZGlvbmFsVHJhaXRzID0gUHJpdmF0ZU5h
bWVFbnRyeTo6VHJhaXRzOjpOb25lKTsKIAotICAgIGJvb2wgZGVjbGFyZVByaXZhdGVBY2Nlc3Nv
cihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzKTsKKyAgICBlbnVtIGNsYXNzIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCB7CisgICAgICAg
IFN1Y2Nlc3MsCisgICAgICAgIER1cGxpY2F0ZWROYW1lLAorICAgICAgICBJbnZhbGlkU3RhdGlj
Tm9uU3RhdGljCisgICAgfTsKKworICAgIFByaXZhdGVEZWNsYXJhdGlvblJlc3VsdCBkZWNsYXJl
UHJpdmF0ZUFjY2Vzc29yKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mLCBQcml2YXRl
TmFtZUVudHJ5IGFjY2Vzc29yVHJhaXRzKTsKKyAgICAKKyAgICBib29sIGRlY2xhcmVTdGF0aWNQ
cml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCksIHN0YXRpY19j
YXN0PFByaXZhdGVOYW1lRW50cnk6OlRyYWl0cz4oUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c01ldGhvZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTdGF0aWMpKTsKKyAgICB9CiAK
LSAgICBib29sIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQot
ICAgIGJvb2wgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcik7CisgICAgUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0IGRlY2xhcmVQ
cml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xh
cmVQcml2YXRlU2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIFByaXZhdGVEZWNsYXJh
dGlvblJlc3VsdCBkZWNsYXJlU3RhdGljUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZVNldHRlcihpZGVudGlmaWVyLmltcGwo
KSwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1N0YXRpYyk7IH0KKyAgICBQcml2YXRlRGVj
bGFyYXRpb25SZXN1bHQgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzIG1vZGlmaWVy
VHJhaXRzID0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpOb25lKTsKIAotICAgIGJvb2wgZGVj
bGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4g
ZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9Ci0gICAgYm9vbCBkZWNs
YXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKTsKKyAgICBQcml2YXRlRGVjbGFyYXRpb25SZXN1bHQgZGVjbGFyZVByaXZhdGVHZXR0ZXIo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVHZXR0
ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgUHJpdmF0ZURlY2xhcmF0aW9uUmVzdWx0IGRl
Y2xhcmVTdGF0aWNQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsg
cmV0dXJuIGRlY2xhcmVQcml2YXRlR2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpLCBQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzU3RhdGljKTsgfQorICAgIFByaXZhdGVEZWNsYXJhdGlvblJlc3Vs
dCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHMgbW9kaWZpZXJUcmFpdHMgPSBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6Ok5vbmUpOwogCiAgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFy
ZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KQogICAgIHsKQEAgLTI1MywxNiArMjY4LDI5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lczsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaGFzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKSBjb25zdAorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBoYXNTdGF0aWNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcigpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKLSAgICAgICAgICAgIGlmIChl
bnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSkKKyAgICAgICAgICAgIGlmIChl
bnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSAmJiBlbnRyeS52YWx1ZS5pc1N0
YXRpYygpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0KKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgQUxXQVlTX0lOTElO
RSBib29sIGhhc0luc3RhbmNlUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAKKyAgICAgICAgZm9yIChhdXRvIGVudHJ5IDogcHJpdmF0ZU5hbWVzKCkpIHsKKyAgICAg
ICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSAmJiAhZW50
cnkudmFsdWUuaXNTdGF0aWMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1MTk4Nzk3ZGYz
NThjYzg4NjQzMmQyNTlkZTY2NGRhY2MzYzA5NTVhLi43OTc3M2FlMGU5MTM1ZjljYmYyNmU1YmNj
YjQ3YmYxYTAzZWIyODVkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAyLTE4ICBDYWlvIExpbWEgIDx0
aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgcHJpdmF0ZSBz
dGF0aWMgbWV0aG9kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTkxODEKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAg
ICAgICogc3RyZXNzL2NsYXNzLXByaXZhdGUtbWV0aG9kLWFjY2Vzcy5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL3ByaXZhdGUtYWNjZXNzb3Itc3RhdGljLW5vbi1zdGF0aWMuanM6IEFkZGVk
LgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qczoKKyAgICAg
ICAgKiBzdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3ItaW5uZXItY2xh
c3MuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFu
ZC1hY2Nlc3Nvci1tdWx0aXBsZS1ldmFsdWF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJl
c3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBvc3RmaXgtbm9kZS5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vz
c29ycy1wcmVmaXgtbm9kZS5qczogQWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFt
bDoKKwogMjAyMS0wMi0xNSAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAg
ICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgYWNjZXNzb3JzCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9jbGFzcy1wcml2YXRlLW1ldGhvZC1hY2Nlc3MuanMgYi9KU1Rlc3RzL3N0
cmVzcy9jbGFzcy1wcml2YXRlLW1ldGhvZC1hY2Nlc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI3NjJlYTVi
NGIxNjgxZjUzMTBlZjgxZDY4Yjc5NDdkNDgzYThhOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2NsYXNzLXByaXZhdGUtbWV0aG9kLWFjY2Vzcy5qcwpAQCAtMCwwICsxLDExMyBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitmdW5j
dGlvbiBhc3NlcnQoYSwgZSkgeworICAgIGlmIChhICE9PSBlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkOiAiICsgZSArICIgYnV0IGdvdDogIiArIGEpOworfQorCitmdW5jdGlv
biBhc3NlcnRUaHJvd3MoZXhwZWN0ZWRFcnJvciwgZikgeworICAgIHRyeSB7CisgICAgICAgIGYo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydChlIGluc3RhbmNlb2YgZXhwZWN0
ZWRFcnJvciwgdHJ1ZSk7CisgICAgfQorfQorCisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAg
ICAgICBzdGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICdzdGF0aWMnOworICAg
ICAgICB9CisKKyAgICAgICAgc3RhdGljIHN0YXRpY0FjY2VzcygpIHsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLiNtOworICAgICAgICB9CisKKyAgICAgICAgZ2V0ICNmKCkgeworICAgICAgICAg
ICAgcmV0dXJuICdpbnN0YW5jZSc7CisgICAgICAgIH0KKworICAgICAgICBpbnN0YW5jZUFjY2Vz
cygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNmOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydChDLnN0YXRpY0FjY2VzcygpLCAnc3RhdGlj
Jyk7CisgICAgYXNzZXJ0KGMuaW5zdGFuY2VBY2Nlc3MoKSwgJ2luc3RhbmNlJyk7CisKKyAgICBh
c3NlcnRUaHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIEMuc3RhdGljQWNjZXNzLmNh
bGwoYyk7CisgICAgfSk7CisKKyAgICBhc3NlcnRUaHJvd3MoVHlwZUVycm9yLCAoKSA9PiB7Cisg
ICAgICAgIGMuaW5zdGFuY2VBY2Nlc3MuY2FsbChDKTsKKyAgICB9KTsKK30pKCk7CisKKygoKSA9
PiB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyAjbSgpIHsKKyAgICAgICAgICAgIHJl
dHVybiAnc3RhdGljJzsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBzdGF0aWNBY2Nlc3Mo
KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSgpOworICAgICAgICB9CisKKyAgICAgICAg
I2YoKSB7CisgICAgICAgICAgICByZXR1cm4gJ2luc3RhbmNlJzsKKyAgICAgICAgfQorCisgICAg
ICAgIGluc3RhbmNlQWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI2YoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQoQy5zdGF0
aWNBY2Nlc3MoKSwgJ3N0YXRpYycpOworICAgIGFzc2VydChjLmluc3RhbmNlQWNjZXNzKCksICdp
bnN0YW5jZScpOworCisgICAgYXNzZXJ0VGhyb3dzKFR5cGVFcnJvciwgKCkgPT4geworICAgICAg
ICBDLnN0YXRpY0FjY2Vzcy5jYWxsKGMpOworICAgIH0pOworCisgICAgYXNzZXJ0VGhyb3dzKFR5
cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLmluc3RhbmNlQWNjZXNzLmNhbGwoQyk7CisgICAg
fSk7Cit9KSgpOworCisoKCkgPT4geworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0
ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX20gPSB2OworICAgICAgICB9CisKKyAgICAgICAg
c3RhdGljIHN0YXRpY0FjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20gPSAnc3RhdGljJzsK
KyAgICAgICAgfQorCisgICAgICAgIHNldCAjZih2KSB7CisgICAgICAgICAgICB0aGlzLl9mID0g
djsKKyAgICAgICAgfQorCisgICAgICAgIGluc3RhbmNlQWNjZXNzKCkgeworICAgICAgICAgICAg
dGhpcy4jZiA9ICdpbnN0YW5jZSc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgQy5zdGF0aWNBY2Nlc3MoKTsKKyAgICBhc3NlcnQoQy5fbSwgJ3N0YXRpYycp
OworICAgIGMuaW5zdGFuY2VBY2Nlc3MoKQorICAgIGFzc2VydChjLl9mLCAnaW5zdGFuY2UnKTsK
KworICAgIGFzc2VydFRocm93cyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICAgICAgQy5zdGF0aWNB
Y2Nlc3MuY2FsbChjKTsKKyAgICB9KTsKKworICAgIGFzc2VydFRocm93cyhUeXBlRXJyb3IsICgp
ID0+IHsKKyAgICAgICAgYy5pbnN0YW5jZUFjY2Vzcy5jYWxsKEMpOworICAgIH0pOworfSkoKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1hY2Nlc3Nvci1zdGF0aWMtbm9u
LXN0YXRpYy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNzb3Itc3RhdGljLW5vbi1z
dGF0aWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDI3ZTRlZGIwNTIwOTcwMTkyOGYzN2E2YTA5OTUxYThkYzFh
YTNhNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNzb3It
c3RhdGljLW5vbi1zdGF0aWMuanMKQEAgLTAsMCArMSw0NCBAQAorLy9AIHJ1bigiLS11c2VDbGFz
c0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2Z1bmN0aW9uIGFzc2Vy
dChhLCBlLCBtKSB7CisgICAgaWYgKGEgIT09IGUpCisgICAgICAgIHRocm93IG5ldyBFcnJvciht
KTsKK30KKworZnVuY3Rpb24gYXNzZXJ0U3ludGF4RXJyb3IoY29kZSkgeworICAgIHRyeSB7Cisg
ICAgICAgIGV2YWwoY29kZSk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ29kZSBleGVjdXRl
ZCB3aXRob3V0IHRocm93aW5nIFN5bnRheEVycm9yIik7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yLCB0cnVlLCBlLm1lc3NhZ2UpOwor
ICAgIH0KK30KKworYXNzZXJ0U3ludGF4RXJyb3IoYAorICAgIGNsYXNzIEMgeworICAgICAgICBz
dGF0aWMgZ2V0ICNtKCkge30KKyAgICAgICAgc2V0ICNtKHYpIHt9CisgICAgfQorYCk7CisKK2Fz
c2VydFN5bnRheEVycm9yKGAKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkge30KKyAg
ICAgICAgc3RhdGljIHNldCAjbSh2KSB7fQorICAgIH0KK2ApOworCithc3NlcnRTeW50YXhFcnJv
cihgCisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQgI20odikge30KKyAgICAgICAg
Z2V0ICNtKCkge30KKyAgICB9CitgKTsKKworYXNzZXJ0U3ludGF4RXJyb3IoYAorICAgIGNsYXNz
IEMgeworICAgICAgICBzZXQgI20odikge30KKyAgICAgICAgc3RhdGljIGdldCAjbSgpIHt9Cisg
ICAgfQorYCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlu
bmVyLWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3Mu
anMKaW5kZXggMDYwY2VkZmUyNTQ2Y2E1MTE4ODZhMTBjNjJjMjVjNGEwMGQ1NThjNS4uMDc3MWU3
OTE4MGM2OGE2YTc3OTFlYzRiOTljZDgxMzEyYTRkNDhjYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTEyNiw3ICsxMjYsNyBAQCBsZXQgYXNz
ZXJ0ID0gewogICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7
CiAKICAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlu
bmVyQi5tZXRob2QoYyk7CisgICAgICAgIEMucHJvdG90eXBlLm1ldGhvZC5jYWxsKGlubmVyQik7
CiAgICAgfSk7CiB9KSgpOwogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJp
dmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3Nvci1pbm5lci1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNz
L3N0YXRpYy1wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29yLWlubmVyLWNsYXNzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1NDBiNTA0OWE2ODlhNmU3NzNjZGI4YzRiNGE5NzI2ZWVhNWI0ODIKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nl
c3Nvci1pbm5lci1jbGFzcy5qcwpAQCAtMCwwICsxLDIyMiBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6
ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9y
LCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
KyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljICNtZXRob2QoKSB7
CisgICAgICAgICAgICByZXR1cm4gJ291dGVyIGNsYXNzJzsKKyAgICAgICAgfQorCisgICAgICAg
IHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSW5uZXJDID0gY2xhc3MgeworICAgICAgICAgICAg
c3RhdGljICNtZXRob2QyKCkgeworICAgICAgICAgICAgICAgIHJldHVybiAnaW5uZXIgY2xhc3Mn
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiB0aGlzLiNtZXRob2QyKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuYWNjZXNzKCksICdvdXRlciBjbGFz
cycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoQy5Jbm5lckMuYWNjZXNzKCksICdpbm5lciBjbGFz
cycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBDLmFjY2Vzcy5jYWxsKEMuSW5uZXJDKTsKKyAgICB9KTsKKworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5Jbm5lckMuYWNjZXNzLmNhbGwoQyk7
CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
IHN0YXRpYyAjbWV0aG9kKCkgeworICAgICAgICAgICAgcmV0dXJuICdvdXRlciBjbGFzcyc7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuI21ldGhvZCgpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElubmVyQyA9IGNs
YXNzIHsKKyAgICAgICAgICAgIHN0YXRpYyAjbWV0aG9kMigpIHsKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBjYWxsZWQiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG8uI21ldGhvZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcygpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKEMuSW5uZXJDLmFjY2VzcyhDKSwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzLmNhbGwoQy5J
bm5lckMpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9u
KCkgeworICAgICAgICBDLklubmVyQy5hY2Nlc3MoQy5Jbm5lckMpOworICAgIH0pOworfSkoKTsK
KworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgZ2V0ICNtKCkg
eworICAgICAgICAgICAgcmV0dXJuICdvdXRlciBjbGFzcyc7CisgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgSW5uZXJDID0gY2xhc3MgeworICAgICAgICAgICAgc3RhdGlj
IGdldCAjbTIoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICdpbm5lciBjbGFzcyc7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuI20yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcygpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKEMuSW5uZXJDLmFjY2VzcygpLCAnaW5uZXIgY2xhc3MnKTsKKworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MuY2Fs
bChDLklubmVyQyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIEMuSW5uZXJDLmFjY2Vzcy5jYWxsKEMpOworICAgIH0pOworfSko
KTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgZ2V0ICNt
KCkgeworICAgICAgICAgICAgcmV0dXJuICdvdXRlciBjbGFzcyc7CisgICAgICAgIH0KKworICAg
ICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAg
ICAgIH0KKworICAgICAgICBzdGF0aWMgSW5uZXJDID0gY2xhc3MgeworICAgICAgICAgICAgc3Rh
dGljIGdldCAjbTIoKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQg
bmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0YXRpYyBh
Y2Nlc3MobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDLmFjY2VzcygpLCAnb3V0
ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuSW5uZXJDLmFjY2VzcyhDKSwgJ291
dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgIEMuYWNjZXNzLmNhbGwoQy5Jbm5lckMpOworICAgIH0pOworCisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLklubmVyQy5hY2Nlc3Mo
Qy5Jbm5lckMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMg
eworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2Owor
ICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMu
I20gPSAnb3V0ZXIgY2xhc3MnOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElubmVyQyA9
IGNsYXNzIHsKKyAgICAgICAgICAgIHN0YXRpYyBzZXQgI20yKHYpIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLl92ID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhdGljIGFjY2Vz
cygpIHsKKyAgICAgICAgICAgICAgICB0aGlzLiNtMiA9ICdpbm5lciBjbGFzcyc7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDLmFjY2VzcygpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoQy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBDLklubmVyQy5hY2Nlc3MoKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuSW5uZXJDLl92LCAnaW5uZXIgY2xhc3MnKTsKKworICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3Mu
Y2FsbChDLklubmVyQyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24oKSB7CisgICAgICAgIEMuSW5uZXJDLmFjY2Vzcy5jYWxsKEMpOworICAgIH0pOwor
fSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0
ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2OworICAgICAgICB9CisKKyAgICAgICAg
c3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20gPSAnb3V0ZXIgY2xhc3MnOwor
ICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIElubmVyQyA9IGNsYXNzIHsKKyAgICAgICAgICAg
IHN0YXRpYyBzZXQgI20yKHYpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNo
b3VsZCBuZXZlciBiZSBleGVjdXRlZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBz
dGF0aWMgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gJ2lubmVyIGNsYXNzJzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEMuYWNjZXNzKCk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShDLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIEMuSW5uZXJDLmFj
Y2VzcyhDKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMuX3YsICdpbm5lciBjbGFzcycpOworCisg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2Vz
cy5jYWxsKEMuSW5uZXJDKTsKKyAgICB9KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5Jbm5lckMuYWNjZXNzKEMuSW5uZXJDKTsKKyAgICB9
KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1l
dGhvZHMtYW5kLWFjY2Vzc29yLW11bHRpcGxlLWV2YWx1YXRpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9zdGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3Nvci1tdWx0aXBsZS1ldmFsdWF0aW9u
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJjNmFlZGUwN2MyMjUxZjY2ODY0ZGM3MTg1ZjRhOWU3NmViMTQ5YjkK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2Rz
LWFuZC1hY2Nlc3Nvci1tdWx0aXBsZS1ldmFsdWF0aW9uLmpzCkBAIC0wLDAgKzEsMTA1IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYg
KGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rp
b24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhw
ZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAg
ICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiBjbGFzc0ZhY3Rv
cnkoKSB7CisgICAgICAgIHJldHVybiBjbGFzcyB7CisgICAgICAgICAgICBzdGF0aWMgI21ldGhv
ZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgICAgICAgICAgfQorICAg
IAorICAgICAgICAgICAgc3RhdGljIGFjY2VzcyhvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG8uI21ldGhvZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKyAgICAKKyAg
ICBsZXQgQzEgPSBjbGFzc0ZhY3RvcnkoKTsKKyAgICBsZXQgQzIgPSBjbGFzc0ZhY3RvcnkoKTsK
KyAgICAKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMxLmFjY2VzcyhDMSksICd0ZXN0Jyk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShDMi5hY2Nlc3MoQzIpLCAndGVzdCcpOworICAgIAorICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIEMxLmFjY2VzcyhDMik7
CisgICAgfSk7CisgICAgCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgQzIuYWNjZXNzKEMxKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgZnVuY3Rpb24gY2xhc3NGYWN0b3J5KCkgeworICAgICAgICByZXR1cm4gY2xhc3Mg
eworICAgICAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
J3Rlc3QnOworICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgc3RhdGljIGFjY2Vzcyhv
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9OworICAgIAorICAgIGxldCBDMSA9IGNsYXNzRmFjdG9yeSgpOworICAgIGxldCBD
MiA9IGNsYXNzRmFjdG9yeSgpOworICAgIAorICAgIGFzc2VydC5zYW1lVmFsdWUoQzEuYWNjZXNz
KEMxKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKEMyLmFjY2VzcyhDMiksICd0ZXN0
Jyk7CisgICAgCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgQzEuYWNjZXNzKEMyKTsKKyAgICB9KTsKKyAgICAKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBDMi5hY2Nlc3MoQzEpOworICAgIH0pOwor
fSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiBjbGFzc0ZhY3RvcnkoKSB7Cisg
ICAgICAgIHJldHVybiBjbGFzcyB7CisgICAgICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLl92ID0gdjsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAg
ICAgIHN0YXRpYyBhY2Nlc3MobykgeworICAgICAgICAgICAgICAgIG8uI20gPSAndGVzdCc7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworICAgIAorICAgIGxldCBDMSA9IGNsYXNz
RmFjdG9yeSgpOworICAgIGxldCBDMiA9IGNsYXNzRmFjdG9yeSgpOworICAgIAorICAgIEMxLmFj
Y2VzcyhDMSk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDMS5fdiwgJ3Rlc3QnKTsKKworICAgIEMy
LmFjY2VzcyhDMik7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShDMi5fdiwgJ3Rlc3QnKTsKKyAgICAK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBDMS5h
Y2Nlc3MoQzIpOworICAgIH0pOworICAgIAorICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgIEMyLmFjY2VzcyhDMSk7CisgICAgfSk7Cit9KSgpOworCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zdGF0aWMtcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nl
c3NvcnMtcG9zdGZpeC1ub2RlLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0
aG9kcy1hbmQtYWNjZXNzb3JzLXBvc3RmaXgtbm9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmRmNzE2Y2Vi
ZmY0OGEwYWJhMzM4MTIxOGNiYTJlMGJkODdkZTg2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBvc3RmaXgtbm9k
ZS5qcwpAQCAtMCwwICsxLDE1OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVN
ZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24g
KGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAg
IH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAg
ICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBi
dXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbigpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljICNtZXRob2QoKSB7CisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBjYWxsZWQiKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9k
Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rp
b24oKSB7CisgICAgbGV0IGV4ZWN1dGVkR2V0dGVyID0gZmFsc2U7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgIHN0YXRpYyBnZXQgI20oKSB7CisgICAgICAgICAgICBleGVjdXRlZEdldHRlciA9IHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAg
cmV0dXJuIHRoaXMuI20rKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKKwor
ICAgIGFzc2VydC5zYW1lVmFsdWUodHJ1ZSwgZXhlY3V0ZWRHZXR0ZXIpOworfSkoKTsKKworKGZ1
bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkIik7Cisg
ICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuI20rKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisK
KyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc3RhdGljIHNldCAjbSh2KSB7
CisgICAgICAgICAgICBhc3NlcnQuc2FtZVZhbHVlKDUsIHYpOworICAgICAgICB9CisKKyAgICAg
ICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtKys7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKDQsIEMuYWNjZXNzKCkp
OworfSkoKTsKKworLy8gSWdub3JlZCByZXN1bHQKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNz
IEMgeworICAgICAgICBzdGF0aWMgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgc3Rh
dGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI21ldGhvZC0tOworICAgICAgICB9Cisg
ICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBDLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGxldCBl
eGVjdXRlZEdldHRlciA9IGZhbHNlOworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgZ2V0
ICNtKCkgeworICAgICAgICAgICAgZXhlY3V0ZWRHZXR0ZXIgPSB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20tLTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUodHJ1
ZSwgZXhlY3V0ZWRHZXR0ZXIpOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMg
eworICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkIik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0
aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgdGhpcy4jbS0tOworICAgICAgICB9CisgICAgfQor
CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFj
Y2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgewor
ICAgICAgICBzdGF0aWMgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIGFzc2VydC5zYW1lVmFsdWUo
Mywgdik7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAg
ICAgcmV0dXJuIDQ7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAg
ICAgICAgICAgdGhpcy4jbS0tOworICAgICAgICB9CisgICAgfQorCisgICAgQy5hY2Nlc3MoKTsK
K30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1wcml2YXRlLW1ldGhv
ZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3N0YXRpYy1w
cml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MDFiMTNmM2E0N2I5ZjdjMTQzNjUxNGU4M2Y2YTQwYTEwNWU1MjQzCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvc3RhdGljLXByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBy
ZWZpeC1ub2RlLmpzCkBAIC0wLDAgKzEsMTU4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
UHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBm
dW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJo
cyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJy
b3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0
aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgI21ldGhvZCgpIHsKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIpOworICAgICAg
ICB9CisKKyAgICAgICAgc3RhdGljIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiArK3Ro
aXMuI21ldGhvZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisK
KyhmdW5jdGlvbigpIHsKKyAgICBsZXQgZXhlY3V0ZWRHZXR0ZXIgPSBmYWxzZTsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgc3RhdGljIGdldCAjbSgpIHsKKyAgICAgICAgICAgIGV4ZWN1dGVkR2V0
dGVyID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAg
ICAgICAgICByZXR1cm4gKyt0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2VzcygpOworICAg
IH0pOworCisgICAgYXNzZXJ0LnNhbWVWYWx1ZSh0cnVlLCBleGVjdXRlZEdldHRlcik7Cit9KSgp
OworCisoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQgI20o
dikgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgZXhlY3V0
ZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAg
ICByZXR1cm4gKyt0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLmFjY2VzcygpOworICAgIH0pOwor
fSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzdGF0aWMgc2V0
ICNtKHYpIHsKKyAgICAgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoNSwgdik7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgZ2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAg
ICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuICsr
dGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydC5zYW1lVmFsdWUoNSwgQy5h
Y2Nlc3MoKSk7Cit9KSgpOworCisvLyBJZ25vcmVkIHJlc3VsdAorCisoZnVuY3Rpb24oKSB7Cisg
ICAgY2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyAjbWV0aG9kKCkgeworICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAgIH0KKworICAg
ICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgLS10aGlzLiNtZXRob2Q7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7Cisg
ICAgbGV0IGV4ZWN1dGVkR2V0dGVyID0gZmFsc2U7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHN0
YXRpYyBnZXQgI20oKSB7CisgICAgICAgICAgICBleGVjdXRlZEdldHRlciA9IHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICBzdGF0aWMgYWNjZXNzKCkgeworICAgICAgICAgICAgLS10aGlzLiNt
OworICAgICAgICB9CisgICAgfQorCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBDLmFjY2VzcygpOworICAgIH0pOworCisgICAgYXNzZXJ0LnNhbWVW
YWx1ZSh0cnVlLCBleGVjdXRlZEdldHRlcik7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQgI20odikgeworICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN0YXRpYyBhY2Nlc3MoKSB7CisgICAgICAgICAgICAtLXRoaXMuI207CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIEMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAgY2xh
c3MgQyB7CisgICAgICAgIHN0YXRpYyBzZXQgI20odikgeworICAgICAgICAgICAgYXNzZXJ0LnNh
bWVWYWx1ZSgzLCB2KTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBnZXQgI20oKSB7Cisg
ICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBhY2Nlc3Mo
KSB7CisgICAgICAgICAgICAtLXRoaXMuI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBDLmFj
Y2VzcygpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
IGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDQxMTY2NzZkZDFlYTg2NDMxNTg2
NDA5NWU1NDYxZDE5MGQ2ZTViYTEuLjgyYTY5YjM4YmFmNzc5ZDAyMjM2OWVkMzM5ODg4MjI3NzU5
ZTdhMTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTcsNiArNyw3IEBAIGZsYWdzOgogICBjbGFzcy1t
ZXRob2RzLXByaXZhdGU6IHVzZVByaXZhdGVNZXRob2RzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMt
cHVibGljOiB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcwogICBjbGFzcy1zdGF0aWMtZmllbGRz
LXByaXZhdGU6IHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcworICBjbGFzcy1zdGF0aWMtbWV0
aG9kcy1wcml2YXRlOiB1c2VQcml2YXRlTWV0aG9kcwogICBJbnRsLkRhdGVUaW1lRm9ybWF0LWRh
eVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCiAgIFNoYXJlZEFycmF5QnVm
ZmVyOiB1c2VTaGFyZWRBcnJheUJ1ZmZlcgogICBBdG9taWNzOiB1c2VTaGFyZWRBcnJheUJ1ZmZl
cgpAQCAtMjAsNyArMjEsNiBAQCBza2lwOgogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKICAgICAt
IGxlZ2FjeS1yZWdleHAKIAotICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAg
IC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQKICAgICAjIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI0NzUK
</data>

          </attachment>
      

    </bug>

</bugzilla>