<?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>226418</bug_id>
          
          <creation_ts>2021-05-29 08:45:36 -0700</creation_ts>
          <short_desc>Optimize Function.prototype.toString</short_desc>
          <delta_ts>2021-06-04 08:58:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765087</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-05-29 08:45:36 -0700</bug_when>
    <thetext>&lt;rdar://77861846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765090</commentid>
    <comment_count>1</comment_count>
      <attachid>430096</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-05-29 09:16:07 -0700</bug_when>
    <thetext>Created attachment 430096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765091</commentid>
    <comment_count>2</comment_count>
      <attachid>430096</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-05-29 09:38:20 -0700</bug_when>
    <thetext>Comment on attachment 430096
Patch

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

Looks good, but your OSR exit should really be a slow path.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10522
&gt; +    speculationCheck(BadType, JSValueSource::unboxedCell(result.gpr()), node, m_jit.branchIfEmpty(result.gpr()));

This should be a slow path.

You don&apos;t want to OSR exit just because you got passed a function that was stringified yet.  OSR exits are far too expensive to be part of the mechanism by which functions get stringified for the first time.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8233
&gt; +        speculate(
&gt; +            BadType, jsValueValue(asString), m_node,
&gt; +            m_out.isNull(asString));

Slow path please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765625</commentid>
    <comment_count>3</comment_count>
      <attachid>430265</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-06-01 08:39:09 -0700</bug_when>
    <thetext>Created attachment 430265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765652</commentid>
    <comment_count>4</comment_count>
      <attachid>430265</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2021-06-01 09:59:58 -0700</bug_when>
    <thetext>Comment on attachment 430265
Patch

Looks like a test is berked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765738</commentid>
    <comment_count>5</comment_count>
      <attachid>430265</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-01 13:42:42 -0700</bug_when>
    <thetext>Comment on attachment 430265
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        Make it an intrinsic and add support for it in DFG and FTL. I added a new
&gt; +        microbenchmark that speeds up by &gt;40x;

This explanation can be a lot more descriptive. The important speedup isn&apos;t from making it an intrinsic. It&apos;s from caching it. This makes no mention of that.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2859
&gt; +        setForNode(node, m_vm.stringStructure.get());

any chance we can constant fold this in the compiler if the executable is a constant and its m_asString is set?

Maybe to make that safe, we&apos;d need a storeStoreFence before storing to m_asString of Executable.

&gt; Source/JavaScriptCore/dfg/DFGDoesGC.cpp:115
&gt; +    case ExecutableToString:

this is wrong

&gt; Source/JavaScriptCore/dfg/DFGNodeType.h:423
&gt; +    macro(ExecutableToString, NodeResultJS | NodeMustGenerate) \

Why must generate?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10522
&gt; +    JITCompiler::Jump slowPath = m_jit.branchIfEmpty(result.gpr());

branchIfEmpty is for JSValues. You should be using a branchTestPtr here. (Logically they&apos;re the same on 64-bit, but this aint right on 32-bit)

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:80
&gt; +    visitor.append(thisObject-&gt;m_asString);

why not put this in rare data?

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.h:325
&gt; +    JSValue toStringSlow(JSGlobalObject*);

this should return JSString*, not JSValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765744</commentid>
    <comment_count>6</comment_count>
      <attachid>430265</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-01 13:59:18 -0700</bug_when>
    <thetext>Comment on attachment 430265
Patch

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

&gt; Source/JavaScriptCore/runtime/FunctionExecutableInlines.h:42
&gt; +        m_asString.set(vm, this, asString(toStringSlow(globalObject)));

what if this throws? Then what&apos;re we setting this to? I feel like we need to only set this if toStringSlow doesn&apos;t throw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765753</commentid>
    <comment_count>7</comment_count>
      <attachid>430265</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-01 14:15:36 -0700</bug_when>
    <thetext>Comment on attachment 430265
Patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8245
&gt; +        setJSValue(m_out.phi(Int64, fastResult, slowResult));

nit: I think Int64 =&gt; pointerType() is a bit more semantically correct here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765755</commentid>
    <comment_count>8</comment_count>
      <attachid>430265</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-01 14:18:07 -0700</bug_when>
    <thetext>Comment on attachment 430265
Patch

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

&gt; Source/JavaScriptCore/runtime/FunctionPrototype.cpp:84
&gt;              RELEASE_AND_RETURN(scope, JSValue::encode(jsMakeNontrivialString(globalObject, &quot;function &quot;, function-&gt;name(vm), &quot;() {\n    [native code]\n}&quot;)));

why aren&apos;t we caching for host/builtin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766410</commentid>
    <comment_count>9</comment_count>
      <attachid>430475</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-06-03 09:07:12 -0700</bug_when>
    <thetext>Created attachment 430475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766471</commentid>
    <comment_count>10</comment_count>
      <attachid>430475</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-03 12:04:57 -0700</bug_when>
    <thetext>Comment on attachment 430475
Patch

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

Mostly LGTM, but I found a bug.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2867
&gt; +                    asString = static_cast&lt;NativeExecutable*&gt;(function-&gt;executable())-&gt;asString();
&gt; +                asString = function-&gt;jsExecutable()-&gt;asString();

this looks wrong, and like it should crash for host functions in a debug assert, as you call jsExecutable. Can you make sure we have a test? I think it should be trivial-ish by just calling toString on a builtin constructor

To fix, I think you just need to put it in an else.

Also, a small comment on organization, you could add a method to JSFunction called &quot;asStringConcurrently&quot; or similar, that&apos;s called from AI. The details will go in there, which are maybe slightly nicer?

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1823
&gt; +        read(JSCell_structureID);

I wonder if this is actually necessary. It&apos;s a bit deceptive, but we don&apos;t actually care if the StructureID actually changes. Since we&apos;re reading the class info, that&apos;s guaranteed to never change via transitions. So we&apos;re ok if someone writes structure in a loop, that shouldn&apos;t really prevent us from being hoisted out of said loop

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10537
&gt; +    slowCases.append(m_jit.branchPtr(CCallHelpers::Equal, result.gpr(), TrustedImmPtr(JSBoundFunction::info())));

nit: maybe it&apos;s worth a static assert that JSBoundFunction is final? That guarantees this branch has to be correct.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:8251
&gt; +        m_out.branch(m_out.equal(classInfo, m_out.constIntPtr(JSBoundFunction::info())), rarely(slowCase), usually(notBoundFunctionCase));

nit: I don&apos;t think we should prescribe this a-priori as a slow case. Maybe the program really is toStringing a bound function

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:126
&gt; +    auto throwScope = DECLARE_THROW_SCOPE(vm);
&gt; +    auto catchScope = DECLARE_CATCH_SCOPE(vm);

ditto about just needing throwScope

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:130
&gt; +            return ::JSC::asString(jsMakeNontrivialString(globalObject, &quot;function &quot;, name().string(), &quot;() {\n    [native code]\n}&quot;));

if this throws, asString is the wrong thing...

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:183
&gt; +        return ::JSC::asString(jsMakeNontrivialString(globalObject, functionHeader, name, src));

ditto about OOM and asString being wrong

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.cpp:189
&gt; +    if (catchScope.exception()) {
&gt; +        throwScope.throwException(globalObject, catchScope.exception());
&gt; +        return nullptr;
&gt; +    }

I think this can just be 
RETURN_IF_EXCEPTION(throwScope, nullptr)

&gt; Source/JavaScriptCore/runtime/FunctionExecutable.h:289
&gt; +    JSString* asString() const

maybe &quot;asStringConcurrently&quot;? AFAICT, the only use is the compiler. So it&apos;s helpful to document that it can be used in that context.

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:255
&gt; +        return asString(jsMakeNontrivialString(globalObject, &quot;function &quot;, function-&gt;nameString(), &quot;() {\n    [native code]\n}&quot;));

this is wrong if OOM, it won&apos;t be a string

&gt; Source/JavaScriptCore/runtime/NativeExecutable.cpp:101
&gt; +    auto throwScope = DECLARE_THROW_SCOPE(vm);
&gt; +    auto catchScope = DECLARE_CATCH_SCOPE(vm);

this is a non idiomatic way of doing things. I don&apos;t get why you need the catch scope at all. I think the throw scope itself is sufficient. After the call to asString, I&apos;d just do:
RETURN_IF_EXCEPTION(throwScope, nullptr);

&gt; JSTests/microbenchmarks/function-to-string.js:22
&gt; +function test() {

Maybe also good to have some microbenchmarks for:
- CSE
- LICM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766583</commentid>
    <comment_count>11</comment_count>
      <attachid>430513</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-06-03 16:35:02 -0700</bug_when>
    <thetext>Created attachment 430513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766588</commentid>
    <comment_count>12</comment_count>
      <attachid>430514</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-06-03 16:51:34 -0700</bug_when>
    <thetext>Created attachment 430514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766590</commentid>
    <comment_count>13</comment_count>
      <attachid>430514</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-06-03 17:02:21 -0700</bug_when>
    <thetext>Comment on attachment 430514
Patch

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

Nice. r=me if you fix the final OOM bug with jsMakeNontrivialString and asString-ing it.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10533
&gt; +    speculateCellType(node-&gt;child1(), function.gpr(), SpecFunction, JSFunctionType);

nit: I&apos;d call speculateFunction(node-&gt;child1(), function.gpr()) here, so we&apos;re not repeating the contents of it.

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:255
&gt; +        return asString(jsMakeNontrivialString(globalObject, &quot;function &quot;, function-&gt;nameString(), &quot;() {\n    [native code]\n}&quot;));

still the same bug as before regarding OOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766599</commentid>
    <comment_count>14</comment_count>
      <attachid>430514</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-06-03 17:22:21 -0700</bug_when>
    <thetext>Comment on attachment 430514
Patch

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

Thanks for the reviews

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:10533
&gt;&gt; +    speculateCellType(node-&gt;child1(), function.gpr(), SpecFunction, JSFunctionType);
&gt; 
&gt; nit: I&apos;d call speculateFunction(node-&gt;child1(), function.gpr()) here, so we&apos;re not repeating the contents of it.

oh, that&apos;s better, I copied this from compileGetExecutable, I&apos;ll update both places.

&gt;&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:255
&gt;&gt; +        return asString(jsMakeNontrivialString(globalObject, &quot;function &quot;, function-&gt;nameString(), &quot;() {\n    [native code]\n}&quot;));
&gt; 
&gt; still the same bug as before regarding OOM.

missed this one, will fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766770</commentid>
    <comment_count>15</comment_count>
      <attachid>430579</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2021-06-04 08:10:16 -0700</bug_when>
    <thetext>Created attachment 430579
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766786</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-04 08:58:21 -0700</bug_when>
    <thetext>Committed r278462 (238482@main): &lt;https://commits.webkit.org/238482@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430579.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430096</attachid>
            <date>2021-05-29 09:16:07 -0700</date>
            <delta_ts>2021-06-01 08:39:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226418-20210529091607.patch</filename>
            <type>text/plain</type>
            <size>24223</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li5mN2I3ZmY5OGQzMDc4M2Yz
NTIyZGJkN2U0ZDRmNWYzOWQ5MDBmNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMS0wNS0yOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAg
ICA8cmRhcjovLzc3ODYxODQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgaXQgYW4gaW50cmluc2ljIGFuZCBhZGQgc3VwcG9ydCBmb3IgaXQg
aW4gREZHIGFuZCBGVEwuIEkgYWRkZWQgYSBuZXcKKyAgICAgICAgbWljcm9iZW5jaG1hcmsgdGhh
dCBzcGVlZHMgdXAgYnkgPjQweDsKKworICAgICAgICBmdW5jdGlvbi10by1zdHJpbmcgICAgIDEz
MTIuMDM4NSstNDIuNjk0NyAgICBeICAgICAzMS43MDE1Ky0zLjY1NjggICAgICAgIF4gZGVmaW5p
dGVseSA0MS4zODczeCBmYXN0ZXIKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFeGVjdXRhYmxlVG9TdHJpbmcpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVFeGVjdXRhYmxlVG9TdHJpbmcpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJh
c2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFkZENvbXBpbGF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZyk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2lj
LmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9J
bnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOgorCiAyMDIx
LTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFVu
Y2hlY2tlZExvY2sgZXZlbiBsZXNzIGluIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
aW5kZXggNDkzZjM2OGU1ZWVlMGRjZGEzNmVlYmM2NzEzMTk2ZmIxYjBmNGUxMS4uM2U4MTRhMTc4
MTU2YTU0MTBmNDNkODRlNTgzZDc5ZjAwMjQwNTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAt
Mjg1NSw2ICsyODU1LDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgRXhlY3V0YWJsZVRvU3RyaW5nOgorICAgICAgICBzZXRGb3JO
b2RlKG5vZGUsIG1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CiAgICAgICAgIEpTVmFsdWUgcmFk
aXhWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWU7CiAgICAgICAgIGlmIChy
YWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGNjZTc4MmMxZTNjNzgwOTVh
YTRmNTc1ZjAxZDJmNjU1YjQzMWJmMjIuLjg1ZGY3NmM5MzY1ODIwYTk2Y2ZkYmRmNTc1OTdjYjlj
ZGY1NjhjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC0zNzQwLDYgKzM3NDAsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMK
ICNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nSW50cmlu
c2ljOiB7CisgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgICAgIE5v
ZGUqIGZ1bmN0aW9uID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cygwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgTm9kZSogZXhlY3V0YWJsZSA9IGFk
ZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgZnVuY3Rpb24pOworICAgICAgICAgICAgTm9kZSogcmVz
dWx0Tm9kZSA9IGFkZFRvR3JhcGgoRXhlY3V0YWJsZVRvU3RyaW5nLCBleGVjdXRhYmxlKTsKKyAg
ICAgICAgICAgIHNldFJlc3VsdChyZXN1bHROb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApp
bmRleCBkY2E2YzRhZjI5YTkzNTFlMDVmZmMyZmYyMTFhNTVhNmVmOTVlMjAyLi5iYmY4ZDc5ZTI5
ZjhmMmNmYWIwM2FkZDg0NTMzYzFmYjc5ODNiZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTgxOCw2ICsxODE4LDEwIEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBjYXNlIEV4ZWN1dGFibGVUb1N0cmlu
ZzoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CisgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIFN1cGVyU2FtcGxlckJlZ2lu
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDI5ZjM4OGFmY2Qz
ODc1MzhhZjdlNDQ0MmFkMGVmZDZmZDNkNWI4MTIuLmJlMGZmNWFhYjRiYTU3YjEzYzQzMjczNmY3
MWQ2YWMyYjYxNjhkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
QEAgLTQyMCw2ICs0MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oVG9QcmltaXRpdmUsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhUb1Byb3BlcnR5S2V5LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oVG9TdHJpbmcsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhFeGVjdXRhYmxlVG9TdHJpbmcsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhUb051bWJlciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKFRvTnVtZXJpYywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKFRvT2JqZWN0LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDI4MTMxN2EzYzUzMGUwOTBhMDMwMmJlOWM4OGNkN2I3NWNiMzQ5YWEuLjQyOWZkZmVhNGZk
MWQ2ZWZkMWZiYmM2OWQxZGViMTFmMmUzODAzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNzMsNiArMjczLDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBib29sIGlnbm8KICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAg
ICAgY2FzZSBUb1N0cmluZzoKKyAgICBjYXNlIEV4ZWN1dGFibGVUb1N0cmluZzoKICAgICBjYXNl
IE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKICAgICBjYXNlIFN0ckNhdDoK
ICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzNmOTExNGVhZjg4M2NlZWY5Y2Ew
M2I4NGYxNmVlNjQ0ZTZkMjhmOC4uZjdmZDYzMzA5ZjFlMTk2OTIyYjJhMGU5YWM1MzVlZDBiYzJl
MGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTEwNTE0LDYgKzEwNTE0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5vZGUqCiAg
ICAgfQogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRXhlY3V0YWJsZVRvU3RyaW5n
KE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZXhlY3V0YWJsZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
ZXhlY3V0YWJsZSk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhl
eGVjdXRhYmxlLmdwcigpLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQXNTdHJpbmcoKSks
IHJlc3VsdC5ncHIoKSk7CisgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChyZXN1bHQuZ3ByKCkpLCBub2RlLCBtX2ppdC5icmFuY2hJZkVtcHR5
KHJlc3VsdC5ncHIoKSkpOworICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKK30K
Kwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudChOb2RlKiBub2RlKQogewogICAgIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUyZTFl
OGNkNTJhMDQ4NmU2MTBjNWM0OTBjM2JhMGE5MTdkYzg5ZjMuLmMzNzQxYjgyZjc0NDhmZDc4NWE0
NTU4M2EyZjRjNWZmMDgxOTViZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTEyMjcsNiArMTIyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGVtaXRTd2l0Y2goTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxs
U3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YoTm9kZSopOworICAgIHZvaWQgY29tcGls
ZUV4ZWN1dGFibGVUb1N0cmluZyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXgoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZh
bGlkUmFkaXhDb25zdGFudChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdX
aXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IGI1N2MzN2FhMDVkZDQ5MDkxYzdmYTM2NTBmOGJiZmY3NTIzN2Y2MzkuLjA0M2I1NWZiZTVhMzY3
NDE5N2NhZGFiNTE0Nzg4NWM4NGYyZDQyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzIwNSw2ICszMjA1LDEw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2Yobm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRXhlY3V0YWJsZVRvU3RyaW5nOgor
ICAgICAgICBjb21waWxlRXhlY3V0YWJsZVRvU3RyaW5nKG5vZGUpOworICAgICAgICBicmVhazsK
ICAgICAgICAgCiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6IHsKICAgICAgICAgY29tcGlsZU5l
d1N0cmluZ09iamVjdChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI5MTE4YjYyZTg3ZDk3MGFjNTQ2MWY2M2JkM2Mz
ODBmYjhiMDEyNjAuLjM0YTJlNWVhODQ1MjAyYTVmNWU5ZmFjYzdlNjFhNGYyMWE1M2M5N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtMzc5MCw2ICszNzkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JP
clN0cmluZ1ZhbHVlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2Ug
RXhlY3V0YWJsZVRvU3RyaW5nOgorICAgICAgICBjb21waWxlRXhlY3V0YWJsZVRvU3RyaW5nKG5v
ZGUpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6
IHsKICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09iamVjdChub2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXgg
YjA2ODg0YjUyOGQyNWZkZWRkNDZmODM5MTg0OTk0MjkyMjEzNjQ2ZS4uODc4MzhjOWVhMjk0ZDhi
NWY4NjYyZTZjN2Q1MDFiNmQ0M2Q1YzZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTc3LDYgKzc3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50
c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwK
ICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWFwcGVkQXJndW1lbnRzLCBEaXJlY3RBcmd1bWVu
dHM6Om9mZnNldE9mTWFwcGVkQXJndW1lbnRzKCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVu
dHNfbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9m
TW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1
dGFibGVfYXNTdHJpbmcsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZBc1N0cmluZygpKSBc
CiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0
aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3Byb3Rv
dHlwZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgp
ICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlByb3RvdHlw
ZSgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
aW5kZXggNGY2ZTAzN2NiMTFjNTI0YjkxMTEzOWUwNGM5ZjA1ZTZjNGRkYjg3MC4uZTI4YjBjMzBl
NWM2MjQyODVmYzY5ZTgwNDYwNWRjNzljMWMyYzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjE3LDYgKzIxNyw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVG9OdW1iZXI6
CiAgICAgY2FzZSBUb051bWVyaWM6CiAgICAgY2FzZSBUb1N0cmluZzoKKyAgICBjYXNlIEV4ZWN1
dGFibGVUb1N0cmluZzoKICAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNhc2UgQ2FsbE9iamVjdENv
bnN0cnVjdG9yOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDgxNjdmYTNkMDUyYzEw
YmRmMWI2ZjY0OTBjZTM1OTA3ZGFkOGJmMzUuLjZiNWRjZDg3ZWY1NzhmZmE2MzgzYWMyNTQ2NzUy
YzE2ZjM5ZmY0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKQEAgLTExOTYsNiArMTE5Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3Ry
aW5nVmFsdWVPZjoKICAgICAgICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFeGVjdXRhYmxlVG9TdHJpbmc6CisgICAgICAgICAgICBjb21waWxlRXhlY3V0YWJsZVRvU3Ry
aW5nKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZToKICAg
ICAgICAgICAgIGNvbXBpbGVUb1ByaW1pdGl2ZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04
MjIwLDYgKzgyMjMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlRXhlY3V0YWJsZVRvU3RyaW5nKCkKKyAgICB7Cisg
ICAgICAgIExWYWx1ZSBjZWxsID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgTFZhbHVlIGFzU3RyaW5nID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkZ1bmN0aW9u
RXhlY3V0YWJsZV9hc1N0cmluZyk7CisgICAgICAgIHNwZWN1bGF0ZSgKKyAgICAgICAgICAgIEJh
ZFR5cGUsIGpzVmFsdWVWYWx1ZShhc1N0cmluZyksIG1fbm9kZSwKKyAgICAgICAgICAgIG1fb3V0
LmlzTnVsbChhc1N0cmluZykpOworICAgICAgICBzZXRKU1ZhbHVlKGFzU3RyaW5nKTsKKyAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlVG9QcmltaXRpdmUoKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4
IDE4NmZiMjRmYWJhMGM0NmNlYmUwMjdlYTU2YzA3MmE3NWM5Y2FjYjguLjUyODg2MmJjZTZiZTg4
MzQ1NTE0MGNiN2M0NTBkOTk0NjQxYjE1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzcsNiArNzcsNyBAQCB2
b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBW
aXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fY29kZUJs
b2NrRm9yQ2FsbCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRF
eGVjdXRhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzU3RyaW5nKTsK
ICAgICBpZiAoUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS5nZXQo
KSkgewogICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9T
dHJ1Y3R1cmUpOwogICAgICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9IHJhcmVEYXRh
LT5tX3RlbXBsYXRlT2JqZWN0TWFwLmdldCgpKSB7CkBAIC0xMTYsNiArMTE3LDYxIEBAIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURh
dGFTbG93KCkKICAgICByZXR1cm4gKm1fcmFyZURhdGE7CiB9CiAKK0pTVmFsdWUgRnVuY3Rpb25F
eGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIEFTU0VSVCghbV9hc1N0cmlu
Zyk7CisgICAgaWYgKGlzQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBjbGFz
c1NvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpKTsKKworICAgIFN0cmluZyBmdW5jdGlvbkhlYWRl
cjsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJm
dW5jdGlvbiogIjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Tm9ybWFsRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFt
TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGU6CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZToKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jR2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
RnVuY3Rpb25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1
bmN0aW9uQm9keU1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uICI7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25N
b2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2Rl
OgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3lu
YyBmdW5jdGlvbiAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3lu
YyAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dl
bmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0g
ImFzeW5jIGZ1bmN0aW9uKiAiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJpbmdW
aWV3IHNyYyA9IHNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAorICAgICAgICBwYXJhbWV0
ZXJzU3RhcnRPZmZzZXQoKSwKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBzb3Vy
Y2UoKS5sZW5ndGgoKSk7CisKKyAgICByZXR1cm4ganNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9i
YWxPYmplY3QsIGZ1bmN0aW9uSGVhZGVyLCBuYW1lKCkuc3RyaW5nKCksIHNyYyk7Cit9CisKIHZv
aWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpvdmVycmlkZUluZm8oY29uc3QgRnVuY3Rpb25PdmVycmlk
ZUluZm8mIG92ZXJyaWRlSW5mbykKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZVJhcmVE
YXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhl
Y3V0YWJsZS5oCmluZGV4IGJhZGNiNzg1MGZiNmY5MzY1NTZjZTQ5YzI2MTYwMmM1OTU5ZDRmZGEu
LjgyYTk3MGViNDkzNzg4YTY2ZTMyYzU0ZmNjNGQ3YzZlNzcwMmRiNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0yODUs
NiArMjg1LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
Vk0mKTsKIAorICAgIEpTU3RyaW5nKiB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCopOworCisgICAg
c3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZygpCisgICAgeworICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9hc1N0cmluZyk7
CisgICAgfQorCisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24pOwpAQCAtMzE0LDYgKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgfQogICAgIFJhcmVEYXRhJiBl
bnN1cmVSYXJlRGF0YVNsb3coKTsKIAorICAgIEpTVmFsdWUgdG9TdHJpbmdTbG93KEpTR2xvYmFs
T2JqZWN0Kik7CisKICAgICAvLyBGSVhNRTogV2UgY2FuIG1lcmdlIHJhcmVEYXRhIHBvaW50ZXIg
YW5kIHRvcC1sZXZlbCBleGVjdXRhYmxlIHBvaW50ZXIuIEZpcnN0IHRpbWUsIHNldHRpbmcgcGFy
ZW50LgogICAgIC8vIElmIFJhcmVEYXRhIGlzIHJlcXVpcmVkLCBtYXRlcmlhbGl6ZSBSYXJlRGF0
YSwgc3dhcCBpdCwgYW5kIHN0b3JlIHRvcC1sZXZlbCBleGVjdXRhYmxlIHBvaW50ZXIgaW5zaWRl
IFJhcmVEYXRhLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTc2MjUKQEAgLTMyNCw2ICszMzQsNyBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKICAgICBJ
bmZlcnJlZFZhbHVlPEpTRnVuY3Rpb24+IG1fc2luZ2xldG9uOwogICAgIEJveDxJbmxpbmVXYXRj
aHBvaW50U2V0PiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7CisgICAgV3JpdGVCYXJyaWVyPEpTU3Ry
aW5nPiBtX2FzU3RyaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVz
LmgKaW5kZXggNDUyOTljMzM2Zjg1ZmMyMjM1OWJiZmQ3NGM2OTVmZmVmNzNhNzRiNi4uM2RiN2Qw
NDg0NWY1MjM3ZjFhMTExNDY2MWE3YTUwZDQwYTFmMjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaApA
QCAtMzUsNSArMzUsMTMgQEAgaW5saW5lIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgbV9zaW5nbGV0b24uZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkodm0pOwogfQogCitKU1N0cmluZyogRnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdldFZNKGds
b2JhbE9iamVjdCk7CisgICAgaWYgKCFtX2FzU3RyaW5nKQorICAgICAgICBtX2FzU3RyaW5nLnNl
dCh2bSwgdGhpcywgYXNTdHJpbmcodG9TdHJpbmdTbG93KGdsb2JhbE9iamVjdCkpKTsKKyAgICBy
ZXR1cm4gbV9hc1N0cmluZy5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApp
bmRleCAxNGYzNzNhOGZhMDNhZGJiZjZkZmNiZWM4MTJhMjAzMDg5ODg2YmFjLi41MjQwZmI0ZWU2
MjIzZDhiYWZmMGZhMGYzODMwMzYxODIxNDgxMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC01NCw4ICs1NCw3IEBA
IHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQogCiB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRp
ZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2Fs
bEZ1bmN0aW9uLCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGhhc0lu
c3RhbmNlU3ltYm9sRnVuY3Rpb24pCiB7Ci0gICAgSlNGdW5jdGlvbiogdG9TdHJpbmdGdW5jdGlv
biA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZy5zdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7Ci0gICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5n
LCB0b1N0cmluZ0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU3RyaW5nUHVi
bGljTmFtZSgpLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgRnVuY3Rpb25Ub1N0cmluZ0ludHJp
bnNpYyk7CiAKICAgICAqYXBwbHlGdW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUFwcGx5Q29kZUdl
bmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKICAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVy
YXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKQEAgLTg1LDU0ICs4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250
cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZt
KSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKIAogICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7Ci0gICAgICAg
IGlmIChleGVjdXRhYmxlLT5pc0NsYXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCBleGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpLnZpZXcoKS50b1N0
cmluZygpKSk7Ci0KLSAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyOwotICAgICAgICBzd2l0
Y2ggKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlv
bkhlYWRlciA9ICJmdW5jdGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6Ci0g
ICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKLSAgICAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0dlbmVyYXRvckJvZHlNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNG
dW5jdGlvbkJvZHlNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlv
biAiOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFycm93RnVuY3Rpb25Nb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NG
aWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gIiI7Ci0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNG
dW5jdGlvbk1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1v
ZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiAiOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyAiOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlv
bkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0KLSAgICAgICAgU3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5w
cm92aWRlcigpLT5nZXRSYW5nZSgKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNT
dGFydE9mZnNldCgpLAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zm
c2V0KCkgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7Ci0gICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmco
Z2xvYmFsT2JqZWN0LCBmdW5jdGlvbkhlYWRlciwgZnVuY3Rpb24tPm5hbWUodm0pLCBzb3VyY2Up
KSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWN1dGFibGUtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAKICAgICBpZiAodGhp
c1ZhbHVlLmluaGVyaXRzPEludGVybmFsRnVuY3Rpb24+KHZtKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggMTQ0YmEzY2M2YTY3ZmRiNjBiYzQ4
MDFkZTNiYTdiYjJmZDA2NjQyOS4uOTg3NThjNmFlYmQ1YTkxMGI3MzA5YjAzYWM4NTU3YjY2ODRm
OGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2lj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCkBA
IC0yNzUsNiArMjc1LDggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50
cmluc2ljKQogICAgICAgICByZXR1cm4gIkF0b21pY3NYb3JJbnRyaW5zaWMiOwogICAgIGNhc2Ug
UGFyc2VJbnRJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiUGFyc2VJbnRJbnRyaW5zaWMiOwor
ICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYzoKKyAgICAgICAgcmV0dXJuICJGdW5j
dGlvblRvU3RyaW5nSW50cmluc2ljIjsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5z
aWM6CiAgICAgICAgIHJldHVybiAiVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYyI7CiAgICAgY2Fz
ZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKaW5kZXggN2E5Y2Q3MDI5ZTM4ZmRjM2YxMTA1MDkxNGQ0ZGQyMGI1
M2RhMzUyYS4uOWJlODUyYzk2YmM3MDkwYmYyOTc2YmViOTFmZGE2OTU0Y2U3ODE0NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTE1Myw2ICsxNTMsNyBA
QCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIEF0b21pY3NXYWl0SW50cmluc2ljLAog
ICAgIEF0b21pY3NYb3JJbnRyaW5zaWMsCiAgICAgUGFyc2VJbnRJbnRyaW5zaWMsCisgICAgRnVu
Y3Rpb25Ub1N0cmluZ0ludHJpbnNpYywKIAogICAgIC8vIEdldHRlciBpbnRyaW5zaWNzLgogICAg
IFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCmluZGV4IGU3YWYwZDczODhhMWE3MjMyNjRjOTc5MDZj
YWQ4NTUxM2E4ZGRhNzguLmJjNzM5OGRiZDU3OWY5ODJkYjI4YjliOGFlOTBmYjBhMjhkOTM0OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDcwNjEyNWEyMmQ0MmNkY2EyMzg2MmYyNTc4NTA2ZmNlOTJmZGEzMWEuLmE2NmVlYWI4YjU4MjMz
NjE3MDMwNmQxYmMxNmNmNmRiYzFlYTU3YjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDUtMjkgIFRh
ZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgRnVu
Y3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY0MTgKKyAgICAgICAgPHJkYXI6Ly83Nzg2MTg0Nj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2ht
YXJrcy9mdW5jdGlvbi10by1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZik6CisgICAgICAg
IChDKToKKyAgICAgICAgKEMucHJvdG90eXBlLm1ldGhvZDEpOgorICAgICAgICAoQy5wcm90b3R5
cGUubWV0aG9kMik6CisgICAgICAgICh0ZXN0KToKKwogMjAyMS0wNS0yMiAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBFcmdvbm9taWMg
QnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmZkMDFjNjdhYmM0MjA2
YTUwZjRjY2NlZTgxM2RlZWZjOGNmNjBmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvZnVuY3Rpb24tdG8tc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjkgQEAKK2Z1bmN0
aW9uIGYoeCwgeSwgeikgeworICAgIC8vIGNvbW1lbnQgaW4gdGhlIGJvZHkKKyAgICBjb25zdCB3
ID0gNDI7CisgICAgcmV0dXJuIHcgKyB4ICsgeSArIHo7CisKK30KKworY2xhc3MgQyB7CisgICAg
Ly8gY29tbWVudCBpbiB0aGUgY2xhc3MKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICB9CisKKyAg
ICBtZXRob2QxKCkgeworICAgICAgICByZXR1cm4gInNvbWUgc3RyaW5nIjsKKyAgICB9CisKKyAg
ICBtZXRob2QyKCkgeworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIGYudG9TdHJpbmcoKTsKKyAgICBDLnRvU3RyaW5nKCk7Cit9Citub0lubGlu
ZSh0ZXN0KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTc7ICsraSkKKyAgICB0ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430265</attachid>
            <date>2021-06-01 08:39:09 -0700</date>
            <delta_ts>2021-06-03 09:07:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226418-20210601083908.patch</filename>
            <type>text/plain</type>
            <size>28792</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li5mN2I3ZmY5OGQzMDc4M2Yz
NTIyZGJkN2U0ZDRmNWYzOWQ5MDBmNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMS0wNS0yOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAg
ICA8cmRhcjovLzc3ODYxODQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgaXQgYW4gaW50cmluc2ljIGFuZCBhZGQgc3VwcG9ydCBmb3IgaXQg
aW4gREZHIGFuZCBGVEwuIEkgYWRkZWQgYSBuZXcKKyAgICAgICAgbWljcm9iZW5jaG1hcmsgdGhh
dCBzcGVlZHMgdXAgYnkgPjQweDsKKworICAgICAgICBmdW5jdGlvbi10by1zdHJpbmcgICAgIDEz
MTIuMDM4NSstNDIuNjk0NyAgICBeICAgICAzMS43MDE1Ky0zLjY1NjggICAgICAgIF4gZGVmaW5p
dGVseSA0MS4zODczeCBmYXN0ZXIKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFeGVjdXRhYmxlVG9TdHJpbmcpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVFeGVjdXRhYmxlVG9TdHJpbmcpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyRGF0YWJh
c2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFkZENvbXBpbGF0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZyk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAgICAoSlND
OjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2lj
LmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9J
bnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOgorCiAyMDIx
LTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFVu
Y2hlY2tlZExvY2sgZXZlbiBsZXNzIGluIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
aW5kZXggNDkzZjM2OGU1ZWVlMGRjZGEzNmVlYmM2NzEzMTk2ZmIxYjBmNGUxMS4uM2U4MTRhMTc4
MTU2YTU0MTBmNDNkODRlNTgzZDc5ZjAwMjQwNTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAt
Mjg1NSw2ICsyODU1LDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAorICAgIGNhc2UgRXhlY3V0YWJsZVRvU3RyaW5nOgorICAgICAgICBzZXRGb3JO
b2RlKG5vZGUsIG1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CiAgICAgICAgIEpTVmFsdWUgcmFk
aXhWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWU7CiAgICAgICAgIGlmIChy
YWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGNjZTc4MmMxZTNjNzgwOTVh
YTRmNTc1ZjAxZDJmNjU1YjQzMWJmMjIuLjg1ZGY3NmM5MzY1ODIwYTk2Y2ZkYmRmNTc1OTdjYjlj
ZGY1NjhjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC0zNzQwLDYgKzM3NDAsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMK
ICNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nSW50cmlu
c2ljOiB7CisgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5o
YXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgICAgIE5v
ZGUqIGZ1bmN0aW9uID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhp
cygwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgTm9kZSogZXhlY3V0YWJsZSA9IGFk
ZFRvR3JhcGgoR2V0RXhlY3V0YWJsZSwgZnVuY3Rpb24pOworICAgICAgICAgICAgTm9kZSogcmVz
dWx0Tm9kZSA9IGFkZFRvR3JhcGgoRXhlY3V0YWJsZVRvU3RyaW5nLCBleGVjdXRhYmxlKTsKKyAg
ICAgICAgICAgIHNldFJlc3VsdChyZXN1bHROb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApp
bmRleCBkY2E2YzRhZjI5YTkzNTFlMDVmZmMyZmYyMTFhNTVhNmVmOTVlMjAyLi5iYmY4ZDc5ZTI5
ZjhmMmNmYWIwM2FkZDg0NTMzYzFmYjc5ODNiZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTgxOCw2ICsxODE4LDEwIEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25z
dCBXcml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBjYXNlIEV4ZWN1dGFibGVUb1N0cmlu
ZzoKKyAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CisgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIFN1cGVyU2FtcGxlckJlZ2lu
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDAyODRhN2UzMDRh
MDA2ZTEwZTFhMzM2NjAxZWJhN2JiYWY3OTMyYmUuLmU5MDkzYjY2NzIwNDJlYzI0ODZmZmYxMjZm
NWQxOTA1ZDJhYzE3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
QEAgLTExMiw2ICsxMTIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVy
ZUltbWVkaWF0ZToKICAgICBjYXNlIEdldEV4ZWN1dGFibGU6CisgICAgY2FzZSBFeGVjdXRhYmxl
VG9TdHJpbmc6CiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBDaGVja0pTQ2FzdDoK
ICAgICBjYXNlIENoZWNrTm90SlNDYXN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggZjY1ZjliNTc5MGU2NmUxZDkyZTIxMmM3YTFlNTU0ZTg5ZDhh
OGJlYS4uYzA3YjI3ODNjZDMxN2QxZjI1NTg1NGVhM2ZkYTIxMmJhOTMwYjc3MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTczLDYgKzE5NzMs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAg
Y2FzZSBFeGVjdXRhYmxlVG9TdHJpbmc6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAg
ICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOiB7CiAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAppbmRleCAyOWYzODhhZmNkMzg3NTM4YWY3ZTQ0NDJhZDBlZmQ2ZmQzZDViODEyLi5iZTBmZjVh
YWI0YmE1N2IxM2M0MzI3MzZmNzFkNmFjMmI2MTY4ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCkBAIC00MjAsNiArNDIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKFRvUHJpbWl0aXZlLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVG9Qcm9wZXJ0eUtleSwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFRvU3RyaW5nLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRXhlY3V0YWJsZVRvU3RyaW5nLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oVG9OdW1iZXIsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUb051bWVyaWMsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUb09iamVjdCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggZTMzNjk4ZThlNjUxYTM2OTMxNDliYzA4MjljNTYzOWJiZGM1
MzE5My4uOTJlZTRiMWM0ZDI5MmFkMDg5YTgwZmVkYWNkN2Y0ZGQxYTBhNGQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNTYwLDYgKzI1NjAs
MTUgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nV2l0
aFZhbGlkUmFkaXgsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4obnVtYmVyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOwogfQogCitKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhlY3V0YWJsZVRvU3RyaW5nLCBKU1N0cmluZyos
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9u
UHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcmV0
dXJuIGV4ZWN1dGFibGUtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7Cit9CisKIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcsIEpTU3RyaW5nKiwg
KFZNKiB2bVBvaW50ZXIsIGludDMyX3QgY2hhcmFjdGVyKSkKIHsKICAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA1
MmNkYmU4MjY2MTZlYmM0YTkyZDA1OGIwMDFlYzM4ZWZjMmEzZDQ4Li42MDhmZjI5ZDkwN2Y5YjI0
N2M4MDY5ODI1YTUyNDExYjg5YTgzOWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IERhdGVJbnN0YW5jZTsKK2NsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTQmlnSW50
Owogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOwogCkBAIC0yNDYsNiArMjQ3LDcgQEAg
SlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Eb3VibGVUb1N0cmluZywgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIGRvdWIKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0Kiwg
aW50MzJfdCwgaW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25J
bnQ1MlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBpbnQ2
NF90LCBpbnQzMl90KSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRvdWJs
ZVRvU3RyaW5nV2l0aFZhbGlkUmFkaXgsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUs
IGludDMyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhlY3V0YWJs
ZVRvU3RyaW5nLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCosIEZ1bmN0aW9uRXhlY3V0YWJs
ZSopKTsKIAogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ob3JtYWxpemVNYXBL
ZXlIZWFwQmlnSW50LCBFbmNvZGVkSlNWYWx1ZSwgKFZNKiwgSlNCaWdJbnQqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk1hcEhhc2gsIFVDUFVTdHJpY3RJbnQzMiwgKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUgaW5wdXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKaW5kZXggNWI1ODBiYjU0M2MxOWRjYWJmODdhMDRmYzc4MzI3NTgyNDA4MWRjMS4uMGMxMTQ4
YjZkY2IzMGZlNzAzZWNkNzdkODM5NDJmNWU2Y2NjZDkwNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAKQEAgLTExNTgsNiArMTE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hh
ckF0OgogICAgICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBU
b1N0cmluZzoKKyAgICAgICAgY2FzZSBFeGVjdXRhYmxlVG9TdHJpbmc6CiAgICAgICAgIGNhc2Ug
TnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRo
VmFsaWRSYWRpeENvbnN0YW50OgogICAgICAgICBjYXNlIE1ha2VSb3BlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyODEzMTdhM2M1MzBlMDkw
YTAzMDJiZTljODhjZDdiNzVjYjM0OWFhLi40MjlmZGZlYTRmZDFkNmVmZDFmYmJjNjlkMWRlYjEx
ZjJlMzgwM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaApAQCAtMjczLDYgKzI3Myw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2Fz
ZSBUb0Jvb2xlYW46CiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgIGNhc2UgVG9TdHJpbmc6Cisg
ICAgY2FzZSBFeGVjdXRhYmxlVG9TdHJpbmc6CiAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgY2FzZSBTdHJDYXQ6CiAgICAgY2FzZSBDYWxsU3RyaW5n
Q29uc3RydWN0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDczZjkxMTRlYWY4ODNjZWVmOWNhMDNiODRmMTZlZTY0NGU2ZDI4Zjgu
LmI3NTk0ZGQ4M2FlMDI1ZDg5ZWJhYWJmNjk5OGE4MThkZGVkNGQ2M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDUxNCw2ICsx
MDUxNCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJp
bmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgIH0KIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUV4ZWN1dGFibGVUb1N0cmluZyhOb2RlKiBub2RlKQoreworICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGV4ZWN1dGFibGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhleGVjdXRhYmxlLmdwcigpLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9m
ZnNldE9mQXNTdHJpbmcoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
c2xvd1BhdGggPSBtX2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdC5ncHIoKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25FeGVj
dXRhYmxlVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGV4ZWN1dGFibGUuZ3ByKCkpKTsKKyAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxp
ZFJhZGl4Q29uc3RhbnQoTm9kZSogbm9kZSkKIHsKICAgICBjb21waWxlTnVtYmVyVG9TdHJpbmdX
aXRoVmFsaWRSYWRpeENvbnN0YW50KG5vZGUsIG5vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1
MmUxZThjZDUyYTA0ODZlNjEwYzVjNDkwYzNiYTBhOTE3ZGM4OWYzLi5jMzc0MWI4MmY3NDQ4ZmQ3
ODVhNDU1ODNhMmY0YzVmZjA4MTk1YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjI3LDYgKzEyMjcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbWl0U3dpdGNoKE5vZGUqKTsKICAgICAKICAgICB2b2lkIGNvbXBpbGVUb1N0cmluZ09y
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVFeGVjdXRhYmxlVG9TdHJpbmcoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRv
U3RyaW5nV2l0aFJhZGl4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3Ry
aW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApp
bmRleCBiNTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li4wNDNiNTVmYmU1
YTM2NzQxOTdjYWRhYjUxNDc4ODVjODRmMmQ0Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyMDUsNiArMzIw
NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEV4ZWN1dGFibGVUb1N0cmlu
ZzoKKyAgICAgICAgY29tcGlsZUV4ZWN1dGFibGVUb1N0cmluZyhub2RlKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgICAgIAogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OiB7CiAgICAgICAgIGNvbXBp
bGVOZXdTdHJpbmdPYmplY3Qobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiOTExOGI2MmU4N2Q5NzBhYzU0NjFmNjNi
ZDNjMzgwZmI4YjAxMjYwLi4zNGEyZTVlYTg0NTIwMmE1ZjVlOWZhY2M3ZTYxYTRmMjFhNTNjOTdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTM3OTAsNiArMzc5MCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yT3JTdHJpbmdWYWx1ZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBj
YXNlIEV4ZWN1dGFibGVUb1N0cmluZzoKKyAgICAgICAgY29tcGlsZUV4ZWN1dGFibGVUb1N0cmlu
Zyhub2RlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdTdHJpbmdPYmplY3Qobm9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmlu
ZGV4IGIwNjg4NGI1MjhkMjVmZGVkZDQ2ZjgzOTE4NDk5NDI5MjIxMzY0NmUuLjg3ODM4YzllYTI5
NGQ4YjVmODY2MmU2YzdkNTAxYjZkNDNkNWM2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC03Nyw2ICs3Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1
bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgp
KSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJn
dW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJn
dW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZz
ZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25F
eGVjdXRhYmxlX2FzU3RyaW5nLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQXNTdHJpbmco
KSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVE
YXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpIFwKICAgICBtYWNybyhG
dW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9w
cm90b3R5cGUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZQcm90
b3R5cGUoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IDRmNmUwMzdjYjExYzUyNGI5MTExMzllMDRjOWYwNWU2YzRkZGI4NzAuLmUyOGIw
YzMwZTVjNjI0Mjg1ZmM2OWU4MDQ2MDVkYzc5YzFjMmMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTIxNyw2ICsyMTcsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFRvTnVt
YmVyOgogICAgIGNhc2UgVG9OdW1lcmljOgogICAgIGNhc2UgVG9TdHJpbmc6CisgICAgY2FzZSBF
eGVjdXRhYmxlVG9TdHJpbmc6CiAgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIENhbGxPYmpl
Y3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1
MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2RhZDhiZjM1Li44OGUyNjE2MjIzZWJlOTViMTMzMzY1NjRh
OTMyOGQ5MjUxOGU0MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC0xMTk2LDYgKzExOTYsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IFN0cmluZ1ZhbHVlT2Y6CiAgICAgICAgICAgICBjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdD
b25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRXhlY3V0YWJsZVRvU3RyaW5nOgorICAgICAgICAgICAgY29tcGlsZUV4ZWN1dGFibGVU
b1N0cmluZygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6
CiAgICAgICAgICAgICBjb21waWxlVG9QcmltaXRpdmUoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtODIyMCw2ICs4MjIzLDI3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KKworICAgIHZvaWQgY29tcGlsZUV4ZWN1dGFibGVUb1N0cmluZygpCisgICAg
eworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBMVmFsdWUgZXhlY3V0YWJsZSA9IGxvd0Nl
bGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSBhc1N0cmluZyA9IG1fb3V0Lmxv
YWRQdHIoZXhlY3V0YWJsZSwgbV9oZWFwcy5GdW5jdGlvbkV4ZWN1dGFibGVfYXNTdHJpbmcpOwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFzU3RyaW5n
KTsKKworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChhc1N0cmluZyksIHVzdWFs
bHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uRXhlY3V0YWJsZVRvU3RyaW5nLCB3ZWFrUG9pbnRlcihnbG9i
YWxPYmplY3QpLCBleGVjdXRhYmxlKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQp
KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlVG9QcmltaXRpdmUoKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUu
Y3BwCmluZGV4IDE4NmZiMjRmYWJhMGM0NmNlYmUwMjdlYTU2YzA3MmE3NWM5Y2FjYjguLjUyODg2
MmJjZTZiZTg4MzQ1NTE0MGNiN2M0NTBkOTk0NjQxYjE1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzcsNiAr
NzcsNyBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxs
KiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fY29kZUJsb2NrRm9yQ2FsbCk7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
dW5saW5rZWRFeGVjdXRhYmxlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2Fz
U3RyaW5nKTsKICAgICBpZiAoUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+bV9yYXJl
RGF0YS5nZXQoKSkgewogICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+bV9jYWNoZWRQ
b2x5UHJvdG9TdHJ1Y3R1cmUpOwogICAgICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAqIG1hcCA9
IHJhcmVEYXRhLT5tX3RlbXBsYXRlT2JqZWN0TWFwLmdldCgpKSB7CkBAIC0xMTYsNiArMTE3LDYx
IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5z
dXJlUmFyZURhdGFTbG93KCkKICAgICByZXR1cm4gKm1fcmFyZURhdGE7CiB9CiAKK0pTVmFsdWUg
RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIEFTU0VSVCgh
bV9hc1N0cmluZyk7CisgICAgaWYgKGlzQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5n
KHZtLCBjbGFzc1NvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpKTsKKworICAgIFN0cmluZyBmdW5j
dGlvbkhlYWRlcjsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhl
YWRlciA9ICJmdW5jdGlvbiogIjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0
aW9uICI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXJNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0dlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CisgICAgICAgIGZ1bmN0aW9u
SGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uKiAiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBTdHJpbmdWaWV3IHNyYyA9IHNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAorICAgICAg
ICBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0
KCkgKyBzb3VyY2UoKS5sZW5ndGgoKSk7CisKKyAgICByZXR1cm4ganNNYWtlTm9udHJpdmlhbFN0
cmluZyhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uSGVhZGVyLCBuYW1lKCkuc3RyaW5nKCksIHNyYyk7
Cit9CisKIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpvdmVycmlkZUluZm8oY29uc3QgRnVuY3Rp
b25PdmVycmlkZUluZm8mIG92ZXJyaWRlSW5mbykKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVu
c3VyZVJhcmVEYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJhZGNiNzg1MGZiNmY5MzY1NTZjZTQ5YzI2MTYwMmM1
OTU5ZDRmZGEuLjgyYTk3MGViNDkzNzg4YTY2ZTMyYzU0ZmNjNGQ3YzZlNzcwMmRiNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5o
CkBAIC0yODUsNiArMjg1LDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoVk0mKTsKIAorICAgIEpTU3RyaW5nKiB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCop
OworCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZygpCisgICAg
eworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9h
c1N0cmluZyk7CisgICAgfQorCisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFi
bGVCYXNlOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGlu
YXJ5RnVuY3Rpb24pOwpAQCAtMzE0LDYgKzMyMiw4IEBAIHByaXZhdGU6CiAgICAgfQogICAgIFJh
cmVEYXRhJiBlbnN1cmVSYXJlRGF0YVNsb3coKTsKIAorICAgIEpTVmFsdWUgdG9TdHJpbmdTbG93
KEpTR2xvYmFsT2JqZWN0Kik7CisKICAgICAvLyBGSVhNRTogV2UgY2FuIG1lcmdlIHJhcmVEYXRh
IHBvaW50ZXIgYW5kIHRvcC1sZXZlbCBleGVjdXRhYmxlIHBvaW50ZXIuIEZpcnN0IHRpbWUsIHNl
dHRpbmcgcGFyZW50LgogICAgIC8vIElmIFJhcmVEYXRhIGlzIHJlcXVpcmVkLCBtYXRlcmlhbGl6
ZSBSYXJlRGF0YSwgc3dhcCBpdCwgYW5kIHN0b3JlIHRvcC1sZXZlbCBleGVjdXRhYmxlIHBvaW50
ZXIgaW5zaWRlIFJhcmVEYXRhLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTc2MjUKQEAgLTMyNCw2ICszMzQsNyBAQCBwcml2YXRlOgogICAgIFdyaXRl
QmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dDsKICAgICBJbmZlcnJlZFZhbHVlPEpTRnVuY3Rpb24+IG1fc2luZ2xldG9uOwogICAgIEJveDxJ
bmxpbmVXYXRjaHBvaW50U2V0PiBtX3BvbHlQcm90b1dhdGNocG9pbnQ7CisgICAgV3JpdGVCYXJy
aWVyPEpTU3RyaW5nPiBtX2FzU3RyaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGVJbmxpbmVzLmgKaW5kZXggNDUyOTljMzM2Zjg1ZmMyMjM1OWJiZmQ3NGM2OTVmZmVmNzNhNzRi
Ni4uM2RiN2QwNDg0NWY1MjM3ZjFhMTExNDY2MWE3YTUwZDQwYTFmMjNkYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlu
bGluZXMuaApAQCAtMzUsNSArMzUsMTMgQEAgaW5saW5lIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxl
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYgdm0pCiAgICAgbV9zaW5nbGV0b24uZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkodm0pOwogfQogCitKU1N0cmluZyogRnVuY3Rpb25FeGVjdXRhYmxl
Ojp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9
IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKCFtX2FzU3RyaW5nKQorICAgICAgICBtX2Fz
U3RyaW5nLnNldCh2bSwgdGhpcywgYXNTdHJpbmcodG9TdHJpbmdTbG93KGdsb2JhbE9iamVjdCkp
KTsKKyAgICByZXR1cm4gbV9hc1N0cmluZy5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcAppbmRleCAxNGYzNzNhOGZhMDNhZGJiZjZkZmNiZWM4MTJhMjAzMDg5ODg2YmFjLi41
MjQwZmI0ZWU2MjIzZDhiYWZmMGZhMGYzODMwMzYxODIxNDgxMzhmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC01NCw4
ICs1NCw3IEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlv
blByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0
aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0aW9uKiogYXBwbHlGdW5jdGlvbiwgSlNGdW5jdGlv
bioqIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pCiB7Ci0gICAgSlNGdW5jdGlvbiogdG9TdHJp
bmdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5w
cm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmlu
Zyk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnRvU3RyaW5nLCB0b1N0cmluZ0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJ
T05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRv
U3RyaW5nUHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCwgRnVuY3Rpb25Ub1N0
cmluZ0ludHJpbnNpYyk7CiAKICAgICAqYXBwbHlGdW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5G
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUFw
cGx5Q29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICAqY2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxs
Q29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pKTsKQEAgLTg1LDU0ICs4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
CiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9u
LT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKIAogICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7
Ci0gICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0NsYXNzKCkpCi0gICAgICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBleGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpLnZp
ZXcoKS50b1N0cmluZygpKSk7Ci0KLSAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyOwotICAg
ICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgotICAgICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAg
ICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6Ci0gICAgICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6U2V0dGVyTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhv
ZE1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKLSAgICAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlOgotICAgICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOgotICAgICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9
ICJmdW5jdGlvbiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVy
ID0gIiI7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y01ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlv
biAiOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJh
c3luYyAiOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKLSAgICAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAg
ICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5z
b3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZSgKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBh
cmFtZXRlcnNTdGFydE9mZnNldCgpLAotICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVy
c1N0YXJ0T2Zmc2V0KCkgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7Ci0gICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZp
YWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkhlYWRlciwgZnVuY3Rpb24tPm5hbWUodm0p
LCBzb3VyY2UpKSk7CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWN1dGFibGUtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCkpKTsKICAgICB9CiAKICAg
ICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEludGVybmFsRnVuY3Rpb24+KHZtKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKaW5kZXggMTQ0YmEzY2M2YTY3
ZmRiNjBiYzQ4MDFkZTNiYTdiYjJmZDA2NjQyOS4uOTg3NThjNmFlYmQ1YTkxMGI3MzA5YjAzYWM4
NTU3YjY2ODRmOGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwCkBAIC0yNzUsNiArMjc1LDggQEAgY29uc3QgY2hhciogaW50cmluc2ljTmFtZShJbnRy
aW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkF0b21pY3NYb3JJbnRyaW5zaWMiOwog
ICAgIGNhc2UgUGFyc2VJbnRJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiUGFyc2VJbnRJbnRy
aW5zaWMiOworICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYzoKKyAgICAgICAgcmV0
dXJuICJGdW5jdGlvblRvU3RyaW5nSW50cmluc2ljIjsKICAgICBjYXNlIFR5cGVkQXJyYXlMZW5n
dGhJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiVHlwZWRBcnJheUxlbmd0aEludHJpbnNpYyI7
CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggN2E5Y2Q3MDI5ZTM4ZmRjM2YxMTA1MDkx
NGQ0ZGQyMGI1M2RhMzUyYS4uOWJlODUyYzk2YmM3MDkwYmYyOTc2YmViOTFmZGE2OTU0Y2U3ODE0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTE1Myw2
ICsxNTMsNyBAQCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3QgewogICAgIEF0b21pY3NXYWl0SW50
cmluc2ljLAogICAgIEF0b21pY3NYb3JJbnRyaW5zaWMsCiAgICAgUGFyc2VJbnRJbnRyaW5zaWMs
CisgICAgRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYywKIAogICAgIC8vIEdldHRlciBpbnRyaW5z
aWNzLgogICAgIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCmluZGV4IGU3YWYwZDczODhhMWE3MjMy
NjRjOTc5MDZjYWQ4NTUxM2E4ZGRhNzguLmJjNzM5OGRiZDU3OWY5ODJkYjI4YjliOGFlOTBmYjBh
MjhkOTM0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
SW5saW5lcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDcwNjEyNWEyMmQ0MmNkY2EyMzg2MmYyNTc4NTA2ZmNlOTJmZGEzMWEuLmE2NmVl
YWI4YjU4MjMzNjE3MDMwNmQxYmMxNmNmNmRiYzFlYTU3YjggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEt
MDUtMjkgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgT3B0
aW1pemUgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MTgKKyAgICAgICAgPHJkYXI6Ly83Nzg2MTg0
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1p
Y3JvYmVuY2htYXJrcy9mdW5jdGlvbi10by1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZik6
CisgICAgICAgIChDKToKKyAgICAgICAgKEMucHJvdG90eXBlLm1ldGhvZDEpOgorICAgICAgICAo
Qy5wcm90b3R5cGUubWV0aG9kMik6CisgICAgICAgICh0ZXN0KToKKwogMjAyMS0wNS0yMiAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBF
cmdvbm9taWMgQnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyBiL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmZkMDFj
NjdhYmM0MjA2YTUwZjRjY2NlZTgxM2RlZWZjOGNmNjBmCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tdG8tc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjkg
QEAKK2Z1bmN0aW9uIGYoeCwgeSwgeikgeworICAgIC8vIGNvbW1lbnQgaW4gdGhlIGJvZHkKKyAg
ICBjb25zdCB3ID0gNDI7CisgICAgcmV0dXJuIHcgKyB4ICsgeSArIHo7CisKK30KKworY2xhc3Mg
QyB7CisgICAgLy8gY29tbWVudCBpbiB0aGUgY2xhc3MKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAg
ICB9CisKKyAgICBtZXRob2QxKCkgeworICAgICAgICByZXR1cm4gInNvbWUgc3RyaW5nIjsKKyAg
ICB9CisKKyAgICBtZXRob2QyKCkgeworICAgICAgICByZXR1cm4gNDI7CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0KCkgeworICAgIGYudG9TdHJpbmcoKTsKKyAgICBDLnRvU3RyaW5nKCk7Cit9
Citub0lubGluZSh0ZXN0KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTc7ICsraSkKKyAgICB0
ZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430475</attachid>
            <date>2021-06-03 09:07:12 -0700</date>
            <delta_ts>2021-06-03 16:35:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226418-20210603090711.patch</filename>
            <type>text/plain</type>
            <size>42258</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li42ZTI5OWIzYTJjYThmM2Q4
ZjI3ZDkzYWIyMzgzOTM1YmY2YmUxMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAyMS0wNS0yOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAg
ICA8cmRhcjovLzc3ODYxODQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENhY2hlIHRoZSB0b1N0cmluZyByZXN1bHQgaW4gdGhlIGV4ZWN1dGFibGUg
d2hlbmV2ZXIgcG9zc2libGUsIG1ha2UgaXQgYW4gaW50cmluc2ljIGFuZCBhZGQgc3VwcG9ydAor
ICAgICAgICBmb3IgaXQgaW4gREZHIGFuZCBGVEwuIEkgYWRkZWQgYSBuZXcgbWljcm9iZW5jaG1h
cmsgdGhhdCBzcGVlZHMgdXAgYnkgPjQweDoKKworICAgICAgICBmdW5jdGlvbi10by1zdHJpbmcg
ICAgIDEzMTIuMDM4NSstNDIuNjk0NyAgICBeICAgICAzMS43MDE1Ky0zLjY1NjggICAgICAgIF4g
ZGVmaW5pdGVseSA0MS4zODczeCBmYXN0ZXIKKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6
OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFeGVjdXRhYmxlVG9TdHJp
bmcpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0
bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVFeGVjdXRhYmxlVG9TdHJpbmcpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVy
RGF0YWJhc2UuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6RGF0YWJhc2U6OmFkZENvbXBp
bGF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgICogcnVu
dGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhl
Y3V0YWJsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0
cmluZyk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50
cmluc2ljLmNwcDoKKyAgICAgICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVu
dGltZS9JbnRyaW5zaWMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOgor
CiAyMDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VXNlIFVuY2hlY2tlZExvY2sgZXZlbiBsZXNzIGluIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggNDkzZjM2OGU1ZWVlMGRjZGEzNmVlYmM2NzEzMTk2ZmIxYjBmNGUxMS4uZjUy
ZDg0NGNkNTFkNzBiNjEzY2NmZDU4MWI0YmNlY2MzMGFmZGY3OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhhc2hNYXBJbXBsSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRlcmZseS5oIgogI2luY2x1ZGUgIkpTSW50ZXJuYWxQcm9t
aXNlLmgiCkBAIC0yODU1LDYgKzI4NTYsMjQgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOiB7CisgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVl
KCk7CisgICAgICAgIEpTU3RyaW5nKiBhc1N0cmluZyA9IG51bGxwdHI7CisgICAgICAgIGlmICh2
YWx1ZSkgeworICAgICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0
PEpTRnVuY3Rpb24qPihtX3ZtLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uLT5p
bmhlcml0czxKU0JvdW5kRnVuY3Rpb24+KG1fdm0pKSB7CisgICAgICAgICAgICAgICAgaWYgKGZ1
bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAgICAgICAgICBhc1N0cmluZyA9
IHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKS0+
YXNTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBhc1N0cmluZyA9IGZ1bmN0aW9uLT5qc0V4ZWN1
dGFibGUoKS0+YXNTdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBp
ZiAoYXNTdHJpbmcpCisgICAgICAgICAgICBzZXRDb25zdGFudChub2RlLCAqbV9ncmFwaC5mcmVl
emUoYXNTdHJpbmcpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0Rm9yTm9kZShub2Rl
LCBtX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6IHsKICAgICAgICAgSlNWYWx1ZSByYWRp
eFZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV92YWx1ZTsKICAgICAgICAgaWYgKHJh
ZGl4VmFsdWUgJiYgcmFkaXhWYWx1ZS5pc0ludDMyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggY2NlNzgyYzFlM2M3ODA5NWFh
NGY1NzVmMDFkMmY2NTViNDMxYmYyMi4uOTM5OTQ3OTZhZmRkOTAyNDI2YjRjZmE0ODUxOTdhNDEy
MjVhYjE4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKQEAgLTM3NDAsNiArMzc0MCwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwog
I2VuZGlmCiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmdJbnRyaW5z
aWM6IHsKKyAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworICAgICAgICAgICAgTm9k
ZSogZnVuY3Rpb24gPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlz
KDAsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBOb2RlKiByZXN1bHROb2RlID0gYWRk
VG9HcmFwaChGdW5jdGlvblRvU3RyaW5nLCBmdW5jdGlvbik7CisgICAgICAgICAgICBzZXRSZXN1
bHQocmVzdWx0Tm9kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZGNhNmM0YWYyOWE5
MzUxZTA1ZmZjMmZmMjExYTU1YTZlZjk1ZTIwMi4uYTg3YThiODQ1MTgxODQ5ZTkyNjYyYmJiMTcy
N2U1N2NhNjZiODNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTE4MTgsNiArMTgxOCwxMSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorCisgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOgorICAgICAgICByZWFkKEpT
Q2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOworICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CiAgICAgY2FzZSBT
dXBlclNhbXBsZXJCZWdpbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCAwMjg0YTdlMzA0YTAwNmUxMGUxYTMzNjYwMWViYTdiYmFmNzkzMmJlLi42MThlZGFlNDEy
ZTVkZDJiYWY5MTBkY2ZmMzgxYTFiN2EyMWIwNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCkBAIC0yODksNiArMjg5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgRGlyZWN0VGFpbENhbGw6CiAgICAgY2FzZSBEaXJl
Y3RUYWlsQ2FsbElubGluZWRDYWxsZXI6CiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CisgICAgY2Fz
ZSBGdW5jdGlvblRvU3RyaW5nOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRE
aXJlY3Q6CiAgICAgY2FzZSBHZXRCeUlkRGlyZWN0Rmx1c2g6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBmNjVmOWI1NzkwZTY2ZTFkOTJlMjEyYzdh
MWU1NTRlODlkOGE4YmVhLi4zNzNlNTYwZTIyNzIwZDViM2FiOWZhOTQ1ZWFmODRmN2M5OTEzODJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE5
NzMsNiArMTk3MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8
RnVuY3Rpb25Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBTZXRQcml2YXRlQnJhbmQ6IHsKICAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCmluZGV4IDI5ZjM4OGFmY2QzODc1MzhhZjdlNDQ0MmFkMGVmZDZmZDNkNWI4MTIu
LmZkYmU0ZjU4YjdjMzZjODMzNjkzMzNhMjE5MjMxNzdjZmFiNWZhZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQyOCw2ICs0MjgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2FsbE51bWJlckNvbnN0cnVjdG9yLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXgsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKEZ1bmN0aW9uVG9TdHJpbmcsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE1h
a2VSb3BlLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhJbkJ5VmFsLCBOb2RlUmVzdWx0Qm9v
bGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhJbkJ5SWQsIE5vZGVSZXN1bHRC
b29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZTMzNjk4ZThlNjUxYTM2OTMxNDliYzA4MjljNTYzOWJi
ZGM1MzE5My4uOWEyZWJmZjFkNGU5NGJhMTA2ODczZGFlZGZjMDQ5YjY1YTA0NGI0NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yNTYwLDYgKzI1
NjAsMTUgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5n
V2l0aFZhbGlkUmFkaXgsIGNoYXIqLCAoSlNHbG9iYWwKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4obnVtYmVyVG9TdHJpbmcodm0sIHZhbHVlLCByYWRpeCkpOwogfQogCitKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRnVuY3Rpb25Ub1N0cmluZywgSlNTdHJpbmcq
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNGdW5jdGlvbiogZnVuY3Rpb24pKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CisgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOworCisgICAgcmV0dXJuIGZ1bmN0
aW9uLT50b1N0cmluZyhnbG9iYWxPYmplY3QpOworfQorCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5nLCBKU1N0cmluZyosIChWTSogdm1Qb2lu
dGVyLCBpbnQzMl90IGNoYXJhY3RlcikpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNTJjZGJlODI2NjE2
ZWJjNGE5MmQwNThiMDAxZWMzOGVmYzJhM2Q0OC4uOTljMzkyNTFkMWY1OTljY2I2MTIwMWIwNWVi
MDVmMDFhYmFkZWIxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKQEAgLTI0Niw2ICsyNDYsNyBAQCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkRvdWJsZVRvU3RyaW5nLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgZG91YgogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgsIGNo
YXIqLCAoSlNHbG9iYWxPYmplY3QqLCBpbnQzMl90LCBpbnQzMl90KSk7CiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgY2hhcios
IChKU0dsb2JhbE9iamVjdCosIGludDY0X3QsIGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgY2hhciosIChK
U0dsb2JhbE9iamVjdCosIGRvdWJsZSwgaW50MzJfdCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25GdW5jdGlvblRvU3RyaW5nLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVj
dCosIEpTRnVuY3Rpb24qKSk7CiAKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
Tm9ybWFsaXplTWFwS2V5SGVhcEJpZ0ludCwgRW5jb2RlZEpTVmFsdWUsIChWTSosIEpTQmlnSW50
KikpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25NYXBIYXNoLCBVQ1BVU3Ry
aWN0SW50MzIsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIGlucHV0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDViNTgwYmI1NDNjMTlkY2FiZjg3YTA0ZmM3ODMyNzU4MjQw
ODFkYzEuLjhmN2UzNTk1MTdmYzBhZjhjZmJlM2U1NTg2OWM5ODc0MTlmOTEyYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC0xMTU4LDYgKzExNTgsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFN0cmluZ0NoYXJBdDoKICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAg
ICAgICAgIGNhc2UgVG9TdHJpbmc6CisgICAgICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZzoKICAg
ICAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDoKICAgICAgICAgY2FzZSBOdW1iZXJU
b1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgICAgIGNhc2UgTWFrZVJvcGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDI4MTMx
N2EzYzUzMGUwOTBhMDMwMmJlOWM4OGNkN2I3NWNiMzQ5YWEuLmRiMjIxOWExNDc3NjQ3OGNiMGU5
YTg3YjA5YjFkNWQ3YzNjYjEyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCkBAIC0yNzMsNiArMjczLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBib29sIGln
bm8KICAgICBjYXNlIFRvQm9vbGVhbjoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAgICAgY2FzZSBU
b1N0cmluZzoKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CiAgICAgY2FzZSBOdW1iZXJUb1N0
cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgY2FzZSBTdHJDYXQ6CiAgICAgY2FzZSBD
YWxsU3RyaW5nQ29uc3RydWN0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDczZjkxMTRlYWY4ODNjZWVmOWNhMDNiODRmMTZlZTY0
NGU2ZDI4ZjguLjcxZWEwZTE5NGY0OTk3NTAyMDViNDcwOWZlMmVjMGEyYWYyNWE2NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNB
c3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisj
aW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0ltbXV0YWJsZUJ1dHRl
cmZseS5oIgpAQCAtMTA1MTQsNiArMTA1MTUsNDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YoTm9kZSoK
ICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIGdldEV4ZWN1dGFibGUoSklUQ29tcGlsZXImIGppdCwg
R1BSUmVnIGZ1bmN0aW9uR1BSLCBHUFJSZWcgcmVzdWx0R1BSKQoreworICAgIGppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGZ1bmN0aW9uR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4
ZWN1dGFibGVPclJhcmVEYXRhKCkpLCByZXN1bHRHUFIpOworICAgIGF1dG8gaGFzRXhlY3V0YWJs
ZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgcmVzdWx0R1BSLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpOworICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCByZXN1
bHRHUFIpOworICAgIGhhc0V4ZWN1dGFibGUubGluaygmaml0KTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBmdW5jdGlvbih0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BS
VGVtcG9yYXJ5IGV4ZWN1dGFibGUodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOworCisgICAgc3BlY3VsYXRl
Q2VsbFR5cGUobm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uLmdwcigpLCBTcGVjRnVuY3Rpb24sIEpT
RnVuY3Rpb25UeXBlKTsKKworICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGZ1bmN0
aW9uLmdwcigpLCByZXN1bHQuZ3ByKCksIGV4ZWN1dGFibGUuZ3ByKCkpOworICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6OmNsYXNz
SW5mb09mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1Q
dHIoSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpKSk7CisKKyAgICBnZXRFeGVjdXRhYmxlKG1faml0
LCBmdW5jdGlvbi5ncHIoKSwgZXhlY3V0YWJsZS5ncHIoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNOYXRpdmVFeGVjdXRhYmxlID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6RXF1YWws
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGV4ZWN1dGFibGUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9U
eXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTmF0aXZlRXhlY3V0YWJsZVR5cGUpKTsKKworICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5ncHIoKSwg
RnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByZXN1bHQuZ3ByKCkpOwor
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgcmVzdWx0LmdwcigpKSk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZBc1N0cmlu
Z0luUmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgY29u
dGludWF0aW9uID0gbV9qaXQuanVtcCgpOworCisgICAgaXNOYXRpdmVFeGVjdXRhYmxlLmxpbmso
Jm1faml0KTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGV4ZWN1
dGFibGUuZ3ByKCksIE5hdGl2ZUV4ZWN1dGFibGU6Om9mZnNldE9mQXNTdHJpbmcoKSksIHJlc3Vs
dC5ncHIoKSk7CisKKyAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOworICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0
LmdwcigpKSk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25GdW5jdGlvblRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jdGlvbi5ncHIoKSkpOworCisgICAgY2VsbFJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqIG5vZGUpCiB7CiAgICAg
Y29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChub2RlLCBub2RlLT52
YWxpZFJhZGl4Q29uc3RhbnQoKSk7CkBAIC0xMzI2MywxNCArMTMzMDQsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0RXhlY3V0YWJsZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7Ci0gICAgR1BSUmVnIGZ1bmN0
aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb25HUFIs
IFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJs
ZU9yUmFyZURhdGEoKSksIHJlc3VsdEdQUik7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gbV9q
aXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHJlc3VsdEdQUiwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBtX2ppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCByZXN1bHRH
UFIpOwotICAgIGhhc0V4ZWN1dGFibGUubGluaygmbV9qaXQpOwotICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVu
Y3Rpb24uZ3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworICAgIGdldEV4ZWN1
dGFibGUobV9qaXQsIGZ1bmN0aW9uLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEdldHRlcihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUyZTFlOGNkNTJhMDQ4NmU2MTBjNWM0OTBjM2JhMGE5MTdk
Yzg5ZjMuLjJlMjVkYjg0MDI3YmZjOTQwOGUwN2FjM2JmZWY5YjFlY2MxMjZiNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyMjcsNiAr
MTIyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRTd2l0Y2goTm9kZSopOwogICAgIAogICAg
IHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVl
T2YoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFJhZGl4KE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50
MzJfdCByYWRpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBiNTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZm
NzUyMzdmNjM5Li41NmRhNDQ5ZTEyNGYyMjU3YmFiYzUzNDI1M2ZkNmYwMmQzNmU0NmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKQEAgLTMyMDUsNiArMzIwNSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yT3JTdHJpbmdWYWx1ZU9mKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBj
YXNlIEZ1bmN0aW9uVG9TdHJpbmc6CisgICAgICAgIGNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKG5v
ZGUpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6
IHsKICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09iamVjdChub2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGI5MTE4YjYy
ZTg3ZDk3MGFjNTQ2MWY2M2JkM2MzODBmYjhiMDEyNjAuLjhlMTRlOTRmNWVlNDllMTdmYzhjMDUy
ZDk0ZTRjMDg5ODcyYzViOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzc5MCw2ICszNzkwLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVRvU3RyaW5nT3JD
YWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKworICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZzoKKyAgICAgICAgY29tcGlsZUZ1
bmN0aW9uVG9TdHJpbmcobm9kZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNl
IE5ld1N0cmluZ09iamVjdDogewogICAgICAgICBjb21waWxlTmV3U3RyaW5nT2JqZWN0KG5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaAppbmRleCBiMDY4ODRiNTI4ZDI1ZmRlZGQ0NmY4MzkxODQ5OTQyOTIyMTM2NDZl
Li4yZTJmMDdkZmM3ZThjMTNkZGIwZWRkNWEyZDA3YTVkODcyZTE3OTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApA
QCAtNzcsNiArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9m
TWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVu
dHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFy
Z3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1h
Y3JvKEZ1bmN0aW9uRXhlY3V0YWJsZV9yYXJlRGF0YSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZz
ZXRPZlJhcmVEYXRhKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9h
c1N0cmluZywgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgp
KSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAogICAgIG1hY3JvKEZ1
bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5
cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3By
b3RvdHlwZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlByb3Rv
dHlwZSgpKSBcCkBAIC0xMTksNiArMTIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcjIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0
T2ZGaWJlcjIoKSkgXAogICAgIG1hY3JvKEpTU2NvcGVfbmV4dCwgSlNTY29wZTo6b2Zmc2V0T2ZO
ZXh0KCkpIFwKICAgICBtYWNybyhKU1N5bWJvbFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5
bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpIFwKKyAgICBtYWNybyhOYXRp
dmVFeGVjdXRhYmxlX2FzU3RyaW5nLCBOYXRpdmVFeGVjdXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5n
KCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3RfcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0
YWJsZUZsYWcsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZSZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdy
aXRhYmxlRmxhZygpKSBcCiAgICAgbWFjcm8oUmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgUmVnRXhw
T2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgpKSBcCiAgICAgbWFjcm8oU2hhZG93Q2hpY2tlbl9Q
YWNrZXRfY2FsbGVlLCBPQkpFQ1RfT0ZGU0VUT0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBjYWxs
ZWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
aW5kZXggNGY2ZTAzN2NiMTFjNTI0YjkxMTEzOWUwNGM5ZjA1ZTZjNGRkYjg3MC4uNDdlOWI3ZDMy
ZjczZmViZTk4OTVmNmI3NGFjMThkNTM5NDczN2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjE3LDYgKzIxNyw3IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVG9OdW1iZXI6
CiAgICAgY2FzZSBUb051bWVyaWM6CiAgICAgY2FzZSBUb1N0cmluZzoKKyAgICBjYXNlIEZ1bmN0
aW9uVG9TdHJpbmc6CiAgICAgY2FzZSBUb09iamVjdDoKICAgICBjYXNlIENhbGxPYmplY3RDb25z
dHJ1Y3RvcjoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1MmMxMGJk
ZjFiNmY2NDkwY2UzNTkwN2RhZDhiZjM1Li44NGQwOGViNWYwZTMxZWFkMDUwMWYwNTk5ODc1Yjkx
OTAxZjE3NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9y
RnVuY3Rpb24uaCIKQEAgLTExOTYsNiArMTE5Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
U3RyaW5nVmFsdWVPZjoKICAgICAgICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBGdW5jdGlvblRvU3RyaW5nOgorICAgICAgICAgICAgY29tcGlsZUZ1bmN0aW9uVG9TdHJp
bmcoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRvUHJpbWl0aXZlOgogICAg
ICAgICAgICAgY29tcGlsZVRvUHJpbWl0aXZlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM3
NzQsMTQgKzM3NzgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgc3BlY3VsYXRlKEJhZElkZW50LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lm5vdEVxdWFsKHN0cmluZ0ltcGwsIG1fb3V0LmNvbnN0
SW50UHRyKHVpZCkpKTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkK
KyAgICBMVmFsdWUgZ2V0RXhlY3V0YWJsZShMVmFsdWUgZnVuY3Rpb24pCiAgICAgewogICAgICAg
ICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBM
QmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExWYWx1
ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRlRnVu
Y3Rpb24obV9ub2RlLT5jaGlsZDEoKSwgY2VsbCk7CiAKLSAgICAgICAgTFZhbHVlIHJhcmVEYXRh
VGFncyA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGVP
clJhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVlIHJhcmVEYXRhVGFncyA9IG1fb3V0LmxvYWRQdHIo
ZnVuY3Rpb24sIG1faGVhcHMuSlNGdW5jdGlvbl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CiAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RFeGVjdXRhYmxlID0gbV9vdXQuYW5jaG9yKHJhcmVEYXRh
VGFncyk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC50ZXN0SXNaZXJvUHRyKHJhcmVEYXRh
VGFncywgbV9vdXQuY29uc3RJbnRQdHIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKSwgdW5zdXJl
KGNvbnRpbnVhdGlvbiksIHVuc3VyZShoYXNSYXJlRGF0YSkpOwogCkBAIC0zNzkxLDcgKzM3OTMs
MTUgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRK
U1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0RXhlY3V0YWJsZSwgc2xvd0V4ZWN1
dGFibGUpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0RXhl
Y3V0YWJsZSwgc2xvd0V4ZWN1dGFibGUpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEV4
ZWN1dGFibGUoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgpLCBj
ZWxsKTsKKyAgICAgICAgTFZhbHVlIGV4ZWN1dGFibGUgPSBnZXRFeGVjdXRhYmxlKGNlbGwpOwor
ICAgICAgICBzZXRKU1ZhbHVlKGV4ZWN1dGFibGUpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNv
bXBpbGVBcnJheWlmeSgpCkBAIC04MjIwLDYgKzgyMzAsNTUgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlRnVuY3Rpb25U
b1N0cmluZygpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExC
YXNpY0Jsb2NrIG5vdEJvdW5kRnVuY3Rpb25DYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgZnVuY3Rpb25FeGVjdXRhYmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIG5hdGl2ZUV4ZWN1dGFibGVDYXNlID0gbV9vdXQubmV3Qmxv
Y2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgdGVzdFB0ciA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAg
ICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIExWYWx1
ZSBmdW5jdGlvbiA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0
ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGZ1bmN0aW9uKTsKKworICAgICAgICBMVmFsdWUg
c3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShmdW5jdGlvbik7CisgICAgICAgIExWYWx1ZSBjbGFz
c0luZm8gPSBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJ
bmZvKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGNsYXNzSW5mbywgbV9vdXQu
Y29uc3RJbnRQdHIoSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpKSwgcmFyZWx5KHNsb3dDYXNlKSwg
dXN1YWxseShub3RCb3VuZEZ1bmN0aW9uQ2FzZSkpOworCisKKyAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RCb3VuZEZ1bmN0aW9uQ2FzZSwgbmF0aXZlRXhl
Y3V0YWJsZUNhc2UpOworICAgICAgICBMVmFsdWUgZXhlY3V0YWJsZSA9IGdldEV4ZWN1dGFibGUo
ZnVuY3Rpb24pOworICAgICAgICBtX291dC5icmFuY2goaXNUeXBlKGV4ZWN1dGFibGUsIE5hdGl2
ZUV4ZWN1dGFibGVUeXBlKSwgdW5zdXJlKG5hdGl2ZUV4ZWN1dGFibGVDYXNlKSwgdW5zdXJlKGZ1
bmN0aW9uRXhlY3V0YWJsZUNhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhuYXRpdmVF
eGVjdXRhYmxlQ2FzZSwgZnVuY3Rpb25FeGVjdXRhYmxlQ2FzZSk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIG5hdGl2ZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkUHRyKGV4ZWN1dGFi
bGUsIG1faGVhcHMuTmF0aXZlRXhlY3V0YWJsZV9hc1N0cmluZykpOworICAgICAgICBtX291dC5q
dW1wKHRlc3RQdHIpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGZ1bmN0aW9uRXhlY3V0YWJs
ZUNhc2UsIHRlc3RQdHIpOworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5sb2FkUHRy
KGV4ZWN1dGFibGUsIG1faGVhcHMuRnVuY3Rpb25FeGVjdXRhYmxlX3JhcmVEYXRhKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwocmFyZURhdGEpLCB1c3VhbGx5KGhhc1JhcmVE
YXRhKSwgcmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFy
ZURhdGEsIHNsb3dDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZnVuY3Rpb25SZXN1bHQg
PSBtX291dC5hbmNob3IobV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvbkV4
ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZykpOworICAgICAgICBtX291dC5qdW1wKHRlc3RQdHIp
OworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHRlc3RQdHIsIGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIExWYWx1ZSBhc1N0cmluZyA9IG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBuYXRpdmVSZXN1
bHQsIGZ1bmN0aW9uUmVzdWx0KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihhc1N0cmluZyk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RO
dWxsKGFzU3RyaW5nKSwgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRl
clR5cGUoKSwgb3BlcmF0aW9uRnVuY3Rpb25Ub1N0cmluZywgd2Vha1BvaW50ZXIoZ2xvYmFsT2Jq
ZWN0KSwgZnVuY3Rpb24pKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBz
ZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0
KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVRvUHJpbWl0aXZlKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcAppbmRleCAxODZmYjI0ZmFiYTBjNDZjZWJlMDI3ZWE1NmMwNzJhNzVjOWNhY2I4Li4xMGI0
NzRkOWI0MTAwZGQ2YjdjMjQwOWI0OTkxOTNjOGQwYjkwNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTc5LDYg
Kzc5LDcgQEAgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2Vs
bCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX3VubGlua2VkRXhlY3V0YWJsZSk7CiAgICAgaWYgKFJhcmVEYXRhKiByYXJlRGF0YSA9IHRo
aXNPYmplY3QtPm1fcmFyZURhdGEuZ2V0KCkpIHsKICAgICAgICAgdmlzaXRvci5hcHBlbmQocmFy
ZURhdGEtPm1fY2FjaGVkUG9seVByb3RvU3RydWN0dXJlKTsKKyAgICAgICAgdmlzaXRvci5hcHBl
bmQocmFyZURhdGEtPm1fYXNTdHJpbmcpOwogICAgICAgICBpZiAoVGVtcGxhdGVPYmplY3RNYXAq
IG1hcCA9IHJhcmVEYXRhLT5tX3RlbXBsYXRlT2JqZWN0TWFwLmdldCgpKSB7CiAgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVjdC0+Y2VsbExvY2soKSB9OwogICAgICAgICAgICAg
Zm9yIChhdXRvJiBlbnRyeSA6ICptYXApCkBAIC0xMTYsNiArMTE3LDgyIEBAIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6UmFyZURhdGEmIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93
KCkKICAgICByZXR1cm4gKm1fcmFyZURhdGE7CiB9CiAKK0pTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1
dGFibGU6OnRvU3RyaW5nU2xvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgQVNTRVJUKG1fcmFyZURhdGEgJiYg
IW1fcmFyZURhdGEtPm1fYXNTdHJpbmcpOworCisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CisKKyAgICBKU1N0cmluZyogYXNTdHJpbmcgPSBbJl0geworICAgICAgICBpZiAo
aXNCdWlsdGluRnVuY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiA6OkpTQzo6YXNTdHJpbmco
anNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5jdGlvbiAiLCBuYW1lKCku
c3RyaW5nKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKKworICAgICAgICBpZiAo
aXNDbGFzcygpKQorICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBjbGFzc1NvdXJjZSgp
LnZpZXcoKS50b1N0cmluZygpKTsKKworICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXI7Cisg
ICAgICAgIHN3aXRjaCAocGFyc2VNb2RlKCkpIHsKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKKyAgICAgICAgICAgIGZ1bmN0aW9u
SGVhZGVyID0gImZ1bmN0aW9uKiAiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKKyAgICAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdldHRlck1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpT
ZXR0ZXJNb2RlOgorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKKyAg
ICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgorICAgICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZToKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
R2VuZXJhdG9yQm9keU1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1
bmN0aW9uQm9keU1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93
RnVuY3Rpb25Cb2R5TW9kZToKKyAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9u
ICI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGU6CisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXJNb2RlOgorICAgICAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1
bmN0aW9uTW9kZToKKyAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9k
ZToKKyAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uICI7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uTW9kZToKKyAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jICI7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNH
ZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgorICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKKyAgICAgICAgICAgIGZ1bmN0aW9u
SGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uKiAiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBTdHJpbmdWaWV3IHNyYyA9IHNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJh
bmdlKAorICAgICAgICAgICAgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCisgICAgICAgICAgICBw
YXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSArIHNvdXJjZSgpLmxlbmd0aCgpKTsKKworICAgICAgICBT
dHJpbmcgbmFtZSA9IHRoaXMtPm5hbWUoKS5zdHJpbmcoKTsKKyAgICAgICAgaWYgKG5hbWUgPT0g
dm0ucHJvcGVydHlOYW1lcy0+c3RhckRlZmF1bHRQcml2YXRlTmFtZS5zdHJpbmcoKSkKKyAgICAg
ICAgICAgIG5hbWUgPSBlbXB0eVN0cmluZygpOworICAgICAgICByZXR1cm4gOjpKU0M6OmFzU3Ry
aW5nKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCBmdW5jdGlvbkhlYWRlciwg
bmFtZSwgc3JjKSk7CisgICAgfSgpOworCisgICAgaWYgKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgdGhyb3dTY29wZS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGNhdGNo
U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgIG1fcmFyZURhdGEtPm1fYXNTdHJpbmcuc2V0
KHZtLCB0aGlzLCBhc1N0cmluZyk7CisgICAgcmV0dXJuIGFzU3RyaW5nOworfQorCiB2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6b3ZlcnJpZGVJbmZvKGNvbnN0IEZ1bmN0aW9uT3ZlcnJpZGVJbmZv
JiBvdmVycmlkZUluZm8pCiB7CiAgICAgYXV0byYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFi
bGUuaAppbmRleCBiYWRjYjc4NTBmYjZmOTM2NTU2Y2U0OWMyNjE2MDJjNTk1OWQ0ZmRhLi4wZjQ1
NTk4ZWUyMjJiYzExZjA3NTlmOTI2OWU2YTIyYzZmODBiNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMjg1LDYgKzI4
NSwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7
CiAKKyAgICBKU1N0cmluZyogdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU1N0cmlu
ZyogYXNTdHJpbmcoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcmFyZURhdGEpCisgICAg
ICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9hc1N0cmluZy5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0
T2ZSYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUs
IG1fcmFyZURhdGEpOyB9CisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0
cmluZ0luUmFyZURhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEsIG1fYXNT
dHJpbmcpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24pOwpAQCAtMzA0LDYgKzMxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fdHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90ZW1wbGF0ZU9iamVjdE1hcDsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmU7CisgICAgICAgIFdy
aXRlQmFycmllcjxKU1N0cmluZz4gbV9hc1N0cmluZzsKICAgICB9OwogCiAgICAgUmFyZURhdGEm
IGVuc3VyZVJhcmVEYXRhKCkKQEAgLTMxNCw2ICszMjYsOCBAQCBwcml2YXRlOgogICAgIH0KICAg
ICBSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGFTbG93KCk7CiAKKyAgICBKU1N0cmluZyogdG9TdHJp
bmdTbG93KEpTR2xvYmFsT2JqZWN0Kik7CisKICAgICAvLyBGSVhNRTogV2UgY2FuIG1lcmdlIHJh
cmVEYXRhIHBvaW50ZXIgYW5kIHRvcC1sZXZlbCBleGVjdXRhYmxlIHBvaW50ZXIuIEZpcnN0IHRp
bWUsIHNldHRpbmcgcGFyZW50LgogICAgIC8vIElmIFJhcmVEYXRhIGlzIHJlcXVpcmVkLCBtYXRl
cmlhbGl6ZSBSYXJlRGF0YSwgc3dhcCBpdCwgYW5kIHN0b3JlIHRvcC1sZXZlbCBleGVjdXRhYmxl
IHBvaW50ZXIgaW5zaWRlIFJhcmVEYXRhLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTc2MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAppbmRleCA0NTI5OWMzMzZm
ODVmYzIyMzU5YmJmZDc0YzY5NWZmZWY3M2E3NGI2Li5jOWEwYjEyMjQwNDMzMjk3MWExNmMyOGE2
ZDE1ZjU0ZWYzZjUwZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCkBAIC0zNSw1ICszNSwxMyBAQCBp
bmxpbmUgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZN
JiB2bSkKICAgICBtX3NpbmdsZXRvbi5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSh2bSk7CiB9CiAK
K0pTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEo
KTsKKyAgICBpZiAoIXJhcmVEYXRhLm1fYXNTdHJpbmcpCisgICAgICAgIHJldHVybiB0b1N0cmlu
Z1Nsb3coZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gcmFyZURhdGEubV9hc1N0cmluZy5nZXQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCAxNGYzNzNhOGZhMDNhZGJi
ZjZkZmNiZWM4MTJhMjAzMDg5ODg2YmFjLi5kZjI1ZmMwNjlmNDdmNzRmMWVjNTk2MjljNjUzYzk1
Y2NlZmNmODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCkBAIC01NCw4ICs1NCw3IEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIEZ1
bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0aW9u
KiogYXBwbHlGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24p
CiB7Ci0gICAgSlNGdW5jdGlvbiogdG9TdHJpbmdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmco
KSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCB0b1N0cmluZ0Z1bmN0aW9uLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU3RyaW5nUHVibGljTmFtZSgpLCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMCwgRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYyk7CiAKICAgICAqYXBwbHlG
dW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGlj
TmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUFwcGx5Q29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAqY2FsbEZ1
bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05h
bWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTgxLDU4ICs4MCw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxK
U0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CiAgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1
cmVJRCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9i
amVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZl
IGNvZGVdXG59IikpKTsKLQotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7Ci0gICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0Ns
YXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBl
eGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpKSk7Ci0KLSAgICAgICAg
U3RyaW5nIGZ1bmN0aW9uSGVhZGVyOwotICAgICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVy
RnVuY3Rpb25Nb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3Jh
cHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlvbiog
IjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKLSAgICAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUFuYWx5emVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVh
dGVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6
Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlOgot
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgotICAg
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Ci0g
ICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlvbiAiOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgot
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToK
LSAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gIiI7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6Ci0gICAgICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5j
dGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6Ci0gICAg
ICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyAiOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1bmN0
aW9uTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3Jh
cHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5j
dGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5n
VmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZSgK
LSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAotICAgICAg
ICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBleGVjdXRhYmxlLT5z
b3VyY2UoKS5sZW5ndGgoKSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
bkhlYWRlciwgZnVuY3Rpb24tPm5hbWUodm0pLCBzb3VyY2UpKSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZ1bmN0aW9uLT50b1N0cmluZyhnbG9i
YWxPYmplY3QpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxJbnRlcm5h
bEZ1bmN0aW9uPih2bSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwCmluZGV4IDE0NGJhM2NjNmE2N2ZkYjYwYmM0ODAxZGUzYmE3YmIyZmQwNjY0MjkuLjk4
NzU4YzZhZWJkNWE5MTBiNzMwOWIwM2FjODU1N2I2Njg0ZjhjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMjc1LDYgKzI3NSw4IEBAIGNvbnN0
IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJu
ICJBdG9taWNzWG9ySW50cmluc2ljIjsKICAgICBjYXNlIFBhcnNlSW50SW50cmluc2ljOgogICAg
ICAgICByZXR1cm4gIlBhcnNlSW50SW50cmluc2ljIjsKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJp
bmdJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYyI7
CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIlR5
cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMiOwogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJ
bnRyaW5zaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4
IDdhOWNkNzAyOWUzOGZkYzNmMTEwNTA5MTRkNGRkMjBiNTNkYTM1MmEuLjliZTg1MmM5NmJjNzA5
MGJmMjk3NmJlYjkxZmRhNjk1NGNlNzgxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCkBAIC0xNTMsNiArMTUzLDcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50
OF90IHsKICAgICBBdG9taWNzV2FpdEludHJpbnNpYywKICAgICBBdG9taWNzWG9ySW50cmluc2lj
LAogICAgIFBhcnNlSW50SW50cmluc2ljLAorICAgIEZ1bmN0aW9uVG9TdHJpbmdJbnRyaW5zaWMs
CiAKICAgICAvLyBHZXR0ZXIgaW50cmluc2ljcy4KICAgICBUeXBlZEFycmF5TGVuZ3RoSW50cmlu
c2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRl
eCBmYTVhZWNkMTdjMWNlZmM5ZDYyOThkZDcyMjgzOWVjZjQ1ZWRmMzBiLi40YjhlOWY5YTdiYmVi
ZDM4OTc1YzViNWNhMDUzNWMwZDU1ZWI5ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMjQ3LDYgKzI0NywxOSBAQCBjb25zdCBTdHJpbmcg
SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiB2bSkKICAgICByZXR1cm4ganNF
eGVjdXRhYmxlKCktPmVjbWFOYW1lKCkuc3RyaW5nKCk7CiB9CiAKK0pTU3RyaW5nKiBKU0Z1bmN0
aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGluaGVyaXRzPEpTQm91bmRGdW5jdGlv
bj4odm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4odGhpcyk7CisgICAgICAgIHJldHVybiBhc1N0cmluZyhqc01ha2VOb250
cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lU3Ry
aW5nKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKKyAgICB9CisKKyAgICBpZiAo
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1
dGFibGUqPihleGVjdXRhYmxlKCkpLT50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgIHJldHVy
biBqc0V4ZWN1dGFibGUoKS0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKK30KKwogY29uc3QgU291
cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzSG9z
dE9yQnVpbHRpbkZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgKaW5kZXggYmNjMmU4MTBmYzZlOTY2OTM4NWQxODllNTE1MTc5YjJlYjdhYTRhYy4u
NjI1OTQ0NWU1NTNhY2ZiNDdmMDM3M2M4MDJhMjM5ZWU2MjY3OGZkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoVk0mKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBTdHJpbmcgZGlzcGxheU5hbWUoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBj
b25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJik7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaAppbmRleCBlN2FmMGQ3Mzg4YTFhNzIzMjY0
Yzk3OTA2Y2FkODU1MTNhOGRkYTc4Li5iYzczOThkYmQ1NzlmOTgyZGIyOGI5YjhhZTkwZmIwYTI4
ZDkzNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lu
bGluZXMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVj
dXRhYmxlLmNwcAppbmRleCBlOTAzOWE2ODk2NmFlY2Q2NTJmYjZkNmM3M2I5Njk3MWY2NWM4MmQ0
Li42ZjJkYjFmNTFiNzk0OWI3ZmZjY2Y3MzQ4NDBmMGI4ODdiMGM5NzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcApAQCAtOTMs
NCArOTMsMzQgQEAgQ29kZUJsb2NrSGFzaCBOYXRpdmVFeGVjdXRhYmxlOjpoYXNoRm9yKENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKICAgICByZXR1cm4gQ29kZUJsb2NrSGFzaChi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihtX2NvbnN0cnVjdG9yKSk7CiB9CiAKK0pTU3RyaW5nKiBO
YXRpdmVFeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QgKmdsb2JhbE9iamVj
dCkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworCisgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYXV0byBjYXRjaFNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU1N0cmluZyogYXNTdHJpbmcgPSA6OkpT
Qzo6YXNTdHJpbmcoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5jdGlv
biAiLCBuYW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKKworICAgIGlmIChj
YXRjaFNjb3BlLmV4Y2VwdGlvbigpKSB7CisgICAgICAgIHRocm93U2NvcGUudGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKKyAgICBtX2Fz
U3RyaW5nLnNldCh2bSwgdGhpcywgYXNTdHJpbmcpOworICAgIHJldHVybiBhc1N0cmluZzsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgTmF0aXZlRXhlY3V0YWJsZTo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIE5h
dGl2ZUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGNl
bGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXNTdHJpbmcpOworfQorCitERUZJTkVfVklTSVRfQ0hJ
TERSRU4oTmF0aXZlRXhlY3V0YWJsZSk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCmluZGV4IDc2NmM5
NmFkNDA0OTYyYmY0ZmE3M2ExOTgxYWI4NTk4NWMxNDJjNWQuLjU0YjFiMWQ5NzRkZDZiZDk2ZTcz
NmNkNjljMWFhZGNkYzk3OWRjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5hdGl2ZUV4ZWN1dGFibGUsIG1fY29uc3RydWN0b3Ip
OwogICAgIH0KIAorICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
KTsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNzYsMTQgKzc3LDI3IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSogc2lnbmF0dXJlRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQpIGNvbnN0OwogICAgIEludHJpbnNpYyBpbnRyaW5zaWMoKSBjb25zdDsKIAor
ICAgIEpTU3RyaW5nKiB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAg
IHsKKyAgICAgICAgaWYgKCFtX2FzU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIHRvU3RyaW5n
U2xvdyhnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gbV9hc1N0cmluZy5nZXQoKTsKKyAg
ICB9CisKKyAgICBKU1N0cmluZyogYXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2FzU3RyaW5n
LmdldCgpOyB9CisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZygp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOYXRpdmVFeGVjdXRhYmxlLCBtX2FzU3RyaW5nKTsg
fQorCiBwcml2YXRlOgogICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBUYWdnZWROYXRpdmVGdW5j
dGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBSZWY8SklUQ29kZT4mJiBjYWxsVGh1bmssIFJlZjxKSVRDb2RlPiYmIGNv
bnN0cnVjdFRodW5rLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCisgICAgSlNTdHJpbmcqIHRvU3Ry
aW5nU2xvdyhKU0dsb2JhbE9iamVjdCopOworCiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9m
dW5jdGlvbjsKICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2NvbnN0cnVjdG9yOwogCiAgICAg
U3RyaW5nIG1fbmFtZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fYXNTdHJpbmc7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzA2MTI1YTIyZDQyY2RjYTIzODYyZjI1Nzg1MDZmY2U5
MmZkYTMxYS4uYTY2ZWVhYjhiNTgyMzM2MTcwMzA2ZDFiYzE2Y2Y2ZGJjMWVhNTdiOCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOCBAQAorMjAyMS0wNS0yOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4K
KworICAgICAgICBPcHRpbWl6ZSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAgICA8
cmRhcjovLzc3ODYxODQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qczogQWRkZWQu
CisgICAgICAgIChmKToKKyAgICAgICAgKEMpOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9k
MSk6CisgICAgICAgIChDLnByb3RvdHlwZS5tZXRob2QyKToKKyAgICAgICAgKHRlc3QpOgorCiAy
MDIxLTA1LTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAg
ICAgICBTdXBwb3J0IEVyZ29ub21pYyBCcmFuZCBDaGVja3MgcHJvcG9zYWwgKGAjeCBpbiBvYmpg
KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tdG8tc3RyaW5n
LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tdG8tc3RyaW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg2ZmQwMWM2N2FiYzQyMDZhNTBmNGNjY2VlODEzZGVlZmM4Y2Y2MGYKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi10by1zdHJpbmcuanMK
QEAgLTAsMCArMSwyOSBAQAorZnVuY3Rpb24gZih4LCB5LCB6KSB7CisgICAgLy8gY29tbWVudCBp
biB0aGUgYm9keQorICAgIGNvbnN0IHcgPSA0MjsKKyAgICByZXR1cm4gdyArIHggKyB5ICsgejsK
KworfQorCitjbGFzcyBDIHsKKyAgICAvLyBjb21tZW50IGluIHRoZSBjbGFzcworICAgIGNvbnN0
cnVjdG9yKCkgeworICAgIH0KKworICAgIG1ldGhvZDEoKSB7CisgICAgICAgIHJldHVybiAic29t
ZSBzdHJpbmciOworICAgIH0KKworICAgIG1ldGhvZDIoKSB7CisgICAgICAgIHJldHVybiA0MjsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgZi50b1N0cmluZygpOworICAgIEMu
dG9TdHJpbmcoKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDFl
NzsgKytpKQorICAgIHRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430513</attachid>
            <date>2021-06-03 16:35:02 -0700</date>
            <delta_ts>2021-06-03 16:53:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226418-20210603163501.patch</filename>
            <type>text/plain</type>
            <size>44751</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li4yNjBiZWM3NTM0NTQ0Y2Nj
NTYyNzA1ODEwNTM4ZGRjY2I4MTZhZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NCBAQAorMjAyMS0wNi0wMyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAg
ICA8cmRhcjovLzc3ODYxODQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBjYWNoaW5nIHRvIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy4g
VGhpcyBpcyB1c2VkIGhlYXZpbHkgaW4gU3BlZWRvbWV0ZXIyLCBhbmQgcmVwZWF0ZWRseSByZWNv
bXB1dGluZyBhCisgICAgICAgIHN0cmluZyB3aGljaCBpcyBhIGNvbnN0YW50IGlzIGNvc3RseS4g
V2UgY2FjaGUgdGhlIHJlc3VsdHMgb2YgdG9TdHJpbmcgaW4gYWxsIGNhc2VzIGV4Y2VwdCBmb3Ig
Ym91bmQgZnVuY3Rpb25zLgorICAgICAgICBUbyBtYWtlIHRoaXMgd29yayBmb3IgYm91bmQgZnVu
Y3Rpb25zLCB3ZSdkIG5lZWQgdG8gYWRkIGEgbmV3IGZpZWxkIHRoZXkgY2FuIHVzZSBmb3IgdGhp
cyBjYWNoZS4gRm9yIG90aGVyCisgICAgICAgIGZ1bmN0aW9ucywgd2UgY2FjaGUgaXQgb24gdGhl
IGV4ZWN1dGFibGUgKGVpdGhlciBOYXRpdmVFeGVjdXRhYmxlIG9yIEZ1bmN0aW9uRXhlY3V0YWJs
ZSkuIFRoZSByZWFzb24gd2UgY2FuJ3QKKyAgICAgICAgZG8gdGhpcyBvbiB0aGUgZXhlY3V0YWJs
ZSBmb3IgYm91bmQgZnVuY3Rpb25zIGlzIHRoYXQgYWxsIGJvdW5kIGZ1bmN0aW9ucyBzaGFyZSB0
aGUgc2FtZSBleGVjdXRhYmxlLCBidXQKKyAgICAgICAgaW5kaXZpZHVhbCBib3VuZCBmdW5jdGlv
bnMgY2FuIGhhdmUgZGlmZmVyZW50IG5hbWVzLiBUaGUgcmVhc29uIGl0J3MgdmFsaWQgdG8gY2Fj
aGUgdGhlIHJlc3VsdHMgaW4gZ2VuZXJhbCBpcyB0aGF0IGEKKyAgICAgICAgZnVuY3Rpb24ncyBu
YW1lIGZpZWxkIGNhbid0IGJlIGNoYW5nZWQgZnJvbSBKUyBjb2RlIC0tIGl0J3Mgbm9uLXdyaXRh
YmxlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBGdW5jdGlvbi5wcm90b3R5cGUu
dG9TdHJpbmcgYW4gaW50cmluc2ljIGluIHRoZSBERkcvRlRMLiBXZSBlbWl0IGNvZGUgb24gdGhl
IGZhc3QgcGF0aAorICAgICAgICB3aGljaCByZWFkcyB0aGUgY2FjaGVkIHZhbHVlIGlmIGl0J3Mg
cHJlc2VudC4gSWYgbm90LCB3ZSBjYWxsIGludG8gdGhlIHNsb3cgcGF0aCwgd2hpY2ggd2lsbCBj
b21wdXRlCisgICAgICAgIHRoZSBjYWNoZWQgdmFsdWUgZm9yIG5vbiBib3VuZCBmdW5jdGlvbnMs
IG9yIGNvbXB1dGUgdGhlIHJlc3VsdCBmb3IgYm91bmQgZnVuY3Rpb25zLgorCisgICAgICAgIEkg
YWRkZWQgYSBuZXcgbWljcm9iZW5jaG1hcmsgdGhhdCBzcGVlZHMgdXAgYnkgPjM1eDoKKworICAg
ICAgICBmdW5jdGlvbi10by1zdHJpbmcgICAgIDIxOTcuNTk1MistMzAuNzExOCAgICBeICAgICA1
OS45ODYxKy0yLjU1NTAgICAgICAgIF4gZGVmaW5pdGVseSAzNi42MzUweCBmYXN0ZXIKKworICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbCk6CisgICAgICAgICog
ZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAg
ICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAg
ICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcv
REZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Z2V0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEV4ZWN1dGFibGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAg
ICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmdldEV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4
ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkV4ZWN1
dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZyk6CisgICAgICAgICog
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHJv
dG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmNwcDoKKyAgICAg
ICAgKEpTQzo6aW50cmluc2ljTmFtZSk6CisgICAgICAgICogcnVudGltZS9JbnRyaW5zaWMuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjp0b1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
Ojphc1N0cmluZ0NvbmN1cnJlbnRseSBjb25zdCk6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Z0lubGluZXMuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwOgorICAg
ICAgICAoSlNDOjpOYXRpdmVFeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3cpOgorICAgICAgICAoSlND
OjpOYXRpdmVFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGlt
ZS9OYXRpdmVFeGVjdXRhYmxlLmg6CisKIDIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgVW5jaGVja2VkTG9jayBldmVuIGxlc3MgaW4gSmF2
YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCA0OTNmMzY4ZTVlZWUwZGNkYTM2ZWVi
YzY3MTMxOTZmYjFiMGY0ZTExLi45MDUwOGY3MmZmZTYxYjFjZjdmMDIxNzRmOWVmMWM1OTM4ZTEw
OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0yODU1LDYgKzI4NTUsMTkgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWdu
ZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBGdW5jdGlv
blRvU3RyaW5nOiB7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihtX3ZtLCB2
YWx1ZSk7CisgICAgICAgICAgICBpZiAoSlNTdHJpbmcqIGFzU3RyaW5nID0gZnVuY3Rpb24tPmFz
U3RyaW5nQ29uY3VycmVudGx5KG1fdm0pKSB7CisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQo
bm9kZSwgKm1fZ3JhcGguZnJlZXplKGFzU3RyaW5nKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0Rm9yTm9kZShub2RlLCBtX3Zt
LnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6IHsKICAgICAgICAgSlNWYWx1ZSByYWRpeFZhbHVl
ID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSkubV92YWx1ZTsKICAgICAgICAgaWYgKHJhZGl4VmFs
dWUgJiYgcmFkaXhWYWx1ZS5pc0ludDMyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggY2NlNzgyYzFlM2M3ODA5NWFhNGY1NzVm
MDFkMmY2NTViNDMxYmYyMi4uOTM5OTQ3OTZhZmRkOTAyNDI2YjRjZmE0ODUxOTdhNDEyMjVhYjE4
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTM3NDAsNiArMzc0MCwxNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKE5vZGUqIGNhbGxlZSwgT3BlcmFuZCByZXN1bHQsIEludHJpbnNpYwogI2VuZGlm
CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmdJbnRyaW5zaWM6IHsK
KyAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgICAgIGluc2VydENoZWNrcygpOworICAgICAgICAgICAgTm9kZSogZnVu
Y3Rpb24gPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnRJbmNsdWRpbmdUaGlzKDAsIHJl
Z2lzdGVyT2Zmc2V0KSk7CisgICAgICAgICAgICBOb2RlKiByZXN1bHROb2RlID0gYWRkVG9HcmFw
aChGdW5jdGlvblRvU3RyaW5nLCBmdW5jdGlvbik7CisgICAgICAgICAgICBzZXRSZXN1bHQocmVz
dWx0Tm9kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggZGNhNmM0YWYyOWE5MzUxZTA1
ZmZjMmZmMjExYTU1YTZlZjk1ZTIwMi4uN2VlYzRhYzZkOTYyMTYxZGZkMmU1MjVlZjlkNTI1ZDU4
NzcxNWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTE4MTgsNiArMTgxOCwxMCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQorCisgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOgorICAgICAgICBkZWYoUHVyZVZhbHVl
KG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIENvdW50RXhlY3V0
aW9uOgogICAgIGNhc2UgU3VwZXJTYW1wbGVyQmVnaW46CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggMDI4NGE3ZTMwNGEwMDZlMTBlMWEzMzY2MDFlYmE3YmJhZjc5
MzJiZS4uNjE4ZWRhZTQxMmU1ZGQyYmFmOTEwZGNmZjM4MWExYjdhMjFiMDc3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjg5LDYgKzI4OSw3IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIERpcmVjdFRhaWxDYWxs
OgogICAgIGNhc2UgRGlyZWN0VGFpbENhbGxJbmxpbmVkQ2FsbGVyOgogICAgIGNhc2UgRm9yY2VP
U1JFeGl0OgorICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZzoKICAgICBjYXNlIEdldEJ5SWQ6CiAg
ICAgY2FzZSBHZXRCeUlkRGlyZWN0OgogICAgIGNhc2UgR2V0QnlJZERpcmVjdEZsdXNoOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggZjY1ZjliNTc5
MGU2NmUxZDkyZTIxMmM3YTFlNTU0ZTg5ZDhhOGJlYS4uMzczZTU2MGUyMjcyMGQ1YjNhYjlmYTk0
NWVhZjg0ZjdjOTkxMzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xOTczLDYgKzE5NzMsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOiB7CisgICAg
ICAgICAgICBmaXhFZGdlPEZ1bmN0aW9uVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGNhc2UgU2V0UHJpdmF0ZUJyYW5kOiB7CiAg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAyOWYzODhhZmNkMzg3NTM4YWY3ZTQ0NDJh
ZDBlZmQ2ZmQzZDViODEyLi5mZGJlNGY1OGI3YzM2YzgzMzY5MzMzYTIxOTIzMTc3Y2ZhYjVmYWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC00MjgsNiArNDI4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENhbGxOdW1i
ZXJDb25zdHJ1Y3RvciwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKE51bWJlclRvU3RyaW5nV2l0aFJhZGl4LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50LCBO
b2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhGdW5jdGlvblRvU3RyaW5nLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBtYWNybyhNYWtlUm9wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oSW5CeVZh
bCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oSW5C
eUlkLCBOb2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGUzMzY5OGU4ZTY1MWEzNjkz
MTQ5YmMwODI5YzU2MzliYmRjNTMxOTMuLjlhMmViZmYxZDRlOTRiYTEwNjg3M2RhZWRmYzA0OWI2
NWEwNDRiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cApAQCAtMjU2MCw2ICsyNTYwLDE1IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25Eb3VibGVUb1N0cmluZ1dpdGhWYWxpZFJhZGl4LCBjaGFyKiwgKEpTR2xvYmFsCiAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG51bWJlclRvU3RyaW5nKHZtLCB2YWx1ZSwgcmFk
aXgpKTsKIH0KIAorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZ1bmN0aW9uVG9T
dHJpbmcsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOworICAgIEpJVE9w
ZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKKwor
ICAgIHJldHVybiBmdW5jdGlvbi0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKK30KKwogSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZywgSlNTdHJp
bmcqLCAoVk0qIHZtUG9pbnRlciwgaW50MzJfdCBjaGFyYWN0ZXIpKQogewogICAgIFZNJiB2bSA9
ICp2bVBvaW50ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmlu
ZGV4IDUyY2RiZTgyNjYxNmViYzRhOTJkMDU4YjAwMWVjMzhlZmMyYTNkNDguLjk5YzM5MjUxZDFm
NTk5Y2NiNjEyMDFiMDVlYjA1ZjAxYWJhZGViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCkBAIC0yNDYsNiArMjQ2LDcgQEAgSlNDX0RFQ0xBUkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25Eb3VibGVUb1N0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCos
IGRvdWIKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW50MzJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgaW50MzJfdCwgaW50MzJfdCkp
OwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25JbnQ1MlRvU3RyaW5nV2l0aFZh
bGlkUmFkaXgsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBpbnQ2NF90LCBpbnQzMl90KSk7CiBK
U0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nV2l0aFZhbGlk
UmFkaXgsIGNoYXIqLCAoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGludDMyX3QpKTsKK0pTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRnVuY3Rpb25Ub1N0cmluZywgSlNTdHJpbmcq
LCAoSlNHbG9iYWxPYmplY3QqLCBKU0Z1bmN0aW9uKikpOwogCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk5vcm1hbGl6ZU1hcEtleUhlYXBCaWdJbnQsIEVuY29kZWRKU1ZhbHVl
LCAoVk0qLCBKU0JpZ0ludCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
TWFwSGFzaCwgVUNQVVN0cmljdEludDMyLCAoSlNHbG9iYWxPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSBpbnB1dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA1YjU4MGJiNTQzYzE5ZGNhYmY4
N2EwNGZjNzgzMjc1ODI0MDgxZGMxLi44ZjdlMzU5NTE3ZmMwYWY4Y2ZiZTNlNTU4NjljOTg3NDE5
ZjkxMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTE1OCw2ICsxMTU4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgQ2FsbFN0cmlu
Z0NvbnN0cnVjdG9yOgogICAgICAgICBjYXNlIFRvU3RyaW5nOgorICAgICAgICBjYXNlIEZ1bmN0
aW9uVG9TdHJpbmc6CiAgICAgICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAg
ICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgICAgICBj
YXNlIE1ha2VSb3BlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAppbmRleCAyODEzMTdhM2M1MzBlMDkwYTAzMDJiZTljODhjZDdiNzVjYjM0OWFhLi5kYjIy
MTlhMTQ3NzY0NzhjYjBlOWE4N2IwOWIxZDVkN2MzY2IxMmExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjczLDYgKzI3Myw3IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSwgYm9vbCBpZ25vCiAgICAgY2FzZSBUb0Jvb2xlYW46CiAgICAgY2FzZSBMb2dpY2Fs
Tm90OgogICAgIGNhc2UgVG9TdHJpbmc6CisgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOgogICAg
IGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgIGNhc2UgU3Ry
Q2F0OgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCA3M2Y5MTE0ZWFmODgzY2Vl
ZjljYTAzYjg0ZjE2ZWU2NDRlNmQyOGY4Li45YjQyYTY2ZmQxNmMxMGFhNDhkZmNmZTQ5YjY5NTY1
ZDc5NmExYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNJbW11dGFibGVCdXR0ZXJmbHkuaCIKQEAgLTEwNTE0LDYgKzEwNTE1LDQ3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJp
bmdWYWx1ZU9mKE5vZGUqCiAgICAgfQogfQogCitzdGF0aWMgdm9pZCBnZXRFeGVjdXRhYmxlKEpJ
VENvbXBpbGVyJiBqaXQsIEdQUlJlZyBmdW5jdGlvbkdQUiwgR1BSUmVnIHJlc3VsdEdQUikKK3sK
KyAgICBqaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0R1BSKTsKKyAgICBh
dXRvIGhhc0V4ZWN1dGFibGUgPSBqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8s
IHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURh
dGFUYWcpKTsKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BS
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJh
cmVEYXRhVGFnKSwgcmVzdWx0R1BSKTsKKyAgICBoYXNFeGVjdXRhYmxlLmxpbmsoJmppdCk7Cit9
CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKE5vZGUqIG5v
ZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgIEdQUlRlbXBvcmFyeSBleGVjdXRhYmxlKHRoaXMpOworICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsK
KworICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwg
U3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7CisKKyAgICBtX2ppdC5lbWl0TG9hZFN0cnVj
dHVyZSh2bSgpLCBmdW5jdGlvbi5ncHIoKSwgcmVzdWx0LmdwcigpLCBleGVjdXRhYmxlLmdwcigp
KTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwg
U3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8SlNCb3VuZEZ1bmN0aW9uPiwgIldlIGRvbid0IGhhbmRs
ZSBzdWJjbGFzc2VzIHdoZW4gY29tcGFyaW5nIGNsYXNzSW5mbyBiZWxvdyIpOworICAgIHNsb3dD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWwsIHJlc3VsdC5n
cHIoKSwgVHJ1c3RlZEltbVB0cihKU0JvdW5kRnVuY3Rpb246OmluZm8oKSkpKTsKKworICAgIGdl
dEV4ZWN1dGFibGUobV9qaXQsIGZ1bmN0aW9uLmdwcigpLCBleGVjdXRhYmxlLmdwcigpKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc05hdGl2ZUV4ZWN1dGFibGUgPSBtX2ppdC5icmFuY2g4KEpJ
VENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5ncHIoKSwg
SlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihOYXRpdmVFeGVjdXRh
YmxlVHlwZSkpOworCisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhl
eGVjdXRhYmxlLmdwcigpLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mUmFyZURhdGEoKSks
IHJlc3VsdC5ncHIoKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKKyAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgRnVuY3Rpb25FeGVjdXRhYmxl
OjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICBKSVRD
b21waWxlcjo6SnVtcCBjb250aW51YXRpb24gPSBtX2ppdC5qdW1wKCk7CisKKyAgICBpc05hdGl2
ZUV4ZWN1dGFibGUubGluaygmbV9qaXQpOworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5ncHIoKSwgTmF0aXZlRXhlY3V0YWJsZTo6b2Zmc2V0T2ZB
c1N0cmluZygpKSwgcmVzdWx0LmdwcigpKTsKKworICAgIGNvbnRpbnVhdGlvbi5saW5rKCZtX2pp
dCk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkZ1bmN0aW9uVG9TdHJpbmcsIHJl
c3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmN0aW9uLmdwcigpKSk7
CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9k
ZSogbm9kZSkKIHsKICAgICBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0
YW50KG5vZGUsIG5vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKTsKQEAgLTEzMjYzLDE0ICsxMzMw
NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRFeGVjdXRhYmxlKE5vZGUqIG5v
ZGUpCiB7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnVuY3Rpb24odGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIGZ1bmN0aW9uKTsK
LSAgICBHUFJSZWcgZnVuY3Rpb25HUFIgPSBmdW5jdGlvbi5ncHIoKTsKLSAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5vZGUtPmNoaWxk
MSgpLCBmdW5jdGlvbkdQUiwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlwZSk7Ci0gICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhmdW5jdGlvbkdQUiwgSlNGdW5jdGlvbjo6
b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0R1BSKTsKLSAgICBhdXRvIGhh
c0V4ZWN1dGFibGUgPSBtX2ppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgcmVz
dWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRh
ZykpOwotICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJl
RGF0YVRhZyksIHJlc3VsdEdQUik7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKCZtX2ppdCk7Ci0g
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgIHNwZWN1bGF0ZUNlbGxUeXBlKG5v
ZGUtPmNoaWxkMSgpLCBmdW5jdGlvbi5ncHIoKSwgU3BlY0Z1bmN0aW9uLCBKU0Z1bmN0aW9uVHlw
ZSk7CisgICAgZ2V0RXhlY3V0YWJsZShtX2ppdCwgZnVuY3Rpb24uZ3ByKCksIHJlc3VsdC5ncHIo
KSk7CisgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0R2V0dGVyKE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTJlMWU4Y2Q1MmEwNDg2ZTYx
MGM1YzQ5MGMzYmEwYTkxN2RjODlmMy4uMmUyNWRiODQwMjdiZmM5NDA4ZTA3YWMzYmZlZjliMWVj
YzEyNmI3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMTIyNyw2ICsxMjI3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZW1pdFN3aXRjaChO
b2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1
Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKik7CisgICAgdm9pZCBjb21waWxlRnVuY3Rpb25Ub1N0
cmluZyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFu
dChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENv
bnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGI1N2MzN2FhMDVkZDQ5
MDkxYzdmYTM2NTBmOGJiZmY3NTIzN2Y2MzkuLjU2ZGE0NDllMTI0ZjIyNTdiYWJjNTM0MjUzZmQ2
ZjAyZDM2ZTQ2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzIwNSw2ICszMjA1LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZVRvU3RyaW5nT3JD
YWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KKworICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZzoKKyAgICAgICAgY29tcGlsZUZ1
bmN0aW9uVG9TdHJpbmcobm9kZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNl
IE5ld1N0cmluZ09iamVjdDogewogICAgICAgICBjb21waWxlTmV3U3RyaW5nT2JqZWN0KG5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggYjkxMThiNjJlODdkOTcwYWM1NDYxZjYzYmQzYzM4MGZiOGIwMTI2MC4uOGUxNGU5
NGY1ZWU0OWUxN2ZjOGMwNTJkOTRlNGMwODk4NzJjNWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNzkwLDYgKzM3OTAs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBj
b21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOgor
ICAgICAgICBjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhub2RlKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgICAgIAogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OiB7CiAgICAgICAgIGNvbXBpbGVOZXdT
dHJpbmdPYmplY3Qobm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGIwNjg4NGI1MjhkMjVmZGVkZDQ2Zjgz
OTE4NDk5NDI5MjIxMzY0NmUuLjJlMmYwN2RmYzdlOGMxM2RkYjBlZGQ1YTJkMDdhNWQ4NzJlMTc5
MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCkBAIC03Nyw2ICs3Nyw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFy
Z3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3Vt
ZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVz
Y3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3Jp
cHRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25FeGVjdXRhYmxlX3JhcmVEYXRhLCBGdW5jdGlv
bkV4ZWN1dGFibGU6Om9mZnNldE9mUmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uRXhl
Y3V0YWJsZVJhcmVEYXRhX2FzU3RyaW5nLCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQXNT
dHJpbmdJblJhcmVEYXRhKCkpIFwKICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2FsbG9jYXRv
ciwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigp
KSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEZ1
bmN0aW9uUmFyZURhdGFfcHJvdG90eXBlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5
cGU6Om9mZnNldE9mUHJvdG90eXBlKCkpIFwKQEAgLTExOSw2ICsxMjEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVyMiwgSlNS
b3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVyMigpKSBcCiAgICAgbWFjcm8oSlNTY29wZV9uZXh0LCBK
U1Njb3BlOjpvZmZzZXRPZk5leHQoKSkgXAogICAgIG1hY3JvKEpTU3ltYm9sVGFibGVPYmplY3Rf
c3ltYm9sVGFibGUsIEpTU3ltYm9sVGFibGVPYmplY3Q6Om9mZnNldE9mU3ltYm9sVGFibGUoKSkg
XAorICAgIG1hY3JvKE5hdGl2ZUV4ZWN1dGFibGVfYXNTdHJpbmcsIE5hdGl2ZUV4ZWN1dGFibGU6
Om9mZnNldE9mQXNTdHJpbmcoKSkgXAogICAgIG1hY3JvKFJlZ0V4cE9iamVjdF9yZWdFeHBBbmRM
YXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZywgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFu
ZExhc3RJbmRleElzTm90V3JpdGFibGVGbGFnKCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3Rf
bGFzdEluZGV4LCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mTGFzdEluZGV4KCkpIFwKICAgICBtYWNy
byhTaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUsIE9CSkVDVF9PRkZTRVRPRihTaGFkb3dDaGlj
a2VuOjpQYWNrZXQsIGNhbGxlZSkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCA0ZjZlMDM3Y2IxMWM1MjRiOTExMTM5ZTA0YzlmMDVlNmM0
ZGRiODcwLi40N2U5YjdkMzJmNzNmZWJlOTg5NWY2Yjc0YWMxOGQ1Mzk0NzM3ZjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC0yMTcsNiAr
MjE3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBUb051bWJlcjoKICAgICBjYXNlIFRvTnVtZXJpYzoKICAgICBjYXNlIFRvU3RyaW5n
OgorICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZzoKICAgICBjYXNlIFRvT2JqZWN0OgogICAgIGNh
c2UgQ2FsbE9iamVjdENvbnN0cnVjdG9yOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4
IDgxNjdmYTNkMDUyYzEwYmRmMWI2ZjY0OTBjZTM1OTA3ZGFkOGJmMzUuLjUwNzY2ODQ2OGMwMmNm
NmE2MWIxMjFmOWI2N2FjOGQwZGJhMjRjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJKU0Fz
eW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0FzeW5jR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SlNBc3luY0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTE5Niw2ICsxMTk3LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBTdHJpbmdWYWx1ZU9mOgogICAgICAgICAgICAgY29tcGlsZVRvU3Ry
aW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CisgICAgICAgICAgICBjb21w
aWxlRnVuY3Rpb25Ub1N0cmluZygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VG9QcmltaXRpdmU6CiAgICAgICAgICAgICBjb21waWxlVG9QcmltaXRpdmUoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzc3NCwxNCArMzc3OCwxMiBAQCBwcml2YXRlOgogICAgICAgICBzcGVj
dWxhdGUoQmFkSWRlbnQsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQubm90RXF1YWwoc3RyaW5n
SW1wbCwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGls
ZUdldEV4ZWN1dGFibGUoKQorICAgIExWYWx1ZSBnZXRFeGVjdXRhYmxlKExWYWx1ZSBmdW5jdGlv
bikKICAgICB7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Js
b2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0gbV9vdXQubmV3QmxvY2so
KTsKLSAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBzcGVjdWxhdGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgpLCBjZWxsKTsKIAotICAgICAg
ICBMVmFsdWUgcmFyZURhdGFUYWdzID0gbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTRnVu
Y3Rpb25fZXhlY3V0YWJsZU9yUmFyZURhdGEpOworICAgICAgICBMVmFsdWUgcmFyZURhdGFUYWdz
ID0gbV9vdXQubG9hZFB0cihmdW5jdGlvbiwgbV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGVP
clJhcmVEYXRhKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdEV4ZWN1dGFibGUgPSBtX291
dC5hbmNob3IocmFyZURhdGFUYWdzKTsKICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LnRlc3RJ
c1plcm9QdHIocmFyZURhdGFUYWdzLCBtX291dC5jb25zdEludFB0cihKU0Z1bmN0aW9uOjpyYXJl
RGF0YVRhZykpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGhhc1JhcmVEYXRhKSk7CiAK
QEAgLTM3OTEsNyArMzc5MywxNSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7Ci0gICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RFeGVj
dXRhYmxlLCBzbG93RXhlY3V0YWJsZSkpOworICAgICAgICByZXR1cm4gbV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIGZhc3RFeGVjdXRhYmxlLCBzbG93RXhlY3V0YWJsZSk7CisgICAgfQorCisgICAg
dm9pZCBjb21waWxlR2V0RXhlY3V0YWJsZSgpCisgICAgeworICAgICAgICBMVmFsdWUgY2VsbCA9
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1f
bm9kZS0+Y2hpbGQxKCksIGNlbGwpOworICAgICAgICBMVmFsdWUgZXhlY3V0YWJsZSA9IGdldEV4
ZWN1dGFibGUoY2VsbCk7CisgICAgICAgIHNldEpTVmFsdWUoZXhlY3V0YWJsZSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgY29tcGlsZUFycmF5aWZ5KCkKQEAgLTgyMjAsNiArODIzMCw1NSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lk
IGNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX29yaWdpbi5zZW1hbnRp
Yyk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90Qm91bmRGdW5jdGlvbkNhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBmdW5jdGlvbkV4ZWN1dGFibGVDYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbmF0aXZlRXhlY3V0YWJsZUNh
c2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayB0ZXN0UHRyID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93Q2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisKKyAgICAgICAgTFZhbHVlIGZ1bmN0aW9uID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9ub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24pOwor
CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBsb2FkU3RydWN0dXJlKGZ1bmN0aW9uKTsKKyAg
ICAgICAgTFZhbHVlIGNsYXNzSW5mbyA9IG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBz
LlN0cnVjdHVyZV9jbGFzc0luZm8pOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmlu
YWxfdjxKU0JvdW5kRnVuY3Rpb24+LCAiV2UgZG9uJ3QgaGFuZGxlIHN1YmNsYXNzZXMgd2hlbiBj
b21wYXJpbmcgY2xhc3NJbmZvIGJlbG93Iik7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5l
cXVhbChjbGFzc0luZm8sIG1fb3V0LmNvbnN0SW50UHRyKEpTQm91bmRGdW5jdGlvbjo6aW5mbygp
KSksIHVuc3VyZShzbG93Q2FzZSksIHVuc3VyZShub3RCb3VuZEZ1bmN0aW9uQ2FzZSkpOworCisg
ICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8obm90Qm91bmRGdW5j
dGlvbkNhc2UsIG5hdGl2ZUV4ZWN1dGFibGVDYXNlKTsKKyAgICAgICAgTFZhbHVlIGV4ZWN1dGFi
bGUgPSBnZXRFeGVjdXRhYmxlKGZ1bmN0aW9uKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzVHlw
ZShleGVjdXRhYmxlLCBOYXRpdmVFeGVjdXRhYmxlVHlwZSksIHVuc3VyZShuYXRpdmVFeGVjdXRh
YmxlQ2FzZSksIHVuc3VyZShmdW5jdGlvbkV4ZWN1dGFibGVDYXNlKSk7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8obmF0aXZlRXhlY3V0YWJsZUNhc2UsIGZ1bmN0aW9uRXhlY3V0YWJsZUNhc2Up
OworICAgICAgICBWYWx1ZUZyb21CbG9jayBuYXRpdmVSZXN1bHQgPSBtX291dC5hbmNob3IobV9v
dXQubG9hZFB0cihleGVjdXRhYmxlLCBtX2hlYXBzLk5hdGl2ZUV4ZWN1dGFibGVfYXNTdHJpbmcp
KTsKKyAgICAgICAgbV9vdXQuanVtcCh0ZXN0UHRyKTsKKworICAgICAgICBtX291dC5hcHBlbmRU
byhmdW5jdGlvbkV4ZWN1dGFibGVDYXNlLCB0ZXN0UHRyKTsKKyAgICAgICAgTFZhbHVlIHJhcmVE
YXRhID0gbV9vdXQubG9hZFB0cihleGVjdXRhYmxlLCBtX2hlYXBzLkZ1bmN0aW9uRXhlY3V0YWJs
ZV9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3ROdWxsKHJhcmVEYXRh
KSwgdXN1YWxseShoYXNSYXJlRGF0YSksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBzbG93Q2FzZSk7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIGZ1bmN0aW9uUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmxvYWRQdHIocmFyZURhdGEs
IG1faGVhcHMuRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGFfYXNTdHJpbmcpKTsKKyAgICAgICAg
bV9vdXQuanVtcCh0ZXN0UHRyKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyh0ZXN0UHRyLCBj
b250aW51YXRpb24pOworICAgICAgICBMVmFsdWUgYXNTdHJpbmcgPSBtX291dC5waGkocG9pbnRl
clR5cGUoKSwgbmF0aXZlUmVzdWx0LCBmdW5jdGlvblJlc3VsdCk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoYXNTdHJpbmcpOworICAgICAgICBtX291
dC5icmFuY2gobV9vdXQubm90TnVsbChhc1N0cmluZyksIHVzdWFsbHkoY29udGludWF0aW9uKSwg
cmFyZWx5KHNsb3dDYXNlKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNv
bnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkZ1bmN0aW9uVG9TdHJpbmcsIHdl
YWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGZ1bmN0aW9uKSk7CisgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkocG9pbnRlclR5cGUoKSwgZmFz
dFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVUb1By
aW1pdGl2ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggMTg2ZmIyNGZhYmEwYzQ2Y2ViZTAyN2VhNTZj
MDcyYTc1YzljYWNiOC4uYTRiMjkzY2Q1YWY4NDE3ZTQzYTcyOGFhNzRlYTdmYjIyOTdmZmIzMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCkBAIC03OSw2ICs3OSw3IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNp
dENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV91bmxpbmtlZEV4ZWN1dGFibGUpOwogICAgIGlmIChSYXJl
RGF0YSogcmFyZURhdGEgPSB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmdldCgpKSB7CiAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2NhY2hlZFBvbHlQcm90b1N0cnVjdHVyZSk7Cisg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKHJhcmVEYXRhLT5tX2FzU3RyaW5nKTsKICAgICAgICAgaWYg
KFRlbXBsYXRlT2JqZWN0TWFwKiBtYXAgPSByYXJlRGF0YS0+bV90ZW1wbGF0ZU9iamVjdE1hcC5n
ZXQoKSkgewogICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHRoaXNPYmplY3QtPmNlbGxMb2Nr
KCkgfTsKICAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiAqbWFwKQpAQCAtMTE2LDYgKzEx
Nyw4MSBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmVuc3VyZVJhcmVEYXRhU2xvdygpCiAgICAgcmV0dXJuICptX3JhcmVEYXRhOwogfQogCitKU1N0
cmluZyogRnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxPYmplY3QpOworICAgIEFT
U0VSVChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2FzU3RyaW5nKTsKKworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgY29uc3QgYXV0byYg
Y2FjaGUgPSBbJl0oSlNTdHJpbmcqIGFzU3RyaW5nKSB7CisgICAgICAgIFdURjo6c3RvcmVTdG9y
ZUZlbmNlKCk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fYXNTdHJpbmcuc2V0KHZtLCB0aGlzLCBh
c1N0cmluZyk7CisgICAgICAgIHJldHVybiBhc1N0cmluZzsKKyAgICB9OworCisgICAgY29uc3Qg
YXV0byYgY2FjaGVJZk5vRXhjZXB0aW9uID0gWyZdKEpTVmFsdWUgdmFsdWUpIC0+IEpTU3RyaW5n
KiB7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7Cisg
ICAgICAgIHJldHVybiBjYWNoZSg6OkpTQzo6YXNTdHJpbmcodmFsdWUpKTsKKyAgICB9OworCisg
ICAgaWYgKGlzQnVpbHRpbkZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBjYWNoZUlmTm9FeGNl
cHRpb24oanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5jdGlvbiAiLCBu
YW1lKCkuc3RyaW5nKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKKworICAgIGlm
IChpc0NsYXNzKCkpCisgICAgICAgIHJldHVybiBjYWNoZShqc1N0cmluZyh2bSwgY2xhc3NTb3Vy
Y2UoKS52aWV3KCkudG9TdHJpbmcoKSkpOworCisgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyOwor
ICAgIHN3aXRjaCAocGFyc2VNb2RlKCkpIHsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0
aW9uKiAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3Jt
YWxGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6Ok1ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOgorICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNHZW5lcmF0b3JCb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5j
dGlvbkJvZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Cb2R5TW9kZToKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24gIjsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkNsYXNzRmllbGRJbml0aWFsaXplck1vZGU6Cisg
ICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gIiI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1
bmN0aW9uICI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jICI7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJh
dG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNH
ZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5
bmMgZnVuY3Rpb24qICI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIFN0cmluZ1ZpZXcg
c3JjID0gc291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCisgICAgICAgIHBhcmFtZXRlcnNT
dGFydE9mZnNldCgpLAorICAgICAgICBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSArIHNvdXJjZSgp
Lmxlbmd0aCgpKTsKKworICAgIFN0cmluZyBuYW1lID0gdGhpcy0+bmFtZSgpLnN0cmluZygpOwor
ICAgIGlmIChuYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnN0YXJEZWZhdWx0UHJpdmF0ZU5hbWUu
c3RyaW5nKCkpCisgICAgICAgIG5hbWUgPSBlbXB0eVN0cmluZygpOworICAgIHJldHVybiBjYWNo
ZUlmTm9FeGNlcHRpb24oanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsIGZ1bmN0
aW9uSGVhZGVyLCBuYW1lLCBzcmMpKTsKK30KKwogdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6Om92
ZXJyaWRlSW5mbyhjb25zdCBGdW5jdGlvbk92ZXJyaWRlSW5mbyYgb3ZlcnJpZGVJbmZvKQogewog
ICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmFkY2I3ODUw
ZmI2ZjkzNjU1NmNlNDljMjYxNjAyYzU5NTlkNGZkYS4uOGJiNTBkYjVhZDJmYTBhODEzZTJhMzc4
ZDRmZWM3Y2Y2Mjc2OTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTI4NSw2ICsyODUsMTcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOwogCisgICAgSlNTdHJpbmcqIHRv
U3RyaW5nKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNTdHJpbmcqIGFzU3RyaW5nQ29uY3VycmVu
dGx5KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9hc1N0cmluZy5n
ZXQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZlJhcmVE
YXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9yYXJl
RGF0YSk7IH0KKyAgICBzdGF0aWMgaW5saW5lIHB0cmRpZmZfdCBvZmZzZXRPZkFzU3RyaW5nSW5S
YXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihSYXJlRGF0YSwgbV9hc1N0cmluZyk7
IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSW50cmluc2ljLCBib29sIGlzSW5zaWRlT3JkaW5hcnlGdW5jdGlvbik7CkBA
IC0zMDQsNiArMzE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbV90eXBlUHJvZmls
aW5nRW5kT2Zmc2V0IHsgVUlOVF9NQVggfTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRlbXBs
YXRlT2JqZWN0TWFwPiBtX3RlbXBsYXRlT2JqZWN0TWFwOwogICAgICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX2NhY2hlZFBvbHlQcm90b1N0cnVjdHVyZTsKKyAgICAgICAgV3JpdGVCYXJy
aWVyPEpTU3RyaW5nPiBtX2FzU3RyaW5nOwogICAgIH07CiAKICAgICBSYXJlRGF0YSYgZW5zdXJl
UmFyZURhdGEoKQpAQCAtMzE0LDYgKzMyNiw4IEBAIHByaXZhdGU6CiAgICAgfQogICAgIFJhcmVE
YXRhJiBlbnN1cmVSYXJlRGF0YVNsb3coKTsKIAorICAgIEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3co
SlNHbG9iYWxPYmplY3QqKTsKKwogICAgIC8vIEZJWE1FOiBXZSBjYW4gbWVyZ2UgcmFyZURhdGEg
cG9pbnRlciBhbmQgdG9wLWxldmVsIGV4ZWN1dGFibGUgcG9pbnRlci4gRmlyc3QgdGltZSwgc2V0
dGluZyBwYXJlbnQuCiAgICAgLy8gSWYgUmFyZURhdGEgaXMgcmVxdWlyZWQsIG1hdGVyaWFsaXpl
IFJhcmVEYXRhLCBzd2FwIGl0LCBhbmQgc3RvcmUgdG9wLWxldmVsIGV4ZWN1dGFibGUgcG9pbnRl
ciBpbnNpZGUgUmFyZURhdGEuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzYyNQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCmluZGV4IDQ1Mjk5YzMzNmY4NWZjMjIz
NTliYmZkNzRjNjk1ZmZlZjczYTc0YjYuLmM5YTBiMTIyNDA0MzMyOTcxYTE2YzI4YTZkMTVmNTRl
ZjNmNTBkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKQEAgLTM1LDUgKzM1LDEzIEBAIGlubGluZSB2
b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mIHZtKQog
ICAgIG1fc2luZ2xldG9uLmZpbmFsaXplVW5jb25kaXRpb25hbGx5KHZtKTsKIH0KIAorSlNTdHJp
bmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBSYXJlRGF0YSYgcmFyZURhdGEgPSBlbnN1cmVSYXJlRGF0YSgpOworICAg
IGlmICghcmFyZURhdGEubV9hc1N0cmluZykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nU2xvdyhn
bG9iYWxPYmplY3QpOworICAgIHJldHVybiByYXJlRGF0YS5tX2FzU3RyaW5nLmdldCgpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IDE0ZjM3M2E4ZmEwM2FkYmJmNmRmY2Jl
YzgxMmEyMDMwODk4ODZiYWMuLmRmMjVmYzA2OWY0N2Y3NGYxZWM1OTYyOWM2NTNjOTVjY2VmY2Y4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKQEAgLTU0LDggKzU0LDcgQEAgdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAKIHZvaWQgRnVuY3Rpb25Q
cm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIEpTRnVuY3Rpb24qKiBhcHBs
eUZ1bmN0aW9uLCBKU0Z1bmN0aW9uKiogaGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbikKIHsKLSAg
ICBKU0Z1bmN0aW9uKiB0b1N0cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLnN0cmluZygpLCBmdW5j
dGlvblByb3RvRnVuY1RvU3RyaW5nKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmcsIHRvU3RyaW5nRnVuY3Rpb24sIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBKU0NfTkFU
SVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkudG9TdHJpbmdQdWJsaWNOYW1lKCksIGZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pLCAwLCBGdW5jdGlvblRvU3RyaW5nSW50cmluc2ljKTsKIAogICAgICphcHBseUZ1bmN0aW9u
ID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwbHlQdWJsaWNOYW1lKCks
IGZ1bmN0aW9uUHJvdG90eXBlQXBwbHlDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgICpjYWxsRnVuY3Rpb24g
PSBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jYWxsUHVibGljTmFtZSgpLCBm
dW5jdGlvblByb3RvdHlwZUNhbGxDb2RlR2VuZXJhdG9yKHZtKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtODEsNTggKzgwLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEpTRnVuY3Rp
b24+KHZtKSkgewogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0
aW9uKj4odGhpc1ZhbHVlKTsKICAgICAgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZt
LCBmdW5jdGlvbi0+c3RydWN0dXJlSUQoKSk7Ci0gICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAi
ZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUodm0pLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1c
bn0iKSkpOwotCi0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0
aW9uLT5qc0V4ZWN1dGFibGUoKTsKLSAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzQ2xhc3MoKSkK
LSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGV4ZWN1dGFi
bGUtPmNsYXNzU291cmNlKCkudmlldygpLnRvU3RyaW5nKCkpKTsKLQotICAgICAgICBTdHJpbmcg
ZnVuY3Rpb25IZWFkZXI7Ci0gICAgICAgIHN3aXRjaCAoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkp
IHsKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlv
bk1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0
aG9kTW9kZToKLSAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uKiAiOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1
bmN0aW9uTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU6Ci0g
ICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgotICAgICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6
ZU1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU6
Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZToKLSAgICAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGU6Ci0gICAgICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKLSAgICAgICAg
ICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uICI7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6Ci0gICAgICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAg
ICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKLSAgICAgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKLSAgICAgICAgICAgIGZ1bmN0aW9uSGVh
ZGVyID0gImFzeW5jIGZ1bmN0aW9uICI7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKLSAgICAgICAgICAg
IGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jICI7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
OgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyTWV0
aG9kTW9kZToKLSAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uKiAi
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmdWaWV3IHNv
dXJjZSA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAotICAgICAg
ICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCi0gICAgICAgICAgICBl
eGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgp
Lmxlbmd0aCgpKTsKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsIGZ1bmN0aW9uSGVhZGVy
LCBmdW5jdGlvbi0+bmFtZSh2bSksIHNvdXJjZSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZnVuY3Rpb24tPnRvU3RyaW5nKGdsb2JhbE9iamVj
dCkpKTsKICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEludGVybmFsRnVuY3Rp
b24+KHZtKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAK
aW5kZXggMTQ0YmEzY2M2YTY3ZmRiNjBiYzQ4MDFkZTNiYTdiYjJmZDA2NjQyOS4uOTg3NThjNmFl
YmQ1YTkxMGI3MzA5YjAzYWM4NTU3YjY2ODRmOGNkMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRyaW5zaWMuY3BwCkBAIC0yNzUsNiArMjc1LDggQEAgY29uc3QgY2hhciog
aW50cmluc2ljTmFtZShJbnRyaW5zaWMgaW50cmluc2ljKQogICAgICAgICByZXR1cm4gIkF0b21p
Y3NYb3JJbnRyaW5zaWMiOwogICAgIGNhc2UgUGFyc2VJbnRJbnRyaW5zaWM6CiAgICAgICAgIHJl
dHVybiAiUGFyc2VJbnRJbnRyaW5zaWMiOworICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZ0ludHJp
bnNpYzoKKyAgICAgICAgcmV0dXJuICJGdW5jdGlvblRvU3RyaW5nSW50cmluc2ljIjsKICAgICBj
YXNlIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiVHlwZWRBcnJh
eUxlbmd0aEludHJpbnNpYyI7CiAgICAgY2FzZSBUeXBlZEFycmF5Qnl0ZUxlbmd0aEludHJpbnNp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKaW5kZXggN2E5Y2Q3
MDI5ZTM4ZmRjM2YxMTA1MDkxNGQ0ZGQyMGI1M2RhMzUyYS4uOWJlODUyYzk2YmM3MDkwYmYyOTc2
YmViOTFmZGE2OTU0Y2U3ODE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
cmluc2ljLmgKQEAgLTE1Myw2ICsxNTMsNyBAQCBlbnVtIEludHJpbnNpYyA6IHVpbnQ4X3Qgewog
ICAgIEF0b21pY3NXYWl0SW50cmluc2ljLAogICAgIEF0b21pY3NYb3JJbnRyaW5zaWMsCiAgICAg
UGFyc2VJbnRJbnRyaW5zaWMsCisgICAgRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYywKIAogICAg
IC8vIEdldHRlciBpbnRyaW5zaWNzLgogICAgIFR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGZhNWFl
Y2QxN2MxY2VmYzlkNjI5OGRkNzIyODM5ZWNmNDVlZGYzMGIuLjRiOGU5ZjlhN2JiZWJkMzg5NzVj
NWI1Y2EwNTM1YzBkNTVlYjlkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCkBAIC0yNDcsNiArMjQ3LDE5IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0
aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoVk0mIHZtKQogICAgIHJldHVybiBqc0V4ZWN1dGFi
bGUoKS0+ZWNtYU5hbWUoKS5zdHJpbmcoKTsKIH0KIAorSlNTdHJpbmcqIEpTRnVuY3Rpb246OnRv
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2V0
Vk0oZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAoaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkp
IHsKKyAgICAgICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVu
Y3Rpb24qPih0aGlzKTsKKyAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGpzTWFrZU5vbnRyaXZpYWxT
dHJpbmcoZ2xvYmFsT2JqZWN0LCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWVTdHJpbmcoKSwg
IigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOworICAgIH0KKworICAgIGlmIChpc0hvc3RG
dW5jdGlvbigpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUoKSktPnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGpzRXhl
Y3V0YWJsZSgpLT50b1N0cmluZyhnbG9iYWxPYmplY3QpOworfQorCiBjb25zdCBTb3VyY2VDb2Rl
KiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QKIHsKICAgICBpZiAoaXNIb3N0T3JCdWls
dGluRnVuY3Rpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAppbmRleCBiY2MyZTgxMGZjNmU5NjY5Mzg1ZDE4OWU1MTUxNzliMmViN2FhNGFjLi44MmFmZjFk
MjYxM2E0NjVjZjdkNDMxZjdlZDFjNzAwOWEwOGEwZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC05MCw2ICs5MCw5IEBAIHB1YmxpYzoKICAgICBK
U19FWFBPUlRfUFJJVkFURSBTdHJpbmcgbmFtZShWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBkaXNwbGF5TmFtZShWTSYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IFN0
cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUoVk0mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBK
U1N0cmluZyogdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqKTsKKworICAgIEpTU3RyaW5nKiBhc1N0
cmluZ0NvbmN1cnJlbnRseShWTSYpIGNvbnN0OwogCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IDJkMTBiM2RiYWVhNWUwOGFkMDk0MTQyZDI0MWNh
YzMwY2ZkYTg4YzQuLjI1ZDYwOTQzMGJiN2RlYjVlY2IwYWQ5NzIxMmU4OGY5ODdhNWRiMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMu
aApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGdW5jdGlvbkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiTmF0aXZlRXhlY3V0YWJsZS5oIgogCkBAIC0xNTYsNCArMTU3
LDEzIEBAIGlubGluZSBGdW5jdGlvblJhcmVEYXRhKiBKU0Z1bmN0aW9uOjplbnN1cmVSYXJlRGF0
YUFuZEFsbG9jYXRpb25Qcm9maWxlKEpTR2xvYmFsCiAgICAgcmV0dXJuIHJhcmVEYXRhOwogfQog
CitpbmxpbmUgSlNTdHJpbmcqIEpTRnVuY3Rpb246OmFzU3RyaW5nQ29uY3VycmVudGx5KFZNJiB2
bSkgY29uc3QKK3sKKyAgICBpZiAoaW5oZXJpdHM8SlNCb3VuZEZ1bmN0aW9uPih2bSkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUoKSktPmFzU3Ry
aW5nQ29uY3VycmVudGx5KCk7CisgICAgcmV0dXJuIGpzRXhlY3V0YWJsZSgpLT5hc1N0cmluZ0Nv
bmN1cnJlbnRseSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxpbmVzLmgKaW5kZXggZTdhZjBkNzM4OGExYTcy
MzI2NGM5NzkwNmNhZDg1NTEzYThkZGE3OC4uYmM3Mzk4ZGJkNTc5Zjk4MmRiMjhiOWI4YWU5MGZi
MGEyOGQ5MzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdJbmxpbmVzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5jcHAKaW5kZXggZTkwMzlhNjg5NjZhZWNkNjUyZmI2ZDZjNzNiOTY5NzFmNjVj
ODJkNC4uNjQ5N2RjNjdiNWVlYTZjZjZhNWU5ZjUyNGFjY2EzNjA3ZGIzOGI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAKQEAg
LTkzLDQgKzkzLDMxIEBAIENvZGVCbG9ja0hhc2ggTmF0aXZlRXhlY3V0YWJsZTo6aGFzaEZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CiAgICAgcmV0dXJuIENvZGVCbG9ja0hh
c2goYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obV9jb25zdHJ1Y3RvcikpOwogfQogCitKU1N0cmlu
ZyogTmF0aXZlRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpTR2xvYmFsT2JqZWN0ICpnbG9iYWxP
YmplY3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNWYWx1ZSB2YWx1
ZSA9IGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAiZnVuY3Rpb24gIiwgbmFt
ZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKTsKKworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgbnVsbHB0cik7CisKKyAgICBKU1N0cmluZyogYXNTdHJpbmcgPSA6
OkpTQzo6YXNTdHJpbmcodmFsdWUpOworICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CisgICAg
bV9hc1N0cmluZy5zZXQodm0sIHRoaXMsIGFzU3RyaW5nKTsKKyAgICByZXR1cm4gYXNTdHJpbmc7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIE5hdGl2ZUV4ZWN1dGFibGU6
OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBOYXRpdmVFeGVjdXRhYmxlKiB0aGlzT2JqZWN0ID0ganNDYXN0PE5hdGl2ZUV4ZWN1dGFibGUq
PihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2FzU3RyaW5nKTsKK30KKworREVGSU5FX1ZJU0lU
X0NISUxEUkVOKE5hdGl2ZUV4ZWN1dGFibGUpOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAppbmRleCA3
NjZjOTZhZDQwNDk2MmJmNGZhNzNhMTk4MWFiODU5ODVjMTQyYzVkLi43ZjEyM2VmNzIzMzkxZDQx
ZTQ0NjE5ZTRjNWEwZTFkNmYzZTFlYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihOYXRpdmVFeGVjdXRhYmxlLCBtX2NvbnN0cnVj
dG9yKTsKICAgICB9CiAKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOwogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90byk7CiAgICAgICAgIAogICAgIERFQ0xBUkVfSU5GTzsKQEAgLTc2LDE0ICs3NywyNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqIHNpZ25hdHVyZUZvcihDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kKSBjb25zdDsKICAgICBJbnRyaW5zaWMgaW50cmluc2ljKCkgY29uc3Q7
CiAKKyAgICBKU1N0cmluZyogdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICB7CisgICAgICAgIGlmICghbV9hc1N0cmluZykKKyAgICAgICAgICAgIHJldHVybiB0b1N0
cmluZ1Nsb3coZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG1fYXNTdHJpbmcuZ2V0KCk7
CisgICAgfQorCisgICAgSlNTdHJpbmcqIGFzU3RyaW5nQ29uY3VycmVudGx5KCkgY29uc3QgeyBy
ZXR1cm4gbV9hc1N0cmluZy5nZXQoKTsgfQorICAgIHN0YXRpYyBpbmxpbmUgcHRyZGlmZl90IG9m
ZnNldE9mQXNTdHJpbmcoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTmF0aXZlRXhlY3V0YWJs
ZSwgbV9hc1N0cmluZyk7IH0KKwogcHJpdmF0ZToKICAgICBOYXRpdmVFeGVjdXRhYmxlKFZNJiwg
VGFnZ2VkTmF0aXZlRnVuY3Rpb24sIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIGNvbnN0cnVjdG9yKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgUmVmPEpJVENvZGU+JiYgY2FsbFRodW5rLCBS
ZWY8SklUQ29kZT4mJiBjb25zdHJ1Y3RUaHVuaywgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAg
IEpTU3RyaW5nKiB0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqKTsKKwogICAgIFRhZ2dlZE5h
dGl2ZUZ1bmN0aW9uIG1fZnVuY3Rpb247CiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9jb25z
dHJ1Y3RvcjsKIAogICAgIFN0cmluZyBtX25hbWU7CisgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5n
PiBtX2FzU3RyaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwNjEyNWEyMmQ0MmNkY2Ey
Mzg2MmYyNTc4NTA2ZmNlOTJmZGEzMWEuLjkzYjRhMmRkZjVkYTE1NDYxNmJhZWFjMzljNTVlOGM5
NWZlZjM4NmMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDYtMDMgIFRhZGV1IFphZ2FsbG8gIDx0emFn
YWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgT3B0aW1pemUgRnVuY3Rpb24ucHJvdG90eXBlLnRv
U3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjY0MTgKKyAgICAgICAgPHJkYXI6Ly83Nzg2MTg0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi10by1z
dHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZik6CisgICAgICAgIChDKToKKyAgICAgICAgKEMu
cHJvdG90eXBlLm1ldGhvZDEpOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kMik6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKHRlc3QyKToKKwogMjAyMS0wNS0yMiAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBFcmdvbm9taWMg
QnJhbmQgQ2hlY2tzIHByb3Bvc2FsIChgI3ggaW4gb2JqYCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
bWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODUyYjI4NDJiMGE2MDFj
NjhlYWE3MDlmY2Q5ZTM4ZDBiYTZhMDdhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvZnVuY3Rpb24tdG8tc3RyaW5nLmpzCkBAIC0wLDAgKzEsNDAgQEAKK2Z1bmN0
aW9uIGYoeCwgeSwgeikgeworICAgIC8vIGNvbW1lbnQgaW4gdGhlIGJvZHkKKyAgICBjb25zdCB3
ID0gNDI7CisgICAgcmV0dXJuIHcgKyB4ICsgeSArIHo7CisKK30KK25vSW5saW5lKGYpOworCitj
bGFzcyBDIHsKKyAgICAvLyBjb21tZW50IGluIHRoZSBjbGFzcworICAgIGNvbnN0cnVjdG9yKCkg
eworICAgIH0KKworICAgIG1ldGhvZDEoKSB7CisgICAgICAgIHJldHVybiAic29tZSBzdHJpbmci
OworICAgIH0KKworICAgIG1ldGhvZDIoKSB7CisgICAgICAgIHJldHVybiA0MjsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgZi50b1N0cmluZygpOworICAgIEMudG9TdHJpbmco
KTsKKyAgICBwcmludC50b1N0cmluZygpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAobGV0
IGkgPSAwOyBpIDwgMWU3OyArK2kpCisgICAgdGVzdCgpOworCitmdW5jdGlvbiB0ZXN0Mih4LCB5
LCB6KSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTY7ICsraSkgeworICAgICAgICBmKHgu
dG9TdHJpbmcoKSwgeS50b1N0cmluZygpLCB6LnRvU3RyaW5nKCksIHgudG9TdHJpbmcoKSwgeS50
b1N0cmluZygpKTsKKyAgICB9Cit9Citub0lubGluZSh0ZXN0Mik7CisKK3Rlc3QyKGYsIEMsIHBy
aW50KTsK
</data>
<flag name="commit-queue"
          id="451987"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430514</attachid>
            <date>2021-06-03 16:51:34 -0700</date>
            <delta_ts>2021-06-04 08:10:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226418-20210603165133.patch</filename>
            <type>text/plain</type>
            <size>47101</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li40MTYxMTBlZDFlMGM0YTky
NjZkMDYzNzJjZDk5MTFiZGUyNTE4ZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAyMS0wNi0wMyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAg
ICA8cmRhcjovLzc3ODYxODQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBjYWNoaW5nIHRvIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy4g
VGhpcyBpcyB1c2VkIGhlYXZpbHkgaW4gU3BlZWRvbWV0ZXIyLCBhbmQgcmVwZWF0ZWRseSByZWNv
bXB1dGluZyBhCisgICAgICAgIHN0cmluZyB3aGljaCBpcyBhIGNvbnN0YW50IGlzIGNvc3RseS4g
V2UgY2FjaGUgdGhlIHJlc3VsdHMgb2YgdG9TdHJpbmcgaW4gYWxsIGNhc2VzIGV4Y2VwdCBmb3Ig
Ym91bmQgZnVuY3Rpb25zLgorICAgICAgICBUbyBtYWtlIHRoaXMgd29yayBmb3IgYm91bmQgZnVu
Y3Rpb25zLCB3ZSdkIG5lZWQgdG8gYWRkIGEgbmV3IGZpZWxkIHRoZXkgY2FuIHVzZSBmb3IgdGhp
cyBjYWNoZS4gRm9yIG90aGVyCisgICAgICAgIGZ1bmN0aW9ucywgd2UgY2FjaGUgaXQgb24gdGhl
IGV4ZWN1dGFibGUgKGVpdGhlciBOYXRpdmVFeGVjdXRhYmxlIG9yIEZ1bmN0aW9uRXhlY3V0YWJs
ZSkuIFRoZSByZWFzb24gd2UgY2FuJ3QKKyAgICAgICAgZG8gdGhpcyBvbiB0aGUgZXhlY3V0YWJs
ZSBmb3IgYm91bmQgZnVuY3Rpb25zIGlzIHRoYXQgYWxsIGJvdW5kIGZ1bmN0aW9ucyBzaGFyZSB0
aGUgc2FtZSBleGVjdXRhYmxlLCBidXQKKyAgICAgICAgaW5kaXZpZHVhbCBib3VuZCBmdW5jdGlv
bnMgY2FuIGhhdmUgZGlmZmVyZW50IG5hbWVzLiBUaGUgcmVhc29uIGl0J3MgdmFsaWQgdG8gY2Fj
aGUgdGhlIHJlc3VsdHMgaW4gZ2VuZXJhbCBpcyB0aGF0IGEKKyAgICAgICAgZnVuY3Rpb24ncyBu
YW1lIGZpZWxkIGNhbid0IGJlIGNoYW5nZWQgZnJvbSBKUyBjb2RlIC0tIGl0J3Mgbm9uLXdyaXRh
YmxlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBGdW5jdGlvbi5wcm90b3R5cGUu
dG9TdHJpbmcgYW4gaW50cmluc2ljIGluIHRoZSBERkcvRlRMLiBXZSBlbWl0IGNvZGUgb24gdGhl
IGZhc3QgcGF0aAorICAgICAgICB3aGljaCByZWFkcyB0aGUgY2FjaGVkIHZhbHVlIGlmIGl0J3Mg
cHJlc2VudC4gSWYgbm90LCB3ZSBjYWxsIGludG8gdGhlIHNsb3cgcGF0aCwgd2hpY2ggd2lsbCBj
b21wdXRlCisgICAgICAgIHRoZSBjYWNoZWQgdmFsdWUgZm9yIG5vbiBib3VuZCBmdW5jdGlvbnMs
IG9yIGNvbXB1dGUgdGhlIHJlc3VsdCBmb3IgYm91bmQgZnVuY3Rpb25zLgorCisgICAgICAgIEkg
YWRkZWQgYSBuZXcgbWljcm9iZW5jaG1hcmsgdGhhdCBzcGVlZHMgdXAgYnkgPjM1eDoKKworICAg
ICAgICBmdW5jdGlvbi10by1zdHJpbmcgICAgIDIxOTcuNTk1MistMzAuNzExOCAgICBeICAgICA1
OS45ODYxKy0yLjU1NTAgICAgICAgIF4gZGVmaW5pdGVseSAzNi42MzUweCBmYXN0ZXIKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRy
aW5zaWNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZn
L0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpnZXRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0RXhlY3V0YWJsZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0RXhlY3V0YWJsZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRFeGVjdXRh
YmxlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUZ1bmN0
aW9uVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KToKKyAgICAgICAg
KiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9JbnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAg
KiBydW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1l
L0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmFzU3RyaW5nQ29uY3VycmVudGx5IGNvbnN0KToKKyAg
ICAgICAgKiBydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0
aXZlRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OnRvU3Ry
aW5nU2xvdyk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5J
bXBsKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKKwogMjAyMS0wNS0y
NiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBVbmNoZWNr
ZWRMb2NrIGV2ZW4gbGVzcyBpbiBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDVkZjY5M2VmZDdkNzAxYTQwNGIyNTc5YjY1Yzg5YWY4NDg0MGQyNTIu
LjRkMGE0NzJiNjNiY2QyOTA2MzllMDBkOWVlZDhmMWFhNzgxMGYxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTk0NCw2ICs5NDQsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXdJbmxpbmVzLmgKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCiAgICAgcnVudGltZS9K
U0JpZ0ludC5oCisgICAgcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAogICAgIHJ1bnRpbWUvSlND
Q29uZmlnLmgKICAgICBydW50aW1lL0pTQ0lubGluZXMuaAogICAgIHJ1bnRpbWUvSlNDSlNWYWx1
ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk0Mjc2MTEzNGRhMWY2MDk3NTdi
YjViODc1YWUyNmZhOTExYWI1MDQuLjZjMjcwN2FiZGM5YWNlZDhkYWVkYjZiZDcyMGFjMzQ5Nzgy
NjA3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzAzLDcgKzEzMDMsNyBA
QAogCQk4NkVDQTNGQTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2FyZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQ0EzRjkxMzJERjI1QTAw
MkIyQUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLzsgfTsKIAkJODZGM0VFQkQxNjhDREU5MzAwNzdC
OTJBIC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkYzRUVCOTE2OENDRjc1MDA3N0I5MkEgLyogT2JqQ0NhbGxi
YWNrRnVuY3Rpb24uaCAqLzsgfTsKIAkJODZGM0VFQkYxNjhDREU5MzAwNzdCOTJBIC8qIE9iamNS
dW50aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkYzRUVCNjE2ODU1QTVCMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLzsg
fTsKLQkJODZGQTlFOTIxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGQTlFOTAxNDJCQkIy
RTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovOyB9OworCQk4NkZBOUU5MjE0MkJCQjJF
MDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1
bmN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOEIzQkY1RTQxRTNEMzY4QjAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIzQkY1
RTMxRTNEMzY1QTAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9
OwogCQk4QjYwMTZGNjFGM0UzQ0MwMDBGOURFNkEgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
QjYwMTZGNDFGM0UzQ0MwMDBGOURFNkEgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBl
LmggKi87IH07CiAJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QjlGNkQ1NTFE
NTkxMkZBMDAxQzczOUYgLyogSXRlcmF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNDkzZjM2OGU1
ZWVlMGRjZGEzNmVlYmM2NzEzMTk2ZmIxYjBmNGUxMS4uOTA1MDhmNzJmZmU2MWIxY2Y3ZjAyMTc0
ZjllZjFjNTkzOGUxMDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjg1NSw2ICsyODU1LDE5
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgRnVuY3Rpb25Ub1N0cmluZzogeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUpIHsK
KyAgICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0
aW9uKj4obV92bSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKEpTU3RyaW5nKiBhc1N0cmluZyA9
IGZ1bmN0aW9uLT5hc1N0cmluZ0NvbmN1cnJlbnRseShtX3ZtKSkgeworICAgICAgICAgICAgICAg
IHNldENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShhc1N0cmluZykpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldEZvck5v
ZGUobm9kZSwgbV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CiAgICAgICAgIEpTVmFs
dWUgcmFkaXhWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWU7CiAgICAgICAg
IGlmIChyYWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGNjZTc4MmMxZTNj
NzgwOTVhYTRmNTc1ZjAxZDJmNjU1YjQzMWJmMjIuLjkzOTk0Nzk2YWZkZDkwMjQyNmI0Y2ZhNDg1
MTk3YTQxMjI1YWIxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNzQwLDYgKzM3NDAsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRy
aW5zaWMKICNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5n
SW50cmluc2ljOiB7CisgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAg
ICAgIE5vZGUqIGZ1bmN0aW9uID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVk
aW5nVGhpcygwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0Tm9k
ZSA9IGFkZFRvR3JhcGgoRnVuY3Rpb25Ub1N0cmluZywgZnVuY3Rpb24pOworICAgICAgICAgICAg
c2V0UmVzdWx0KHJlc3VsdE5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGRjYTZj
NGFmMjlhOTM1MWUwNWZmYzJmZjIxMWE1NWE2ZWY5NWUyMDIuLjdlZWM0YWM2ZDk2MjE2MWRmZDJl
NTI1ZWY5ZDUyNWQ1ODc3MTVhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCkBAIC0xODE4LDYgKzE4MTgsMTAgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KKworICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZzoKKyAgICAgICAg
ZGVmKFB1cmVWYWx1ZShub2RlKSk7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2Fz
ZSBDb3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIFN1cGVyU2FtcGxlckJlZ2luOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDAyODRhN2UzMDRhMDA2ZTEwZTFhMzM2
NjAxZWJhN2JiYWY3OTMyYmUuLjYxOGVkYWU0MTJlNWRkMmJhZjkxMGRjZmYzODFhMWI3YTIxYjA3
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI4OSw2ICsy
ODksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBE
aXJlY3RUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAg
ICBjYXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CiAgICAgY2Fz
ZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICBjYXNlIEdldEJ5SWREaXJl
Y3RGbHVzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGY2NWY5YjU3OTBlNjZlMWQ5MmUyMTJjN2ExZTU1NGU4OWQ4YThiZWEuLjM3M2U1NjBlMjI3
MjBkNWIzYWI5ZmE5NDVlYWY4NGY3Yzk5MTM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTk3Myw2ICsxOTczLDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRnVuY3Rpb25Ub1N0
cmluZzogeworICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIFNldFByaXZh
dGVCcmFuZDogewogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMjlmMzg4YWZjZDM4
NzUzOGFmN2U0NDQyYWQwZWZkNmZkM2Q1YjgxMi4uZmRiZTRmNThiN2MzNmM4MzM2OTMzM2EyMTky
MzE3N2NmYWI1ZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApA
QCAtNDI4LDYgKzQyOCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhDYWxsTnVtYmVyQ29uc3RydWN0b3IsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRnVuY3Rpb25Ub1N0cmluZywg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFrZVJvcGUsIE5vZGVSZXN1bHRKUykgXAogICAg
IG1hY3JvKEluQnlWYWwsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEluQnlJZCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlMzM2
OThlOGU2NTFhMzY5MzE0OWJjMDgyOWM1NjM5YmJkYzUzMTkzLi45YTJlYmZmMWQ0ZTk0YmExMDY4
NzNkYWVkZmMwNDliNjVhMDQ0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTI1NjAsNiArMjU2MCwxNSBAQCBKU0NfREVGSU5FX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgY2hhciosIChKU0ds
b2JhbAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihudW1iZXJUb1N0cmluZyh2
bSwgdmFsdWUsIHJhZGl4KSk7CiB9CiAKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRp
b25GdW5jdGlvblRvU3RyaW5nLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0Z1bmN0aW9uKiBmdW5jdGlvbikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKKyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7CisKKyAgICByZXR1cm4gZnVuY3Rpb24tPnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7
Cit9CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJT
dHJpbmcsIEpTU3RyaW5nKiwgKFZNKiB2bVBvaW50ZXIsIGludDMyX3QgY2hhcmFjdGVyKSkKIHsK
ICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAppbmRleCA1MmNkYmU4MjY2MTZlYmM0YTkyZDA1OGIwMDFlYzM4ZWZjMmEzZDQ4
Li45OWMzOTI1MWQxZjU5OWNjYjYxMjAxYjA1ZWIwNWYwMWFiYWRlYjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRG91YmxlVG9TdHJpbmcsIGNoYXIqLCAoSlNH
bG9iYWxPYmplY3QqLCBkb3ViCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbklu
dDMyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIGludDMy
X3QsIGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW50NTJU
b1N0cmluZ1dpdGhWYWxpZFJhZGl4LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgaW50NjRfdCwg
aW50MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Eb3VibGVUb1N0
cmluZ1dpdGhWYWxpZFJhZGl4LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBpbnQz
Ml90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZ1bmN0aW9uVG9TdHJp
bmcsIEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNGdW5jdGlvbiopKTsKIAogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ob3JtYWxpemVNYXBLZXlIZWFwQmlnSW50LCBF
bmNvZGVkSlNWYWx1ZSwgKFZNKiwgSlNCaWdJbnQqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvbk1hcEhhc2gsIFVDUFVTdHJpY3RJbnQzMiwgKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUgaW5wdXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNWI1ODBi
YjU0M2MxOWRjYWJmODdhMDRmYzc4MzI3NTgyNDA4MWRjMS4uOGY3ZTM1OTUxN2ZjMGFmOGNmYmUz
ZTU1ODY5Yzk4NzQxOWY5MTJjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExNTgsNiAr
MTE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBj
YXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBUb1N0cmluZzoKKyAgICAg
ICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOgogICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0
aFJhZGl4OgogICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFu
dDoKICAgICAgICAgY2FzZSBNYWtlUm9wZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjgxMzE3YTNjNTMwZTA5MGEwMzAyYmU5Yzg4Y2Q3Yjc1
Y2IzNDlhYS4uZGIyMjE5YTE0Nzc2NDc4Y2IwZTlhODdiMDliMWQ1ZDdjM2NiMTJhMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI3Myw2ICsy
NzMsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVG9Cb29sZWFuOgogICAg
IGNhc2UgTG9naWNhbE5vdDoKICAgICBjYXNlIFRvU3RyaW5nOgorICAgIGNhc2UgRnVuY3Rpb25U
b1N0cmluZzoKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoK
ICAgICBjYXNlIFN0ckNhdDoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzNm
OTExNGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhmOC4uOWI0MmE2NmZkMTZjMTBhYTQ4
ZGZjZmU0OWI2OTU2NWQ3OTZhMWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU0Fy
cmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCkBAIC0xMDUxNCw2ICsxMDUxNSw0
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25z
dHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgZ2V0
RXhlY3V0YWJsZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcgZnVuY3Rpb25HUFIsIEdQUlJlZyBy
ZXN1bHRHUFIpCit7CisgICAgaml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rp
b25HUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3Vs
dEdQUik7CisgICAgYXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxI
ZWxwZXJzOjpaZXJvLCByZXN1bHRHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVu
Y3Rpb246OnJhcmVEYXRhVGFnKSk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBK
U0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3VsdEdQUik7CisgICAgaGFzRXhlY3V0YWJsZS5s
aW5rKCZqaXQpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0
cmluZyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgZXhlY3V0YWJsZSh0aGlzKTsK
KyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93Q2FzZXM7CisKKyAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVu
Y3Rpb24uZ3ByKCksIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOworCisgICAgbV9qaXQu
ZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgZnVuY3Rpb24uZ3ByKCksIHJlc3VsdC5ncHIoKSwgZXhl
Y3V0YWJsZS5ncHIoKSk7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkp
OworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5hbF92PEpTQm91bmRGdW5jdGlvbj4sICJX
ZSBkb24ndCBoYW5kbGUgc3ViY2xhc3NlcyB3aGVuIGNvbXBhcmluZyBjbGFzc0luZm8gYmVsb3ci
KTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVx
dWFsLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHIoSlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkp
KSk7CisKKyAgICBnZXRFeGVjdXRhYmxlKG1faml0LCBmdW5jdGlvbi5ncHIoKSwgZXhlY3V0YWJs
ZS5ncHIoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOYXRpdmVFeGVjdXRhYmxlID0gbV9q
aXQuYnJhbmNoOChKSVRDb21waWxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGV4ZWN1
dGFibGUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIo
TmF0aXZlRXhlY3V0YWJsZVR5cGUpKTsKKworICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5ncHIoKSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRP
ZlJhcmVEYXRhKCkpLCByZXN1bHQuZ3ByKCkpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7CisgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZBc1N0cmluZ0luUmFyZURhdGEoKSksIHJlc3VsdC5ncHIo
KSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udGludWF0aW9uID0gbV9qaXQuanVtcCgpOwor
CisgICAgaXNOYXRpdmVFeGVjdXRhYmxlLmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGV4ZWN1dGFibGUuZ3ByKCksIE5hdGl2ZUV4ZWN1dGFi
bGU6Om9mZnNldE9mQXNTdHJpbmcoKSksIHJlc3VsdC5ncHIoKSk7CisKKyAgICBjb250aW51YXRp
b24ubGluaygmbV9qaXQpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7CisKKyAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25GdW5jdGlv
blRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5j
dGlvbi5ncHIoKSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworfQor
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50KE5vZGUqIG5vZGUpCiB7CiAgICAgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZh
bGlkUmFkaXhDb25zdGFudChub2RlLCBub2RlLT52YWxpZFJhZGl4Q29uc3RhbnQoKSk7CkBAIC0x
MzI2MywxNCArMTMzMDUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0RXhlY3V0
YWJsZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBmdW5jdGlvbik7Ci0gICAgR1BSUmVnIGZ1bmN0aW9uR1BSID0gZnVuY3Rpb24uZ3ByKCk7Ci0g
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBzcGVjdWxhdGVDZWxsVHlw
ZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb25HUFIsIFNwZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5
cGUpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIs
IEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdEdQUik7
Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gbV9qaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBl
cnM6Olplcm8sIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlv
bjo6cmFyZURhdGFUYWcpKTsKLSAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhyZXN1bHRHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNG
dW5jdGlvbjo6cmFyZURhdGFUYWcpLCByZXN1bHRHUFIpOwotICAgIGhhc0V4ZWN1dGFibGUubGlu
aygmbV9qaXQpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICBzcGVjdWxh
dGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb24uZ3ByKCksIFNwZWNGdW5jdGlvbiwg
SlNGdW5jdGlvblR5cGUpOworICAgIGdldEV4ZWN1dGFibGUobV9qaXQsIGZ1bmN0aW9uLmdwcigp
LCByZXN1bHQuZ3ByKCkpOworICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEdldHRlcihOb2RlKiBub2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUyZTFl
OGNkNTJhMDQ4NmU2MTBjNWM0OTBjM2JhMGE5MTdkYzg5ZjMuLjJlMjVkYjg0MDI3YmZjOTQwOGUw
N2FjM2JmZWY5YjFlY2MxMjZiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTEyMjcsNiArMTIyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGVtaXRTd2l0Y2goTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxs
U3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YoTm9kZSopOworICAgIHZvaWQgY29tcGls
ZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5n
V2l0aFJhZGl4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxp
ZFJhZGl4Q29uc3RhbnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0
aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBi
NTdjMzdhYTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li41NmRhNDQ5ZTEyNGYyMjU3
YmFiYzUzNDI1M2ZkNmYwMmQzNmU0NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyMDUsNiArMzIwNSwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBp
bGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CisgICAg
ICAgIGNvbXBpbGVGdW5jdGlvblRvU3RyaW5nKG5vZGUpOworICAgICAgICBicmVhazsKICAgICAg
ICAgCiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6IHsKICAgICAgICAgY29tcGlsZU5ld1N0cmlu
Z09iamVjdChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCmluZGV4IGI5MTE4YjYyZTg3ZDk3MGFjNTQ2MWY2M2JkM2MzODBmYjhi
MDEyNjAuLjhlMTRlOTRmNWVlNDllMTdmYzhjMDUyZDk0ZTRjMDg5ODcyYzViOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAt
Mzc5MCw2ICszNzkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmlu
Z1ZhbHVlT2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRnVuY3Rp
b25Ub1N0cmluZzoKKyAgICAgICAgY29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcobm9kZSk7CisgICAg
ICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDogewogICAgICAg
ICBjb21waWxlTmV3U3RyaW5nT2JqZWN0KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCBiMDY4ODRiNTI4
ZDI1ZmRlZGQ0NmY4MzkxODQ5OTQyOTIyMTM2NDZlLi4yZTJmMDdkZmM3ZThjMTNkZGIwZWRkNWEy
ZDA3YTVkODcyZTE3OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNzcsNiArNzcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFj
aXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3Jv
KERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0
T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmll
ZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFy
Z3VtZW50c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0YWJsZV9yYXJl
RGF0YSwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpIFwKKyAgICBtYWNy
byhGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZywgRnVuY3Rpb25FeGVjdXRhYmxl
OjpvZmZzZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJl
RGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0
T2ZBbGxvY2F0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwK
ICAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3Byb3RvdHlwZSwgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlByb3RvdHlwZSgpKSBcCkBAIC0xMTksNiArMTIxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpTUm9wZVN0cmlu
Z19maWJlcjIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkgXAogICAgIG1hY3JvKEpT
U2NvcGVfbmV4dCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpIFwKICAgICBtYWNybyhKU1N5bWJv
bFRhYmxlT2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5
bWJvbFRhYmxlKCkpIFwKKyAgICBtYWNybyhOYXRpdmVFeGVjdXRhYmxlX2FzU3RyaW5nLCBOYXRp
dmVFeGVjdXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5nKCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmpl
Y3RfcmVnRXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcsIFJlZ0V4cE9iamVjdDo6b2Zm
c2V0T2ZSZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZygpKSBcCiAgICAgbWFjcm8o
UmVnRXhwT2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgp
KSBcCiAgICAgbWFjcm8oU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlLCBPQkpFQ1RfT0ZGU0VU
T0YoU2hhZG93Q2hpY2tlbjo6UGFja2V0LCBjYWxsZWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNGY2ZTAzN2NiMTFjNTI0YjkxMTEz
OWUwNGM5ZjA1ZTZjNGRkYjg3MC4uNDdlOWI3ZDMyZjczZmViZTk4OTVmNmI3NGFjMThkNTM5NDcz
N2Y4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMjE3LDYgKzIxNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgY2FzZSBUb051bWVyaWM6CiAgICAg
Y2FzZSBUb1N0cmluZzoKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CiAgICAgY2FzZSBUb09i
amVjdDoKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxTdHJp
bmdDb25zdHJ1Y3RvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAppbmRleCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2RhZDhiZjM1Li41
MDc2Njg0NjhjMDJjZjZhNjFiMTIxZjliNjdhYzhkMGRiYTI0Y2U0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAj
aW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQm91
bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVy
YXRvci5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTExOTYsNiArMTE5
Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVmFsdWVPZjoKICAgICAgICAgICAg
IGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOgorICAg
ICAgICAgICAgY29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRvUHJpbWl0aXZlOgogICAgICAgICAgICAgY29tcGlsZVRvUHJpbWl0aXZl
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM3NzQsMTQgKzM3NzgsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgc3BlY3VsYXRlKEJhZElkZW50LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lm5v
dEVxdWFsKHN0cmluZ0ltcGwsIG1fb3V0LmNvbnN0SW50UHRyKHVpZCkpKTsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKKyAgICBMVmFsdWUgZ2V0RXhlY3V0YWJsZShM
VmFsdWUgZnVuY3Rpb24pCiAgICAgewogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24g
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1f
b3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9ub2RlLT5jaGlsZDEoKSwgY2Vs
bCk7CiAKLSAgICAgICAgTFZhbHVlIHJhcmVEYXRhVGFncyA9IG1fb3V0LmxvYWRQdHIoY2VsbCwg
bV9oZWFwcy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGVPclJhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVl
IHJhcmVEYXRhVGFncyA9IG1fb3V0LmxvYWRQdHIoZnVuY3Rpb24sIG1faGVhcHMuSlNGdW5jdGlv
bl9leGVjdXRhYmxlT3JSYXJlRGF0YSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RFeGVj
dXRhYmxlID0gbV9vdXQuYW5jaG9yKHJhcmVEYXRhVGFncyk7CiAgICAgICAgIG1fb3V0LmJyYW5j
aChtX291dC50ZXN0SXNaZXJvUHRyKHJhcmVEYXRhVGFncywgbV9vdXQuY29uc3RJbnRQdHIoSlNG
dW5jdGlvbjo6cmFyZURhdGFUYWcpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShoYXNS
YXJlRGF0YSkpOwogCkBAIC0zNzkxLDcgKzM3OTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlw
ZSgpLCBmYXN0RXhlY3V0YWJsZSwgc2xvd0V4ZWN1dGFibGUpKTsKKyAgICAgICAgcmV0dXJuIG1f
b3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0RXhlY3V0YWJsZSwgc2xvd0V4ZWN1dGFibGUpOwor
ICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEV4ZWN1dGFibGUoKQorICAgIHsKKyAgICAgICAg
TFZhbHVlIGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxh
dGVGdW5jdGlvbihtX25vZGUtPmNoaWxkMSgpLCBjZWxsKTsKKyAgICAgICAgTFZhbHVlIGV4ZWN1
dGFibGUgPSBnZXRFeGVjdXRhYmxlKGNlbGwpOworICAgICAgICBzZXRKU1ZhbHVlKGV4ZWN1dGFi
bGUpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheWlmeSgpCkBAIC04MjIwLDYg
KzgyMzAsNTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQorCisgICAgdm9pZCBjb21waWxlRnVuY3Rpb25Ub1N0cmluZygpCisgICAgeworICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9v
cmlnaW4uc2VtYW50aWMpOworCisgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJvdW5kRnVuY3Rpb25D
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZnVuY3Rpb25FeGVj
dXRhYmxlQ2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5hdGl2
ZUV4ZWN1dGFibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
dGVzdFB0ciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVE
YXRhID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgIExWYWx1ZSBmdW5jdGlvbiA9IGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCks
IGZ1bmN0aW9uKTsKKworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShm
dW5jdGlvbik7CisgICAgICAgIExWYWx1ZSBjbGFzc0luZm8gPSBtX291dC5sb2FkUHRyKHN0cnVj
dHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKTsKKyAgICAgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX2ZpbmFsX3Y8SlNCb3VuZEZ1bmN0aW9uPiwgIldlIGRvbid0IGhhbmRsZSBzdWJj
bGFzc2VzIHdoZW4gY29tcGFyaW5nIGNsYXNzSW5mbyBiZWxvdyIpOworICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQuZXF1YWwoY2xhc3NJbmZvLCBtX291dC5jb25zdEludFB0cihKU0JvdW5kRnVu
Y3Rpb246OmluZm8oKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUobm90Qm91bmRGdW5jdGlv
bkNhc2UpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KG5vdEJvdW5kRnVuY3Rpb25DYXNlLCBuYXRpdmVFeGVjdXRhYmxlQ2FzZSk7CisgICAgICAgIExW
YWx1ZSBleGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZShmdW5jdGlvbik7CisgICAgICAgIG1fb3V0
LmJyYW5jaChpc1R5cGUoZXhlY3V0YWJsZSwgTmF0aXZlRXhlY3V0YWJsZVR5cGUpLCB1bnN1cmUo
bmF0aXZlRXhlY3V0YWJsZUNhc2UpLCB1bnN1cmUoZnVuY3Rpb25FeGVjdXRhYmxlQ2FzZSkpOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5hdGl2ZUV4ZWN1dGFibGVDYXNlLCBmdW5jdGlvbkV4
ZWN1dGFibGVDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbmF0aXZlUmVzdWx0ID0gbV9v
dXQuYW5jaG9yKG1fb3V0LmxvYWRQdHIoZXhlY3V0YWJsZSwgbV9oZWFwcy5OYXRpdmVFeGVjdXRh
YmxlX2FzU3RyaW5nKSk7CisgICAgICAgIG1fb3V0Lmp1bXAodGVzdFB0cik7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oZnVuY3Rpb25FeGVjdXRhYmxlQ2FzZSwgdGVzdFB0cik7CisgICAgICAg
IExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoZXhlY3V0YWJsZSwgbV9oZWFwcy5GdW5j
dGlvbkV4ZWN1dGFibGVfcmFyZURhdGEpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90
TnVsbChyYXJlRGF0YSksIHVzdWFsbHkoaGFzUmFyZURhdGEpLCByYXJlbHkoc2xvd0Nhc2UpKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNSYXJlRGF0YSwgc2xvd0Nhc2UpOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayBmdW5jdGlvblJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5sb2Fk
UHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhX2FzU3RyaW5n
KSk7CisgICAgICAgIG1fb3V0Lmp1bXAodGVzdFB0cik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8odGVzdFB0ciwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGFzU3RyaW5nID0gbV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIG5hdGl2ZVJlc3VsdCwgZnVuY3Rpb25SZXN1bHQpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFzU3RyaW5nKTsK
KyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwoYXNTdHJpbmcpLCB1c3VhbGx5KGNv
bnRpbnVhdGlvbiksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHNsb3dDYXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25GdW5jdGlv
blRvU3RyaW5nLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBmdW5jdGlvbikpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50
ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlVG9QcmltaXRpdmUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDE4NmZiMjRmYWJhMGM0
NmNlYmUwMjdlYTU2YzA3MmE3NWM5Y2FjYjguLmE0YjI5M2NkNWFmODQxN2U0M2E3MjhhYTc0ZWE3
ZmIyMjk3ZmZiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNzksNiArNzksNyBAQCB2b2lkIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRFeGVjdXRhYmxlKTsK
ICAgICBpZiAoUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS5nZXQo
KSkgewogICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9T
dHJ1Y3R1cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+bV9hc1N0cmluZyk7
CiAgICAgICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gcmFyZURhdGEtPm1fdGVtcGxh
dGVPYmplY3RNYXAuZ2V0KCkpIHsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlzT2Jq
ZWN0LT5jZWxsTG9jaygpIH07CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1hcCkK
QEAgLTExNiw2ICsxMTcsODEgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rp
b25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogICAgIHJldHVybiAqbV9yYXJlRGF0
YTsKIH0KIAorSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBBU1NFUlQobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9hc1N0cmluZyk7
CisKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGNvbnN0IGF1dG8mIGNhY2hlID0gWyZdKEpTU3RyaW5nKiBhc1N0cmluZykgeworICAgICAgICBX
VEY6OnN0b3JlU3RvcmVGZW5jZSgpOworICAgICAgICBtX3JhcmVEYXRhLT5tX2FzU3RyaW5nLnNl
dCh2bSwgdGhpcywgYXNTdHJpbmcpOworICAgICAgICByZXR1cm4gYXNTdHJpbmc7CisgICAgfTsK
KworICAgIGNvbnN0IGF1dG8mIGNhY2hlSWZOb0V4Y2VwdGlvbiA9IFsmXShKU1ZhbHVlIHZhbHVl
KSAtPiBKU1N0cmluZyogeworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IG51bGxwdHIpOworICAgICAgICByZXR1cm4gY2FjaGUoOjpKU0M6OmFzU3RyaW5nKHZhbHVlKSk7
CisgICAgfTsKKworICAgIGlmIChpc0J1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICByZXR1cm4g
Y2FjaGVJZk5vRXhjZXB0aW9uKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAi
ZnVuY3Rpb24gIiwgbmFtZSgpLnN0cmluZygpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0i
KSk7CisKKyAgICBpZiAoaXNDbGFzcygpKQorICAgICAgICByZXR1cm4gY2FjaGUoanNTdHJpbmco
dm0sIGNsYXNzU291cmNlKCkudmlldygpLnRvU3RyaW5nKCkpKTsKKworICAgIFN0cmluZyBmdW5j
dGlvbkhlYWRlcjsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhl
YWRlciA9ICJmdW5jdGlvbiogIjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0
aW9uICI7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlh
bGl6ZXJNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0dlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CisgICAgICAgIGZ1bmN0aW9u
SGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uKiAiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBTdHJpbmdWaWV3IHNyYyA9IHNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAorICAgICAg
ICBwYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0
KCkgKyBzb3VyY2UoKS5sZW5ndGgoKSk7CisKKyAgICBTdHJpbmcgbmFtZSA9IHRoaXMtPm5hbWUo
KS5zdHJpbmcoKTsKKyAgICBpZiAobmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFyRGVmYXVs
dFByaXZhdGVOYW1lLnN0cmluZygpKQorICAgICAgICBuYW1lID0gZW1wdHlTdHJpbmcoKTsKKyAg
ICByZXR1cm4gY2FjaGVJZk5vRXhjZXB0aW9uKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFs
T2JqZWN0LCBmdW5jdGlvbkhlYWRlciwgbmFtZSwgc3JjKSk7Cit9CisKIHZvaWQgRnVuY3Rpb25F
eGVjdXRhYmxlOjpvdmVycmlkZUluZm8oY29uc3QgRnVuY3Rpb25PdmVycmlkZUluZm8mIG92ZXJy
aWRlSW5mbykKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmlu
ZGV4IGJhZGNiNzg1MGZiNmY5MzY1NTZjZTQ5YzI2MTYwMmM1OTU5ZDRmZGEuLjhiYjUwZGI1YWQy
ZmEwYTgxM2UyYTM3OGQ0ZmVjN2NmNjI3NjkzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0yODUsNiArMjg1LDE3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKIAorICAg
IEpTU3RyaW5nKiB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCopOworICAgIEpTU3RyaW5nKiBhc1N0
cmluZ0NvbmN1cnJlbnRseSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fYXNTdHJpbmcuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qg
b2Zmc2V0T2ZSYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1
dGFibGUsIG1fcmFyZURhdGEpOyB9CisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0
T2ZBc1N0cmluZ0luUmFyZURhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEs
IG1fYXNTdHJpbmcpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVC
YXNlOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5
RnVuY3Rpb24pOwpAQCAtMzA0LDYgKzMxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVk
IG1fdHlwZVByb2ZpbGluZ0VuZE9mZnNldCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90ZW1wbGF0ZU9iamVjdE1hcDsKICAgICAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmU7CisgICAg
ICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4gbV9hc1N0cmluZzsKICAgICB9OwogCiAgICAgUmFy
ZURhdGEmIGVuc3VyZVJhcmVEYXRhKCkKQEAgLTMxNCw2ICszMjYsOCBAQCBwcml2YXRlOgogICAg
IH0KICAgICBSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGFTbG93KCk7CiAKKyAgICBKU1N0cmluZyog
dG9TdHJpbmdTbG93KEpTR2xvYmFsT2JqZWN0Kik7CisKICAgICAvLyBGSVhNRTogV2UgY2FuIG1l
cmdlIHJhcmVEYXRhIHBvaW50ZXIgYW5kIHRvcC1sZXZlbCBleGVjdXRhYmxlIHBvaW50ZXIuIEZp
cnN0IHRpbWUsIHNldHRpbmcgcGFyZW50LgogICAgIC8vIElmIFJhcmVEYXRhIGlzIHJlcXVpcmVk
LCBtYXRlcmlhbGl6ZSBSYXJlRGF0YSwgc3dhcCBpdCwgYW5kIHN0b3JlIHRvcC1sZXZlbCBleGVj
dXRhYmxlIHBvaW50ZXIgaW5zaWRlIFJhcmVEYXRhLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAppbmRleCA0NTI5
OWMzMzZmODVmYzIyMzU5YmJmZDc0YzY5NWZmZWY3M2E3NGI2Li5jOWEwYjEyMjQwNDMzMjk3MWEx
NmMyOGE2ZDE1ZjU0ZWYzZjUwZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCkBAIC0zNSw1ICszNSwx
MyBAQCBpbmxpbmUgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25h
bGx5KFZNJiB2bSkKICAgICBtX3NpbmdsZXRvbi5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSh2bSk7
CiB9CiAKK0pTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlUmFy
ZURhdGEoKTsKKyAgICBpZiAoIXJhcmVEYXRhLm1fYXNTdHJpbmcpCisgICAgICAgIHJldHVybiB0
b1N0cmluZ1Nsb3coZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gcmFyZURhdGEubV9hc1N0cmlu
Zy5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCAxNGYzNzNhOGZh
MDNhZGJiZjZkZmNiZWM4MTJhMjAzMDg5ODg2YmFjLi5kZjI1ZmMwNjlmNDdmNzRmMWVjNTk2Mjlj
NjUzYzk1Y2NlZmNmODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC01NCw4ICs1NCw3IEBAIHZvaWQgRnVuY3Rpb25Q
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2
b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1
bmN0aW9uKiogYXBwbHlGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGhhc0luc3RhbmNlU3ltYm9sRnVu
Y3Rpb24pCiB7Ci0gICAgSlNGdW5jdGlvbiogdG9TdHJpbmdGdW5jdGlvbiA9IEpTRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5z
dHJpbmcoKSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7Ci0gICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCB0b1N0cmluZ0Z1bmN0
aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU3RyaW5nUHVibGljTmFtZSgpLCBmdW5j
dGlvblByb3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMCwgRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYyk7CiAKICAgICAq
YXBwbHlGdW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KHZtLCBnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5
UHVibGljTmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUFwcGx5Q29kZUdlbmVyYXRvcih2bSksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAq
Y2FsbEZ1bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
dm0sIGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1
YmxpY05hbWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTgxLDU4
ICs4MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1RvU3Ry
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhl
cml0czxKU0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CiAgICAgICAgIEludGVncml0eTo6YXVkaXRT
dHJ1Y3R1cmVJRCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBpZiAoZnVu
Y3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGds
b2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBb
bmF0aXZlIGNvZGVdXG59IikpKTsKLQotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7Ci0gICAgICAgIGlmIChleGVjdXRhYmxl
LT5pc0NsYXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBleGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpKSk7Ci0KLSAg
ICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyOwotICAgICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUt
PnBhcnNlTW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yV3JhcHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5j
dGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKLSAg
ICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6Ci0gICAgICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok1vZHVsZUFuYWx5emVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxl
RXZhbHVhdGVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlN
b2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2Rl
OgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1v
ZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlvbiAiOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25N
b2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVy
TW9kZToKLSAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gIiI7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6Ci0g
ICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6Ci0gICAgICAgICAg
ICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiAiOwotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6
Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyAiOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBl
ckZ1bmN0aW9uTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJh
dG9yV3JhcHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3lu
YyBmdW5jdGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAg
U3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRS
YW5nZSgKLSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAot
ICAgICAgICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBleGVjdXRh
YmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCBm
dW5jdGlvbkhlYWRlciwgZnVuY3Rpb24tPm5hbWUodm0pLCBzb3VyY2UpKSk7CisgICAgICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZ1bmN0aW9uLT50b1N0cmlu
ZyhnbG9iYWxPYmplY3QpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxJ
bnRlcm5hbEZ1bmN0aW9uPih2bSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRyaW5zaWMuY3BwCmluZGV4IDE0NGJhM2NjNmE2N2ZkYjYwYmM0ODAxZGUzYmE3YmIyZmQwNjY0
MjkuLjk4NzU4YzZhZWJkNWE5MTBiNzMwOWIwM2FjODU1N2I2Njg0ZjhjZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMjc1LDYgKzI3NSw4IEBA
IGNvbnN0IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAg
cmV0dXJuICJBdG9taWNzWG9ySW50cmluc2ljIjsKICAgICBjYXNlIFBhcnNlSW50SW50cmluc2lj
OgogICAgICAgICByZXR1cm4gIlBhcnNlSW50SW50cmluc2ljIjsKKyAgICBjYXNlIEZ1bmN0aW9u
VG9TdHJpbmdJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiRnVuY3Rpb25Ub1N0cmluZ0ludHJp
bnNpYyI7CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOgogICAgICAgICByZXR1
cm4gIlR5cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMiOwogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVM
ZW5ndGhJbnRyaW5zaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRyaW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5o
CmluZGV4IDdhOWNkNzAyOWUzOGZkYzNmMTEwNTA5MTRkNGRkMjBiNTNkYTM1MmEuLjliZTg1MmM5
NmJjNzA5MGJmMjk3NmJlYjkxZmRhNjk1NGNlNzgxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludHJpbnNpYy5oCkBAIC0xNTMsNiArMTUzLDcgQEAgZW51bSBJbnRyaW5zaWMg
OiB1aW50OF90IHsKICAgICBBdG9taWNzV2FpdEludHJpbnNpYywKICAgICBBdG9taWNzWG9ySW50
cmluc2ljLAogICAgIFBhcnNlSW50SW50cmluc2ljLAorICAgIEZ1bmN0aW9uVG9TdHJpbmdJbnRy
aW5zaWMsCiAKICAgICAvLyBHZXR0ZXIgaW50cmluc2ljcy4KICAgICBUeXBlZEFycmF5TGVuZ3Ro
SW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cAppbmRleCBmYTVhZWNkMTdjMWNlZmM5ZDYyOThkZDcyMjgzOWVjZjQ1ZWRmMzBiLi40YjhlOWY5
YTdiYmViZDM4OTc1YzViNWNhMDUzNWMwZDU1ZWI5ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMjQ3LDYgKzI0NywxOSBAQCBjb25zdCBT
dHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiB2bSkKICAgICByZXR1
cm4ganNFeGVjdXRhYmxlKCktPmVjbWFOYW1lKCkuc3RyaW5nKCk7CiB9CiAKK0pTU3RyaW5nKiBK
U0Z1bmN0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGluaGVyaXRzPEpTQm91bmRG
dW5jdGlvbj4odm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nh
c3Q8SlNCb3VuZEZ1bmN0aW9uKj4odGhpcyk7CisgICAgICAgIHJldHVybiBhc1N0cmluZyhqc01h
a2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5u
YW1lU3RyaW5nKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKKyAgICB9CisKKyAg
ICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2
ZUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKCkpLT50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAg
IHJldHVybiBqc0V4ZWN1dGFibGUoKS0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKK30KKwogY29u
c3QgU291cmNlQ29kZSogSlNGdW5jdGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7CiAgICAgaWYg
KGlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKaW5kZXggYmNjMmU4MTBmYzZlOTY2OTM4NWQxODllNTE1MTc5YjJlYjdh
YTRhYy4uODJhZmYxZDI2MTNhNDY1Y2Y3ZDQzMWY3ZWQxYzcwMDlhMDhhMGQ1MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtOTAsNiArOTAsOSBAQCBw
dWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIG5hbWUoVk0mKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBTdHJpbmcgZGlzcGxheU5hbWUoVk0mKTsKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBjb25zdCBTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJik7CisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBK
U1N0cmluZyogYXNTdHJpbmdDb25jdXJyZW50bHkoVk0mKSBjb25zdDsKIAogICAgIEV4ZWN1dGFi
bGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAppbmRleCAyZDEwYjNkYmFlYTVlMDhh
ZDA5NDE0MmQyNDFjYWMzMGNmZGE4OGM0Li4yNWQ2MDk0MzBiYjdkZWI1ZWNiMGFkOTcyMTJlODhm
OTg3YTVkYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb25JbmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIk5hdGl2ZUV4ZWN1dGFibGUuaCIKIApA
QCAtMTU2LDQgKzE1NywxMyBAQCBpbmxpbmUgRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6
ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShKU0dsb2JhbAogICAgIHJldHVybiBy
YXJlRGF0YTsKIH0KIAoraW5saW5lIEpTU3RyaW5nKiBKU0Z1bmN0aW9uOjphc1N0cmluZ0NvbmN1
cnJlbnRseShWTSYgdm0pIGNvbnN0Cit7CisgICAgaWYgKGluaGVyaXRzPEpTQm91bmRGdW5jdGlv
bj4odm0pKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNIb3N0RnVuY3Rpb24o
KSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKCkpLT5hc1N0cmluZ0NvbmN1cnJlbnRseSgpOworICAgIHJldHVybiBqc0V4ZWN1dGFibGUo
KS0+YXNTdHJpbmdDb25jdXJyZW50bHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCmluZGV4IGU3
YWYwZDczODhhMWE3MjMyNjRjOTc5MDZjYWQ4NTUxM2E4ZGRhNzguLmJjNzM5OGRiZDU3OWY5ODJk
YjI4YjliOGFlOTBmYjBhMjhkOTM0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nSW5saW5lcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuY3BwCmluZGV4IGU5MDM5YTY4OTY2YWVjZDY1MmZiNmQ2
YzczYjk2OTcxZjY1YzgyZDQuLjY0OTdkYzY3YjVlZWE2Y2Y2YTVlOWY1MjRhY2NhMzYwN2RiMzhi
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1
dGFibGUuY3BwCkBAIC05Myw0ICs5MywzMSBAQCBDb2RlQmxvY2tIYXNoIE5hdGl2ZUV4ZWN1dGFi
bGU6Omhhc2hGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKSBjb25zdAogICAgIHJldHVy
biBDb2RlQmxvY2tIYXNoKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG1fY29uc3RydWN0b3IpKTsK
IH0KIAorSlNTdHJpbmcqIE5hdGl2ZUV4ZWN1dGFibGU6OnRvU3RyaW5nU2xvdyhKU0dsb2JhbE9i
amVjdCAqZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7
CisKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IEpTVmFsdWUgdmFsdWUgPSBqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1
bmN0aW9uICIsIG5hbWUoKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59Iik7CisKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOworCisgICAgSlNTdHJpbmcq
IGFzU3RyaW5nID0gOjpKU0M6OmFzU3RyaW5nKHZhbHVlKTsKKyAgICBXVEY6OnN0b3JlU3RvcmVG
ZW5jZSgpOworICAgIG1fYXNTdHJpbmcuc2V0KHZtLCB0aGlzLCBhc1N0cmluZyk7CisgICAgcmV0
dXJuIGFzU3RyaW5nOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBOYXRp
dmVFeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogdGhpc09iamVjdCA9IGpzQ2FzdDxOYXRp
dmVFeGVjdXRhYmxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlz
T2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9hc1N0cmluZyk7Cit9CisK
K0RFRklORV9WSVNJVF9DSElMRFJFTihOYXRpdmVFeGVjdXRhYmxlKTsKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVF
eGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRh
YmxlLmgKaW5kZXggNzY2Yzk2YWQ0MDQ5NjJiZjRmYTczYTE5ODFhYjg1OTg1YzE0MmM1ZC4uN2Yx
MjNlZjcyMzM5MWQ0MWU0NDYxOWU0YzVhMGUxZDZmM2UxZWI3NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaApAQCAtNjcsNiArNjcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTmF0aXZlRXhlY3V0YWJs
ZSwgbV9jb25zdHJ1Y3Rvcik7CiAgICAgfQogCisgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsK
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG8pOwogICAgICAgICAKICAgICBERUNMQVJFX0lORk87CkBAIC03Niwx
NCArNzcsMjcgQEAgcHVibGljOgogICAgIGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKiBzaWduYXR1
cmVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCkgY29uc3Q7CiAgICAgSW50cmluc2ljIGludHJp
bnNpYygpIGNvbnN0OwogCisgICAgSlNTdHJpbmcqIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBpZiAoIW1fYXNTdHJpbmcpCisgICAgICAgICAg
ICByZXR1cm4gdG9TdHJpbmdTbG93KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBtX2Fz
U3RyaW5nLmdldCgpOworICAgIH0KKworICAgIEpTU3RyaW5nKiBhc1N0cmluZ0NvbmN1cnJlbnRs
eSgpIGNvbnN0IHsgcmV0dXJuIG1fYXNTdHJpbmcuZ2V0KCk7IH0KKyAgICBzdGF0aWMgaW5saW5l
IHB0cmRpZmZfdCBvZmZzZXRPZkFzU3RyaW5nKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5h
dGl2ZUV4ZWN1dGFibGUsIG1fYXNTdHJpbmcpOyB9CisKIHByaXZhdGU6CiAgICAgTmF0aXZlRXhl
Y3V0YWJsZShWTSYsIFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uLCBUYWdnZWROYXRpdmVGdW5jdGlvbiBj
b25zdHJ1Y3Rvcik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFJlZjxKSVRDb2RlPiYm
IGNhbGxUaHVuaywgUmVmPEpJVENvZGU+JiYgY29uc3RydWN0VGh1bmssIGNvbnN0IFN0cmluZyYg
bmFtZSk7CiAKKyAgICBKU1N0cmluZyogdG9TdHJpbmdTbG93KEpTR2xvYmFsT2JqZWN0Kik7CisK
ICAgICBUYWdnZWROYXRpdmVGdW5jdGlvbiBtX2Z1bmN0aW9uOwogICAgIFRhZ2dlZE5hdGl2ZUZ1
bmN0aW9uIG1fY29uc3RydWN0b3I7CiAKICAgICBTdHJpbmcgbV9uYW1lOworICAgIFdyaXRlQmFy
cmllcjxKU1N0cmluZz4gbV9hc1N0cmluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3MDYx
MjVhMjJkNDJjZGNhMjM4NjJmMjU3ODUwNmZjZTkyZmRhMzFhLi45M2I0YTJkZGY1ZGExNTQ2MTZi
YWVhYzM5YzU1ZThjOTVmZWYzODZjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA2LTAzICBUYWRldSBa
YWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIE9wdGltaXplIEZ1bmN0aW9u
LnByb3RvdHlwZS50b1N0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI2NDE4CisgICAgICAgIDxyZGFyOi8vNzc4NjE4NDY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mv
ZnVuY3Rpb24tdG8tc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGYpOgorICAgICAgICAoQyk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tZXRob2QxKToKKyAgICAgICAgKEMucHJvdG90eXBlLm1l
dGhvZDIpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0Mik6CisKIDIwMjEtMDUtMjIg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFN1cHBv
cnQgRXJnb25vbWljIEJyYW5kIENoZWNrcyBwcm9wb3NhbCAoYCN4IGluIG9iamApCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi10by1zdHJpbmcuanMgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi10by1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg1
MmIyODQyYjBhNjAxYzY4ZWFhNzA5ZmNkOWUzOGQwYmE2YTA3YQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcwpAQCAtMCwwICsx
LDQwIEBACitmdW5jdGlvbiBmKHgsIHksIHopIHsKKyAgICAvLyBjb21tZW50IGluIHRoZSBib2R5
CisgICAgY29uc3QgdyA9IDQyOworICAgIHJldHVybiB3ICsgeCArIHkgKyB6OworCit9Citub0lu
bGluZShmKTsKKworY2xhc3MgQyB7CisgICAgLy8gY29tbWVudCBpbiB0aGUgY2xhc3MKKyAgICBj
b25zdHJ1Y3RvcigpIHsKKyAgICB9CisKKyAgICBtZXRob2QxKCkgeworICAgICAgICByZXR1cm4g
InNvbWUgc3RyaW5nIjsKKyAgICB9CisKKyAgICBtZXRob2QyKCkgeworICAgICAgICByZXR1cm4g
NDI7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGYudG9TdHJpbmcoKTsKKyAg
ICBDLnRvU3RyaW5nKCk7CisgICAgcHJpbnQudG9TdHJpbmcoKTsKK30KK25vSW5saW5lKHRlc3Qp
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDFlNzsgKytpKQorICAgIHRlc3QoKTsKKworZnVuY3Rp
b24gdGVzdDIoeCwgeSwgeikgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU2OyArK2kpIHsK
KyAgICAgICAgZih4LnRvU3RyaW5nKCksIHkudG9TdHJpbmcoKSwgei50b1N0cmluZygpLCB4LnRv
U3RyaW5nKCksIHkudG9TdHJpbmcoKSk7CisgICAgfQorfQorbm9JbmxpbmUodGVzdDIpOworCit0
ZXN0MihmLCBDLCBwcmludCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430579</attachid>
            <date>2021-06-04 08:10:16 -0700</date>
            <delta_ts>2021-06-04 08:58:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-226418-20210604081015.patch</filename>
            <type>text/plain</type>
            <size>47162</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li4zNDVjZTM0YzgzNzFiMjM4
MGYzOGUxMWExMzk5YzM5YzQ1YzA2YjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAyMS0wNi0wMyAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBPcHRpbWl6ZSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAg
ICA8cmRhcjovLzc3ODYxODQ2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgor
CisgICAgICAgIEFkZCBjYWNoaW5nIHRvIEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy4gVGhp
cyBpcyB1c2VkIGhlYXZpbHkgaW4gU3BlZWRvbWV0ZXIyLCBhbmQgcmVwZWF0ZWRseSByZWNvbXB1
dGluZyBhCisgICAgICAgIHN0cmluZyB3aGljaCBpcyBhIGNvbnN0YW50IGlzIGNvc3RseS4gV2Ug
Y2FjaGUgdGhlIHJlc3VsdHMgb2YgdG9TdHJpbmcgaW4gYWxsIGNhc2VzIGV4Y2VwdCBmb3IgYm91
bmQgZnVuY3Rpb25zLgorICAgICAgICBUbyBtYWtlIHRoaXMgd29yayBmb3IgYm91bmQgZnVuY3Rp
b25zLCB3ZSdkIG5lZWQgdG8gYWRkIGEgbmV3IGZpZWxkIHRoZXkgY2FuIHVzZSBmb3IgdGhpcyBj
YWNoZS4gRm9yIG90aGVyCisgICAgICAgIGZ1bmN0aW9ucywgd2UgY2FjaGUgaXQgb24gdGhlIGV4
ZWN1dGFibGUgKGVpdGhlciBOYXRpdmVFeGVjdXRhYmxlIG9yIEZ1bmN0aW9uRXhlY3V0YWJsZSku
IFRoZSByZWFzb24gd2UgY2FuJ3QKKyAgICAgICAgZG8gdGhpcyBvbiB0aGUgZXhlY3V0YWJsZSBm
b3IgYm91bmQgZnVuY3Rpb25zIGlzIHRoYXQgYWxsIGJvdW5kIGZ1bmN0aW9ucyBzaGFyZSB0aGUg
c2FtZSBleGVjdXRhYmxlLCBidXQKKyAgICAgICAgaW5kaXZpZHVhbCBib3VuZCBmdW5jdGlvbnMg
Y2FuIGhhdmUgZGlmZmVyZW50IG5hbWVzLiBUaGUgcmVhc29uIGl0J3MgdmFsaWQgdG8gY2FjaGUg
dGhlIHJlc3VsdHMgaW4gZ2VuZXJhbCBpcyB0aGF0IGEKKyAgICAgICAgZnVuY3Rpb24ncyBuYW1l
IGZpZWxkIGNhbid0IGJlIGNoYW5nZWQgZnJvbSBKUyBjb2RlIC0tIGl0J3Mgbm9uLXdyaXRhYmxl
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyBGdW5jdGlvbi5wcm90b3R5cGUudG9T
dHJpbmcgYW4gaW50cmluc2ljIGluIHRoZSBERkcvRlRMLiBXZSBlbWl0IGNvZGUgb24gdGhlIGZh
c3QgcGF0aAorICAgICAgICB3aGljaCByZWFkcyB0aGUgY2FjaGVkIHZhbHVlIGlmIGl0J3MgcHJl
c2VudC4gSWYgbm90LCB3ZSBjYWxsIGludG8gdGhlIHNsb3cgcGF0aCwgd2hpY2ggd2lsbCBjb21w
dXRlCisgICAgICAgIHRoZSBjYWNoZWQgdmFsdWUgZm9yIG5vbiBib3VuZCBmdW5jdGlvbnMsIG9y
IGNvbXB1dGUgdGhlIHJlc3VsdCBmb3IgYm91bmQgZnVuY3Rpb25zLgorCisgICAgICAgIEkgYWRk
ZWQgYSBuZXcgbWljcm9iZW5jaG1hcmsgdGhhdCBzcGVlZHMgdXAgYnkgPjM1eDoKKworICAgICAg
ICBmdW5jdGlvbi10by1zdHJpbmcgICAgIDIxOTcuNTk1MistMzAuNzExOCAgICBeICAgICA1OS45
ODYxKy0yLjU1NTAgICAgICAgIF4gZGVmaW5pdGVseSAzNi42MzUweCBmYXN0ZXIKKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5z
aWNDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogZGZnL0RGR09w
ZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpnZXRFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0RXhlY3V0YWJsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2RlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0RXhlY3V0YWJsZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRFeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUZ1bmN0aW9u
VG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25F
eGVjdXRhYmxlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OnRv
U3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9J
bnRyaW5zaWMuY3BwOgorICAgICAgICAoSlNDOjppbnRyaW5zaWNOYW1lKToKKyAgICAgICAgKiBy
dW50aW1lL0ludHJpbnNpYy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTRnVuY3Rpb246OmFzU3RyaW5nQ29uY3VycmVudGx5IGNvbnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OnRvU3RyaW5n
U2xvdyk6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW5JbXBs
KToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaDoKKwogMjAyMS0wNS0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBVbmNoZWNrZWRM
b2NrIGV2ZW4gbGVzcyBpbiBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDVkZjY5M2VmZDdkNzAxYTQwNGIyNTc5YjY1Yzg5YWY4NDg0MGQyNTIuLjRk
MGE0NzJiNjNiY2QyOTA2MzllMDBkOWVlZDhmMWFhNzgxMGYxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTk0NCw2ICs5NDQsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmgKICAgICBydW50aW1lL0pTQXJyYXlJdGVyYXRvci5oCiAgICAgcnVudGltZS9KU0Jp
Z0ludC5oCisgICAgcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uaAogICAgIHJ1bnRpbWUvSlNDQ29u
ZmlnLmgKICAgICBydW50aW1lL0pTQ0lubGluZXMuaAogICAgIHJ1bnRpbWUvSlNDSlNWYWx1ZS5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk0Mjc2MTEzNGRhMWY2MDk3NTdiYjVi
ODc1YWUyNmZhOTExYWI1MDQuLjZjMjcwN2FiZGM5YWNlZDhkYWVkYjZiZDcyMGFjMzQ5NzgyNjA3
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzAzLDcgKzEzMDMsNyBAQAog
CQk4NkVDQTNGQTEzMkRGMjVBMDAyQjJBRDcgLyogREZHU2NvcmVCb2FyZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZFQ0EzRjkxMzJERjI1QTAwMkIy
QUQ3IC8qIERGR1Njb3JlQm9hcmQuaCAqLzsgfTsKIAkJODZGM0VFQkQxNjhDREU5MzAwNzdCOTJB
IC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkYzRUVCOTE2OENDRjc1MDA3N0I5MkEgLyogT2JqQ0NhbGxiYWNr
RnVuY3Rpb24uaCAqLzsgfTsKIAkJODZGM0VFQkYxNjhDREU5MzAwNzdCOTJBIC8qIE9iamNSdW50
aW1lRXh0cmFzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkYzRUVCNjE2ODU1QTVCMDA3N0I5MkEgLyogT2JqY1J1bnRpbWVFeHRyYXMuaCAqLzsgfTsK
LQkJODZGQTlFOTIxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGQTlFOTAxNDJCQkIyRTAw
MTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovOyB9OworCQk4NkZBOUU5MjE0MkJCQjJFMDAx
NzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OEIzQkY1RTQxRTNEMzY4QjAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEIzQkY1RTMx
RTNEMzY1QTAwNzZBODdBIC8qIEFzeW5jR2VuZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9Owog
CQk4QjYwMTZGNjFGM0UzQ0MwMDBGOURFNkEgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QjYw
MTZGNDFGM0UzQ0MwMDBGOURFNkEgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmgg
Ki87IH07CiAJCThCOUY2RDU2MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QjlGNkQ1NTFENTkx
MkZBMDAxQzczOUYgLyogSXRlcmF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNDkzZjM2OGU1ZWVl
MGRjZGEzNmVlYmM2NzEzMTk2ZmIxYjBmNGUxMS4uOTA1MDhmNzJmZmU2MWIxY2Y3ZjAyMTc0Zjll
ZjFjNTkzOGUxMDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMjg1NSw2ICsyODU1LDE5IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNh
c2UgRnVuY3Rpb25Ub1N0cmluZzogeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAodmFsdWUpIHsKKyAg
ICAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9u
Kj4obV92bSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKEpTU3RyaW5nKiBhc1N0cmluZyA9IGZ1
bmN0aW9uLT5hc1N0cmluZ0NvbmN1cnJlbnRseShtX3ZtKSkgeworICAgICAgICAgICAgICAgIHNl
dENvbnN0YW50KG5vZGUsICptX2dyYXBoLmZyZWV6ZShhc1N0cmluZykpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldEZvck5vZGUo
bm9kZSwgbV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9
CisKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CiAgICAgICAgIEpTVmFsdWUg
cmFkaXhWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWU7CiAgICAgICAgIGlm
IChyYWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGNjZTc4MmMxZTNjNzgw
OTVhYTRmNTc1ZjAxZDJmNjU1YjQzMWJmMjIuLjkzOTk0Nzk2YWZkZDkwMjQyNmI0Y2ZhNDg1MTk3
YTQxMjI1YWIxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCkBAIC0zNzQwLDYgKzM3NDAsMTcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5z
aWMKICNlbmRpZgogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nSW50
cmluc2ljOiB7CisgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkVHlwZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgICAg
IE5vZGUqIGZ1bmN0aW9uID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5n
VGhpcygwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAgICAgICAgTm9kZSogcmVzdWx0Tm9kZSA9
IGFkZFRvR3JhcGgoRnVuY3Rpb25Ub1N0cmluZywgZnVuY3Rpb24pOworICAgICAgICAgICAgc2V0
UmVzdWx0KHJlc3VsdE5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGRjYTZjNGFm
MjlhOTM1MWUwNWZmYzJmZjIxMWE1NWE2ZWY5NWUyMDIuLjdlZWM0YWM2ZDk2MjE2MWRmZDJlNTI1
ZWY5ZDUyNWQ1ODc3MTVhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCkBAIC0xODE4LDYgKzE4MTgsMTAgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKworICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmluZzoKKyAgICAgICAgZGVm
KFB1cmVWYWx1ZShub2RlKSk7CisgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBD
b3VudEV4ZWN1dGlvbjoKICAgICBjYXNlIFN1cGVyU2FtcGxlckJlZ2luOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDAyODRhN2UzMDRhMDA2ZTEwZTFhMzM2NjAx
ZWJhN2JiYWY3OTMyYmUuLjYxOGVkYWU0MTJlNWRkMmJhZjkxMGRjZmYzODFhMWI3YTIxYjA3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI4OSw2ICsyODks
NyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBEaXJl
Y3RUYWlsQ2FsbDoKICAgICBjYXNlIERpcmVjdFRhaWxDYWxsSW5saW5lZENhbGxlcjoKICAgICBj
YXNlIEZvcmNlT1NSRXhpdDoKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CiAgICAgY2FzZSBH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZERpcmVjdDoKICAgICBjYXNlIEdldEJ5SWREaXJlY3RG
bHVzaDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4
IGY2NWY5YjU3OTBlNjZlMWQ5MmUyMTJjN2ExZTU1NGU4OWQ4YThiZWEuLjM3M2U1NjBlMjI3MjBk
NWIzYWI5ZmE5NDVlYWY4NGY3Yzk5MTM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTk3Myw2ICsxOTczLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgRnVuY3Rpb25Ub1N0cmlu
ZzogeworICAgICAgICAgICAgZml4RWRnZTxGdW5jdGlvblVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIFNldFByaXZhdGVC
cmFuZDogewogICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggMjlmMzg4YWZjZDM4NzUz
OGFmN2U0NDQyYWQwZWZkNmZkM2Q1YjgxMi4uZmRiZTRmNThiN2MzNmM4MzM2OTMzM2EyMTkyMzE3
N2NmYWI1ZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAt
NDI4LDYgKzQyOCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNy
byhDYWxsTnVtYmVyQ29uc3RydWN0b3IsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oRnVuY3Rpb25Ub1N0cmluZywgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFrZVJvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1h
Y3JvKEluQnlWYWwsIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEluQnlJZCwgTm9kZVJlc3VsdEJvb2xlYW4gfCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlMzM2OThl
OGU2NTFhMzY5MzE0OWJjMDgyOWM1NjM5YmJkYzUzMTkzLi45YTJlYmZmMWQ0ZTk0YmExMDY4NzNk
YWVkZmMwNDliNjVhMDQ0YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKQEAgLTI1NjAsNiArMjU2MCwxNSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgY2hhciosIChKU0dsb2Jh
bAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihudW1iZXJUb1N0cmluZyh2bSwg
dmFsdWUsIHJhZGl4KSk7CiB9CiAKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25G
dW5jdGlvblRvU3RyaW5nLCBKU1N0cmluZyosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0Z1bmN0aW9uKiBmdW5jdGlvbikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsK
KyAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxG
cmFtZSk7CisKKyAgICByZXR1cm4gZnVuY3Rpb24tPnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7Cit9
CisKIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJp
bmcsIEpTU3RyaW5nKiwgKFZNKiB2bVBvaW50ZXIsIGludDMyX3QgY2hhcmFjdGVyKSkKIHsKICAg
ICBWTSYgdm0gPSAqdm1Qb2ludGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCA1MmNkYmU4MjY2MTZlYmM0YTkyZDA1OGIwMDFlYzM4ZWZjMmEzZDQ4Li45
OWMzOTI1MWQxZjU5OWNjYjYxMjAxYjA1ZWIwNWYwMWFiYWRlYjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIEpTQ19ERUNM
QVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRG91YmxlVG9TdHJpbmcsIGNoYXIqLCAoSlNHbG9i
YWxPYmplY3QqLCBkb3ViCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkludDMy
VG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgY2hhciosIChKU0dsb2JhbE9iamVjdCosIGludDMyX3Qs
IGludDMyX3QpKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW50NTJUb1N0
cmluZ1dpdGhWYWxpZFJhZGl4LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgaW50NjRfdCwgaW50
MzJfdCkpOwogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Eb3VibGVUb1N0cmlu
Z1dpdGhWYWxpZFJhZGl4LCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBpbnQzMl90
KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkZ1bmN0aW9uVG9TdHJpbmcs
IEpTU3RyaW5nKiwgKEpTR2xvYmFsT2JqZWN0KiwgSlNGdW5jdGlvbiopKTsKIAogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Ob3JtYWxpemVNYXBLZXlIZWFwQmlnSW50LCBFbmNv
ZGVkSlNWYWx1ZSwgKFZNKiwgSlNCaWdJbnQqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk1hcEhhc2gsIFVDUFVTdHJpY3RJbnQzMiwgKEpTR2xvYmFsT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUgaW5wdXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNWI1ODBiYjU0
M2MxOWRjYWJmODdhMDRmYzc4MzI3NTgyNDA4MWRjMS4uOGY3ZTM1OTUxN2ZjMGFmOGNmYmUzZTU1
ODY5Yzk4NzQxOWY5MTJjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTExNTgsNiArMTE1
OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNl
IENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICAgICAgY2FzZSBUb1N0cmluZzoKKyAgICAgICAg
Y2FzZSBGdW5jdGlvblRvU3RyaW5nOgogICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJh
ZGl4OgogICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoK
ICAgICAgICAgY2FzZSBNYWtlUm9wZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggMjgxMzE3YTNjNTMwZTA5MGEwMzAyYmU5Yzg4Y2Q3Yjc1Y2Iz
NDlhYS4uZGIyMjE5YTE0Nzc2NDc4Y2IwZTlhODdiMDliMWQ1ZDdjM2NiMTJhMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI3Myw2ICsyNzMs
NyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUsIGJvb2wgaWdubwogICAgIGNhc2UgVG9Cb29sZWFuOgogICAgIGNh
c2UgTG9naWNhbE5vdDoKICAgICBjYXNlIFRvU3RyaW5nOgorICAgIGNhc2UgRnVuY3Rpb25Ub1N0
cmluZzoKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKICAg
ICBjYXNlIFN0ckNhdDoKICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNzNmOTEx
NGVhZjg4M2NlZWY5Y2EwM2I4NGYxNmVlNjQ0ZTZkMjhmOC4uZWJiZDI0NjYwMzhkZjEwZDA0MjY0
MDgyNTg1N2VjMjRmYjY4MTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKU0FycmF5
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Fz
eW5jR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTSW1tdXRhYmxlQnV0dGVyZmx5LmgiCkBAIC0xMDUxNCw2ICsxMDUxNSw0NyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1
Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgZ2V0RXhl
Y3V0YWJsZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcgZnVuY3Rpb25HUFIsIEdQUlJlZyByZXN1
bHRHUFIpCit7CisgICAgaml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnVuY3Rpb25H
UFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSksIHJlc3VsdEdQ
Uik7CisgICAgYXV0byBoYXNFeGVjdXRhYmxlID0gaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxw
ZXJzOjpaZXJvLCByZXN1bHRHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rp
b246OnJhcmVEYXRhVGFnKSk7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1
bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3VsdEdQUik7CisgICAgaGFzRXhlY3V0YWJsZS5saW5r
KCZqaXQpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0cmlu
ZyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgZXhlY3V0YWJsZSh0aGlzKTsKKyAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBz
bG93Q2FzZXM7CisKKyAgICBzcGVjdWxhdGVGdW5jdGlvbihub2RlLT5jaGlsZDEoKSwgZnVuY3Rp
b24uZ3ByKCkpOworCisgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgZnVuY3Rpb24u
Z3ByKCksIHJlc3VsdC5ncHIoKSwgZXhlY3V0YWJsZS5ncHIoKSk7CisgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19maW5h
bF92PEpTQm91bmRGdW5jdGlvbj4sICJXZSBkb24ndCBoYW5kbGUgc3ViY2xhc3NlcyB3aGVuIGNv
bXBhcmluZyBjbGFzc0luZm8gYmVsb3ciKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJy
YW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHIo
SlNCb3VuZEZ1bmN0aW9uOjppbmZvKCkpKSk7CisKKyAgICBnZXRFeGVjdXRhYmxlKG1faml0LCBm
dW5jdGlvbi5ncHIoKSwgZXhlY3V0YWJsZS5ncHIoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNOYXRpdmVFeGVjdXRhYmxlID0gbV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGV4ZWN1dGFibGUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBl
T2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTmF0aXZlRXhlY3V0YWJsZVR5cGUpKTsKKworICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoZXhlY3V0YWJsZS5ncHIoKSwgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByZXN1bHQuZ3ByKCkpOworICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgcmVzdWx0LmdwcigpKSk7CisgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhyZXN1bHQuZ3ByKCksIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZBc1N0cmluZ0lu
UmFyZURhdGEoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgY29udGlu
dWF0aW9uID0gbV9qaXQuanVtcCgpOworCisgICAgaXNOYXRpdmVFeGVjdXRhYmxlLmxpbmsoJm1f
aml0KTsKKyAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGV4ZWN1dGFi
bGUuZ3ByKCksIE5hdGl2ZUV4ZWN1dGFibGU6Om9mZnNldE9mQXNTdHJpbmcoKSksIHJlc3VsdC5n
cHIoKSk7CisKKyAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOworICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0Lmdw
cigpKSk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25GdW5jdGlvblRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jdGlvbi5ncHIoKSkpOworCisgICAgY2VsbFJlc3VsdChy
ZXN1bHQuZ3ByKCksIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVt
YmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqIG5vZGUpCiB7CiAgICAgY29t
cGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChub2RlLCBub2RlLT52YWxp
ZFJhZGl4Q29uc3RhbnQoKSk7CkBAIC0xMzI2MywxNCArMTMzMDUsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0RXhlY3V0YWJsZShOb2RlKiBub2RlKQogewogICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBmdW5jdGlvbik7Ci0gICAgR1BSUmVnIGZ1bmN0aW9u
R1BSID0gZnVuY3Rpb24uZ3ByKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICBzcGVjdWxhdGVDZWxsVHlwZShub2RlLT5jaGlsZDEoKSwgZnVuY3Rpb25HUFIsIFNw
ZWNGdW5jdGlvbiwgSlNGdW5jdGlvblR5cGUpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnVuY3Rpb25HUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9y
UmFyZURhdGEoKSksIHJlc3VsdEdQUik7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gbV9qaXQu
YnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olplcm8sIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKLSAgICBtX2ppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9m
ZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCByZXN1bHRHUFIp
OwotICAgIGhhc0V4ZWN1dGFibGUubGluaygmbV9qaXQpOwotICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKKyAgICBzcGVjdWxhdGVGdW5jdGlvbihub2RlLT5jaGlsZDEoKSwgZnVuY3Rp
b24uZ3ByKCkpOworICAgIGdldEV4ZWN1dGFibGUobV9qaXQsIGZ1bmN0aW9uLmdwcigpLCByZXN1
bHQuZ3ByKCkpOworICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEdldHRlcihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUyZTFlOGNkNTJh
MDQ4NmU2MTBjNWM0OTBjM2JhMGE5MTdkYzg5ZjMuLjJlMjVkYjg0MDI3YmZjOTQwOGUwN2FjM2Jm
ZWY5YjFlY2MxMjZiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKQEAgLTEyMjcsNiArMTIyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRT
d2l0Y2goTm9kZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5n
Q29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YoTm9kZSopOworICAgIHZvaWQgY29tcGlsZUZ1bmN0
aW9uVG9TdHJpbmcoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFJh
ZGl4KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4
Q29uc3RhbnQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKiwgaW50MzJfdCByYWRpeCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCBiNTdjMzdh
YTA1ZGQ0OTA5MWM3ZmEzNjUwZjhiYmZmNzUyMzdmNjM5Li41NmRhNDQ5ZTEyNGYyMjU3YmFiYzUz
NDI1M2ZkNmYwMmQzNmU0NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTMyMDUsNiArMzIwNSwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVUb1N0
cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKG5vZGUpOwogICAgICAg
ICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CisgICAgICAgIGNv
bXBpbGVGdW5jdGlvblRvU3RyaW5nKG5vZGUpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6IHsKICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09iamVj
dChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCmluZGV4IGI5MTE4YjYyZTg3ZDk3MGFjNTQ2MWY2M2JkM2MzODBmYjhiMDEyNjAu
LjhlMTRlOTRmNWVlNDllMTdmYzhjMDUyZDk0ZTRjMDg5ODcyYzViOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzc5MCw2
ICszNzkwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVl
T2Yobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgRnVuY3Rpb25Ub1N0
cmluZzoKKyAgICAgICAgY29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcobm9kZSk7CisgICAgICAgIGJy
ZWFrOwogICAgICAgICAKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDogewogICAgICAgICBjb21w
aWxlTmV3U3RyaW5nT2JqZWN0KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCBiMDY4ODRiNTI4ZDI1ZmRl
ZGQ0NmY4MzkxODQ5OTQyOTIyMTM2NDZlLi4yZTJmMDdkZmM3ZThjMTNkZGIwZWRkNWEyZDA3YTVk
ODcyZTE3OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNzcsNiArNzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBE
aXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVj
dEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBw
ZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3Vt
ZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50
c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uRXhlY3V0YWJsZV9yYXJlRGF0YSwg
RnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZlJhcmVEYXRhKCkpIFwKKyAgICBtYWNybyhGdW5j
dGlvbkV4ZWN1dGFibGVSYXJlRGF0YV9hc1N0cmluZywgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZz
ZXRPZkFzU3RyaW5nSW5SYXJlRGF0YSgpKSBcCiAgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9h
bGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IoKSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlv
blJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBt
YWNybyhGdW5jdGlvblJhcmVEYXRhX3Byb3RvdHlwZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRo
UHJvdG90eXBlOjpvZmZzZXRPZlByb3RvdHlwZSgpKSBcCkBAIC0xMTksNiArMTIxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJl
cjIsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcjIoKSkgXAogICAgIG1hY3JvKEpTU2NvcGVf
bmV4dCwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpIFwKICAgICBtYWNybyhKU1N5bWJvbFRhYmxl
T2JqZWN0X3N5bWJvbFRhYmxlLCBKU1N5bWJvbFRhYmxlT2JqZWN0OjpvZmZzZXRPZlN5bWJvbFRh
YmxlKCkpIFwKKyAgICBtYWNybyhOYXRpdmVFeGVjdXRhYmxlX2FzU3RyaW5nLCBOYXRpdmVFeGVj
dXRhYmxlOjpvZmZzZXRPZkFzU3RyaW5nKCkpIFwKICAgICBtYWNybyhSZWdFeHBPYmplY3RfcmVn
RXhwQW5kTGFzdEluZGV4SXNOb3RXcml0YWJsZUZsYWcsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZS
ZWdFeHBBbmRMYXN0SW5kZXhJc05vdFdyaXRhYmxlRmxhZygpKSBcCiAgICAgbWFjcm8oUmVnRXhw
T2JqZWN0X2xhc3RJbmRleCwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgpKSBcCiAg
ICAgbWFjcm8oU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlLCBPQkpFQ1RfT0ZGU0VUT0YoU2hh
ZG93Q2hpY2tlbjo6UGFja2V0LCBjYWxsZWUpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggNGY2ZTAzN2NiMTFjNTI0YjkxMTEzOWUwNGM5
ZjA1ZTZjNGRkYjg3MC4uNDdlOWI3ZDMyZjczZmViZTk4OTVmNmI3NGFjMThkNTM5NDczN2Y4MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MjE3LDYgKzIxNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgY2FzZSBUb051bWVyaWM6CiAgICAgY2FzZSBU
b1N0cmluZzoKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJpbmc6CiAgICAgY2FzZSBUb09iamVjdDoK
ICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1Y3RvcjoKICAgICBjYXNlIENhbGxTdHJpbmdDb25z
dHJ1Y3RvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCA4MTY3ZmEzZDA1MmMxMGJkZjFiNmY2NDkwY2UzNTkwN2RhZDhiZjM1Li41MDc2Njg0
NjhjMDJjZjZhNjFiMTIxZjliNjdhYzhkMGRiYTI0Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVk
ZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNBc3luY0dlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTExOTYsNiArMTE5Nyw5IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgU3RyaW5nVmFsdWVPZjoKICAgICAgICAgICAgIGNvbXBp
bGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGdW5jdGlvblRvU3RyaW5nOgorICAgICAgICAg
ICAgY29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFRvUHJpbWl0aXZlOgogICAgICAgICAgICAgY29tcGlsZVRvUHJpbWl0aXZlKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTM3NzQsMTQgKzM3NzgsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgc3BlY3VsYXRlKEJhZElkZW50LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lm5vdEVxdWFs
KHN0cmluZ0ltcGwsIG1fb3V0LmNvbnN0SW50UHRyKHVpZCkpKTsKICAgICB9CiAKLSAgICB2b2lk
IGNvbXBpbGVHZXRFeGVjdXRhYmxlKCkKKyAgICBMVmFsdWUgZ2V0RXhlY3V0YWJsZShMVmFsdWUg
ZnVuY3Rpb24pCiAgICAgewogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7Ci0gICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgc3BlY3VsYXRlRnVuY3Rpb24obV9ub2RlLT5jaGlsZDEoKSwgY2VsbCk7CiAK
LSAgICAgICAgTFZhbHVlIHJhcmVEYXRhVGFncyA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFw
cy5KU0Z1bmN0aW9uX2V4ZWN1dGFibGVPclJhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVlIHJhcmVE
YXRhVGFncyA9IG1fb3V0LmxvYWRQdHIoZnVuY3Rpb24sIG1faGVhcHMuSlNGdW5jdGlvbl9leGVj
dXRhYmxlT3JSYXJlRGF0YSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RFeGVjdXRhYmxl
ID0gbV9vdXQuYW5jaG9yKHJhcmVEYXRhVGFncyk7CiAgICAgICAgIG1fb3V0LmJyYW5jaChtX291
dC50ZXN0SXNaZXJvUHRyKHJhcmVEYXRhVGFncywgbV9vdXQuY29uc3RJbnRQdHIoSlNGdW5jdGlv
bjo6cmFyZURhdGFUYWcpKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShoYXNSYXJlRGF0
YSkpOwogCkBAIC0zNzkxLDcgKzM3OTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwotICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBm
YXN0RXhlY3V0YWJsZSwgc2xvd0V4ZWN1dGFibGUpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnBo
aShwb2ludGVyVHlwZSgpLCBmYXN0RXhlY3V0YWJsZSwgc2xvd0V4ZWN1dGFibGUpOworICAgIH0K
KworICAgIHZvaWQgY29tcGlsZUdldEV4ZWN1dGFibGUoKQorICAgIHsKKyAgICAgICAgTFZhbHVl
IGNlbGwgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBzcGVjdWxhdGVGdW5j
dGlvbihtX25vZGUtPmNoaWxkMSgpLCBjZWxsKTsKKyAgICAgICAgTFZhbHVlIGV4ZWN1dGFibGUg
PSBnZXRFeGVjdXRhYmxlKGNlbGwpOworICAgICAgICBzZXRKU1ZhbHVlKGV4ZWN1dGFibGUpOwog
ICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBcnJheWlmeSgpCkBAIC04MjIwLDYgKzgyMzAs
NTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisg
ICAgdm9pZCBjb21waWxlRnVuY3Rpb25Ub1N0cmluZygpCisgICAgeworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9vcmlnaW4u
c2VtYW50aWMpOworCisgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJvdW5kRnVuY3Rpb25DYXNlID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgZnVuY3Rpb25FeGVjdXRhYmxl
Q2FzZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIG5hdGl2ZUV4ZWN1
dGFibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgdGVzdFB0
ciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0Nhc2UgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOworCisgICAgICAgIExWYWx1ZSBmdW5jdGlvbiA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIHNwZWN1bGF0ZUZ1bmN0aW9uKG1fbm9kZS0+Y2hpbGQxKCksIGZ1bmN0
aW9uKTsKKworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG9hZFN0cnVjdHVyZShmdW5jdGlv
bik7CisgICAgICAgIExWYWx1ZSBjbGFzc0luZm8gPSBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwg
bV9oZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2ZpbmFsX3Y8SlNCb3VuZEZ1bmN0aW9uPiwgIldlIGRvbid0IGhhbmRsZSBzdWJjbGFzc2Vz
IHdoZW4gY29tcGFyaW5nIGNsYXNzSW5mbyBiZWxvdyIpOworICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwoY2xhc3NJbmZvLCBtX291dC5jb25zdEludFB0cihKU0JvdW5kRnVuY3Rpb246
OmluZm8oKSkpLCB1bnN1cmUoc2xvd0Nhc2UpLCB1bnN1cmUobm90Qm91bmRGdW5jdGlvbkNhc2Up
KTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5vdEJv
dW5kRnVuY3Rpb25DYXNlLCBuYXRpdmVFeGVjdXRhYmxlQ2FzZSk7CisgICAgICAgIExWYWx1ZSBl
eGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZShmdW5jdGlvbik7CisgICAgICAgIG1fb3V0LmJyYW5j
aChpc1R5cGUoZXhlY3V0YWJsZSwgTmF0aXZlRXhlY3V0YWJsZVR5cGUpLCB1bnN1cmUobmF0aXZl
RXhlY3V0YWJsZUNhc2UpLCB1bnN1cmUoZnVuY3Rpb25FeGVjdXRhYmxlQ2FzZSkpOworCisgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5hdGl2ZUV4ZWN1dGFibGVDYXNlLCBmdW5jdGlvbkV4ZWN1dGFi
bGVDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgbmF0aXZlUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmxvYWRQdHIoZXhlY3V0YWJsZSwgbV9oZWFwcy5OYXRpdmVFeGVjdXRhYmxlX2Fz
U3RyaW5nKSk7CisgICAgICAgIG1fb3V0Lmp1bXAodGVzdFB0cik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oZnVuY3Rpb25FeGVjdXRhYmxlQ2FzZSwgdGVzdFB0cik7CisgICAgICAgIExWYWx1
ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoZXhlY3V0YWJsZSwgbV9oZWFwcy5GdW5jdGlvbkV4
ZWN1dGFibGVfcmFyZURhdGEpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90TnVsbChy
YXJlRGF0YSksIHVzdWFsbHkoaGFzUmFyZURhdGEpLCByYXJlbHkoc2xvd0Nhc2UpKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhoYXNSYXJlRGF0YSwgc2xvd0Nhc2UpOworICAgICAgICBWYWx1
ZUZyb21CbG9jayBmdW5jdGlvblJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5sb2FkUHRyKHJh
cmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhX2FzU3RyaW5nKSk7Cisg
ICAgICAgIG1fb3V0Lmp1bXAodGVzdFB0cik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8odGVz
dFB0ciwgY29udGludWF0aW9uKTsKKyAgICAgICAgTFZhbHVlIGFzU3RyaW5nID0gbV9vdXQucGhp
KHBvaW50ZXJUeXBlKCksIG5hdGl2ZVJlc3VsdCwgZnVuY3Rpb25SZXN1bHQpOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFzU3RyaW5nKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdE51bGwoYXNTdHJpbmcpLCB1c3VhbGx5KGNvbnRpbnVh
dGlvbiksIHJhcmVseShzbG93Q2FzZSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dD
YXNlLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25GdW5jdGlvblRvU3Ry
aW5nLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCBmdW5jdGlvbikpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBl
KCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlVG9QcmltaXRpdmUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDE4NmZiMjRmYWJhMGM0NmNlYmUw
MjdlYTU2YzA3MmE3NWM5Y2FjYjguLmE0YjI5M2NkNWFmODQxN2U0M2E3MjhhYTc0ZWE3ZmIyMjk3
ZmZiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25FeGVjdXRhYmxlLmNwcApAQCAtNzksNiArNzksNyBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fdW5saW5rZWRFeGVjdXRhYmxlKTsKICAgICBp
ZiAoUmFyZURhdGEqIHJhcmVEYXRhID0gdGhpc09iamVjdC0+bV9yYXJlRGF0YS5nZXQoKSkgewog
ICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+bV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1
cmUpOworICAgICAgICB2aXNpdG9yLmFwcGVuZChyYXJlRGF0YS0+bV9hc1N0cmluZyk7CiAgICAg
ICAgIGlmIChUZW1wbGF0ZU9iamVjdE1hcCogbWFwID0gcmFyZURhdGEtPm1fdGVtcGxhdGVPYmpl
Y3RNYXAuZ2V0KCkpIHsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlzT2JqZWN0LT5j
ZWxsTG9jaygpIH07CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogKm1hcCkKQEAgLTEx
Niw2ICsxMTcsODEgQEAgRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSYgRnVuY3Rpb25FeGVj
dXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQogICAgIHJldHVybiAqbV9yYXJlRGF0YTsKIH0K
IAorSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2V0Vk0oZ2xvYmFsT2JqZWN0KTsK
KyAgICBBU1NFUlQobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9hc1N0cmluZyk7CisKKyAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGNvbnN0
IGF1dG8mIGNhY2hlID0gWyZdKEpTU3RyaW5nKiBhc1N0cmluZykgeworICAgICAgICBXVEY6OnN0
b3JlU3RvcmVGZW5jZSgpOworICAgICAgICBtX3JhcmVEYXRhLT5tX2FzU3RyaW5nLnNldCh2bSwg
dGhpcywgYXNTdHJpbmcpOworICAgICAgICByZXR1cm4gYXNTdHJpbmc7CisgICAgfTsKKworICAg
IGNvbnN0IGF1dG8mIGNhY2hlSWZOb0V4Y2VwdGlvbiA9IFsmXShKU1ZhbHVlIHZhbHVlKSAtPiBK
U1N0cmluZyogeworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxw
dHIpOworICAgICAgICByZXR1cm4gY2FjaGUoOjpKU0M6OmFzU3RyaW5nKHZhbHVlKSk7CisgICAg
fTsKKworICAgIGlmIChpc0J1aWx0aW5GdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gY2FjaGVJ
Zk5vRXhjZXB0aW9uKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAiZnVuY3Rp
b24gIiwgbmFtZSgpLnN0cmluZygpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSk7CisK
KyAgICBpZiAoaXNDbGFzcygpKQorICAgICAgICByZXR1cm4gY2FjaGUoanNTdHJpbmcodm0sIGNs
YXNzU291cmNlKCkudmlldygpLnRvU3RyaW5nKCkpKTsKKworICAgIFN0cmluZyBmdW5jdGlvbkhl
YWRlcjsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9
ICJmdW5jdGlvbiogIjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9n
cmFtTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGU6Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jR2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jRnVuY3Rpb25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uQm9keU1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uICI7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJN
b2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJh
c3luYyBmdW5jdGlvbiAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJh
c3luYyAiOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0dlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jR2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6CisgICAgICAgIGZ1bmN0aW9uSGVhZGVy
ID0gImFzeW5jIGZ1bmN0aW9uKiAiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBTdHJp
bmdWaWV3IHNyYyA9IHNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAorICAgICAgICBwYXJh
bWV0ZXJzU3RhcnRPZmZzZXQoKSwKKyAgICAgICAgcGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBz
b3VyY2UoKS5sZW5ndGgoKSk7CisKKyAgICBTdHJpbmcgbmFtZSA9IHRoaXMtPm5hbWUoKS5zdHJp
bmcoKTsKKyAgICBpZiAobmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5zdGFyRGVmYXVsdFByaXZh
dGVOYW1lLnN0cmluZygpKQorICAgICAgICBuYW1lID0gZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1
cm4gY2FjaGVJZk5vRXhjZXB0aW9uKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0
LCBmdW5jdGlvbkhlYWRlciwgbmFtZSwgc3JjKSk7Cit9CisKIHZvaWQgRnVuY3Rpb25FeGVjdXRh
YmxlOjpvdmVycmlkZUluZm8oY29uc3QgRnVuY3Rpb25PdmVycmlkZUluZm8mIG92ZXJyaWRlSW5m
bykKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJh
ZGNiNzg1MGZiNmY5MzY1NTZjZTQ5YzI2MTYwMmM1OTU5ZDRmZGEuLjhiYjUwZGI1YWQyZmEwYTgx
M2UyYTM3OGQ0ZmVjN2NmNjI3NjkzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0yODUsNiArMjg1LDE3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKIAorICAgIEpTU3Ry
aW5nKiB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCopOworICAgIEpTU3RyaW5nKiBhc1N0cmluZ0Nv
bmN1cnJlbnRseSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fcmFyZURhdGEpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fYXNT
dHJpbmcuZ2V0KCk7CisgICAgfQorCisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0
T2ZSYXJlRGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvbkV4ZWN1dGFibGUs
IG1fcmFyZURhdGEpOyB9CisgICAgc3RhdGljIGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0
cmluZ0luUmFyZURhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoUmFyZURhdGEsIG1fYXNT
dHJpbmcpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwog
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSosIEludHJpbnNpYywgYm9vbCBpc0luc2lkZU9yZGluYXJ5RnVuY3Rp
b24pOwpAQCAtMzA0LDYgKzMxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fdHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCB7IFVJTlRfTUFYIH07CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZW1wbGF0ZU9iamVjdE1hcD4gbV90ZW1wbGF0ZU9iamVjdE1hcDsKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRQb2x5UHJvdG9TdHJ1Y3R1cmU7CisgICAgICAgIFdy
aXRlQmFycmllcjxKU1N0cmluZz4gbV9hc1N0cmluZzsKICAgICB9OwogCiAgICAgUmFyZURhdGEm
IGVuc3VyZVJhcmVEYXRhKCkKQEAgLTMxNCw2ICszMjYsOCBAQCBwcml2YXRlOgogICAgIH0KICAg
ICBSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGFTbG93KCk7CiAKKyAgICBKU1N0cmluZyogdG9TdHJp
bmdTbG93KEpTR2xvYmFsT2JqZWN0Kik7CisKICAgICAvLyBGSVhNRTogV2UgY2FuIG1lcmdlIHJh
cmVEYXRhIHBvaW50ZXIgYW5kIHRvcC1sZXZlbCBleGVjdXRhYmxlIHBvaW50ZXIuIEZpcnN0IHRp
bWUsIHNldHRpbmcgcGFyZW50LgogICAgIC8vIElmIFJhcmVEYXRhIGlzIHJlcXVpcmVkLCBtYXRl
cmlhbGl6ZSBSYXJlRGF0YSwgc3dhcCBpdCwgYW5kIHN0b3JlIHRvcC1sZXZlbCBleGVjdXRhYmxl
IHBvaW50ZXIgaW5zaWRlIFJhcmVEYXRhLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTc2MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZUlubGluZXMuaAppbmRleCA0NTI5OWMzMzZm
ODVmYzIyMzU5YmJmZDc0YzY5NWZmZWY3M2E3NGI2Li5jOWEwYjEyMjQwNDMzMjk3MWExNmMyOGE2
ZDE1ZjU0ZWYzZjUwZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlSW5saW5lcy5oCkBAIC0zNSw1ICszNSwxMyBAQCBp
bmxpbmUgdm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZN
JiB2bSkKICAgICBtX3NpbmdsZXRvbi5maW5hbGl6ZVVuY29uZGl0aW9uYWxseSh2bSk7CiB9CiAK
K0pTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgUmFyZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEo
KTsKKyAgICBpZiAoIXJhcmVEYXRhLm1fYXNTdHJpbmcpCisgICAgICAgIHJldHVybiB0b1N0cmlu
Z1Nsb3coZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gcmFyZURhdGEubV9hc1N0cmluZy5nZXQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCAxNGYzNzNhOGZhMDNhZGJi
ZjZkZmNiZWM4MTJhMjAzMDg5ODg2YmFjLi5kZjI1ZmMwNjlmNDdmNzRmMWVjNTk2MjljNjUzYzk1
Y2NlZmNmODg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCkBAIC01NCw4ICs1NCw3IEBAIHZvaWQgRnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBuYW1lKQogCiB2b2lkIEZ1
bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uKiogY2FsbEZ1bmN0aW9uLCBKU0Z1bmN0aW9u
KiogYXBwbHlGdW5jdGlvbiwgSlNGdW5jdGlvbioqIGhhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24p
CiB7Ci0gICAgSlNGdW5jdGlvbiogdG9TdHJpbmdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZy5zdHJpbmco
KSwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCB0b1N0cmluZ0Z1bmN0aW9uLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CisgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnRvU3RyaW5nUHVibGljTmFtZSgpLCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMCwgRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYyk7CiAKICAgICAqYXBwbHlG
dW5jdGlvbiA9IHB1dERpcmVjdEJ1aWx0aW5GdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGlj
TmFtZSgpLCBmdW5jdGlvblByb3RvdHlwZUFwcGx5Q29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAqY2FsbEZ1
bmN0aW9uID0gcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGds
b2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05h
bWUoKSwgZnVuY3Rpb25Qcm90b3R5cGVDYWxsQ29kZUdlbmVyYXRvcih2bSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTgxLDU4ICs4MCw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxK
U0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8
SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CiAgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1
cmVJRCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkpOwotICAgICAgICBpZiAoZnVuY3Rpb24t
PmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9i
amVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZl
IGNvZGVdXG59IikpKTsKLQotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7Ci0gICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0Ns
YXNzKCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBl
eGVjdXRhYmxlLT5jbGFzc1NvdXJjZSgpLnZpZXcoKS50b1N0cmluZygpKSk7Ci0KLSAgICAgICAg
U3RyaW5nIGZ1bmN0aW9uSGVhZGVyOwotICAgICAgICBzd2l0Y2ggKGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpKSB7Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVy
RnVuY3Rpb25Nb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3Jh
cHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlvbiog
IjsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpO
b3JtYWxGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJN
b2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKLSAgICAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6Ci0gICAgICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUFuYWx5emVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVh
dGVNb2RlOgotICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6
Ci0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvckJvZHlNb2RlOgot
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgotICAg
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Ci0g
ICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlvbiAiOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgot
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToK
LSAgICAgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gIiI7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6Ci0gICAgICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5j
dGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiAiOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6Ci0gICAg
ICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyAiOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1bmN0
aW9uTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3Jh
cHBlck1ldGhvZE1vZGU6Ci0gICAgICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5j
dGlvbiogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5n
VmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZSgK
LSAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAotICAgICAg
ICAgICAgZXhlY3V0YWJsZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBleGVjdXRhYmxlLT5z
b3VyY2UoKS5sZW5ndGgoKSk7Ci0gICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCBmdW5jdGlv
bkhlYWRlciwgZnVuY3Rpb24tPm5hbWUodm0pLCBzb3VyY2UpKSk7CisgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZ1bmN0aW9uLT50b1N0cmluZyhnbG9i
YWxPYmplY3QpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxJbnRlcm5h
bEZ1bmN0aW9uPih2bSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5z
aWMuY3BwCmluZGV4IDE0NGJhM2NjNmE2N2ZkYjYwYmM0ODAxZGUzYmE3YmIyZmQwNjY0MjkuLjk4
NzU4YzZhZWJkNWE5MTBiNzMwOWIwM2FjODU1N2I2Njg0ZjhjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMjc1LDYgKzI3NSw4IEBAIGNvbnN0
IGNoYXIqIGludHJpbnNpY05hbWUoSW50cmluc2ljIGludHJpbnNpYykKICAgICAgICAgcmV0dXJu
ICJBdG9taWNzWG9ySW50cmluc2ljIjsKICAgICBjYXNlIFBhcnNlSW50SW50cmluc2ljOgogICAg
ICAgICByZXR1cm4gIlBhcnNlSW50SW50cmluc2ljIjsKKyAgICBjYXNlIEZ1bmN0aW9uVG9TdHJp
bmdJbnRyaW5zaWM6CisgICAgICAgIHJldHVybiAiRnVuY3Rpb25Ub1N0cmluZ0ludHJpbnNpYyI7
CiAgICAgY2FzZSBUeXBlZEFycmF5TGVuZ3RoSW50cmluc2ljOgogICAgICAgICByZXR1cm4gIlR5
cGVkQXJyYXlMZW5ndGhJbnRyaW5zaWMiOwogICAgIGNhc2UgVHlwZWRBcnJheUJ5dGVMZW5ndGhJ
bnRyaW5zaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRy
aW5zaWMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCmluZGV4
IDdhOWNkNzAyOWUzOGZkYzNmMTEwNTA5MTRkNGRkMjBiNTNkYTM1MmEuLjliZTg1MmM5NmJjNzA5
MGJmMjk3NmJlYjkxZmRhNjk1NGNlNzgxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludHJpbnNpYy5oCkBAIC0xNTMsNiArMTUzLDcgQEAgZW51bSBJbnRyaW5zaWMgOiB1aW50
OF90IHsKICAgICBBdG9taWNzV2FpdEludHJpbnNpYywKICAgICBBdG9taWNzWG9ySW50cmluc2lj
LAogICAgIFBhcnNlSW50SW50cmluc2ljLAorICAgIEZ1bmN0aW9uVG9TdHJpbmdJbnRyaW5zaWMs
CiAKICAgICAvLyBHZXR0ZXIgaW50cmluc2ljcy4KICAgICBUeXBlZEFycmF5TGVuZ3RoSW50cmlu
c2ljLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRl
eCBmYTVhZWNkMTdjMWNlZmM5ZDYyOThkZDcyMjgzOWVjZjQ1ZWRmMzBiLi40MTZmN2I3NTA3OGEz
YWYzMmFkYTBhNTYzZDU3M2I4ZmNhNmZhMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtMjQ3LDYgKzI0NywyMiBAQCBjb25zdCBTdHJpbmcg
SlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1lKFZNJiB2bSkKICAgICByZXR1cm4ganNF
eGVjdXRhYmxlKCktPmVjbWFOYW1lKCkuc3RyaW5nKCk7CiB9CiAKK0pTU3RyaW5nKiBKU0Z1bmN0
aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2
bSA9IGdldFZNKGdsb2JhbE9iamVjdCk7CisgICAgaWYgKGluaGVyaXRzPEpTQm91bmRGdW5jdGlv
bj4odm0pKSB7CisgICAgICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNC
b3VuZEZ1bmN0aW9uKj4odGhpcyk7CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICAgICAgSlNWYWx1ZSBzdHJpbmcgPSBqc01ha2VOb250cml2aWFsU3Ry
aW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lU3RyaW5nKCksICIo
KSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIGFzU3RyaW5nKHN0cmluZyk7CisgICAg
fQorCisgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOYXRpdmVFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSgpKS0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKKyAgICByZXR1cm4ganNFeGVjdXRhYmxlKCktPnRvU3RyaW5nKGdsb2JhbE9iamVjdCk7Cit9
CisKIGNvbnN0IFNvdXJjZUNvZGUqIEpTRnVuY3Rpb246OnNvdXJjZUNvZGUoKSBjb25zdAogewog
ICAgIGlmIChpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGJjYzJlODEwZmM2ZTk2NjkzODVkMTg5ZTUxNTE3
OWIyZWI3YWE0YWMuLjgyYWZmMWQyNjEzYTQ2NWNmN2Q0MzFmN2VkMWM3MDA5YTA4YTBkNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTkwLDYgKzkw
LDkgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBuYW1lKFZNJik7CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGRpc3BsYXlOYW1lKFZNJik7CiAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgU3RyaW5nIGNhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIEpTU3RyaW5nKiB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCopOwor
CisgICAgSlNTdHJpbmcqIGFzU3RyaW5nQ29uY3VycmVudGx5KFZNJikgY29uc3Q7CiAKICAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgKaW5kZXggMmQxMGIzZGJh
ZWE1ZTA4YWQwOTQxNDJkMjQxY2FjMzBjZmRhODhjNC4uMjVkNjA5NDMwYmI3ZGViNWVjYjBhZDk3
MjEyZTg4Zjk4N2E1ZGIwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJOYXRpdmVFeGVjdXRhYmxl
LmgiCiAKQEAgLTE1Niw0ICsxNTcsMTMgQEAgaW5saW5lIEZ1bmN0aW9uUmFyZURhdGEqIEpTRnVu
Y3Rpb246OmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoSlNHbG9iYWwKICAgICBy
ZXR1cm4gcmFyZURhdGE7CiB9CiAKK2lubGluZSBKU1N0cmluZyogSlNGdW5jdGlvbjo6YXNTdHJp
bmdDb25jdXJyZW50bHkoVk0mIHZtKSBjb25zdAoreworICAgIGlmIChpbmhlcml0czxKU0JvdW5k
RnVuY3Rpb24+KHZtKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzSG9zdEZ1
bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4o
ZXhlY3V0YWJsZSgpKS0+YXNTdHJpbmdDb25jdXJyZW50bHkoKTsKKyAgICByZXR1cm4ganNFeGVj
dXRhYmxlKCktPmFzU3RyaW5nQ29uY3VycmVudGx5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApp
bmRleCBlN2FmMGQ3Mzg4YTFhNzIzMjY0Yzk3OTA2Y2FkODU1MTNhOGRkYTc4Li5iYzczOThkYmQ1
NzlmOTgyZGIyOGI5YjhhZTkwZmIwYTI4ZDkzNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZ0lubGluZXMuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmNwcAppbmRleCBlOTAzOWE2ODk2NmFlY2Q2
NTJmYjZkNmM3M2I5Njk3MWY2NWM4MmQ0Li42NDk3ZGM2N2I1ZWVhNmNmNmE1ZTlmNTI0YWNjYTM2
MDdkYjM4Yjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRp
dmVFeGVjdXRhYmxlLmNwcApAQCAtOTMsNCArOTMsMzEgQEAgQ29kZUJsb2NrSGFzaCBOYXRpdmVF
eGVjdXRhYmxlOjpoYXNoRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkgY29uc3QKICAg
ICByZXR1cm4gQ29kZUJsb2NrSGFzaChiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihtX2NvbnN0cnVj
dG9yKSk7CiB9CiAKK0pTU3RyaW5nKiBOYXRpdmVFeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNH
bG9iYWxPYmplY3QgKmdsb2JhbE9iamVjdCkKK3sKKyAgICBWTSYgdm0gPSBnZXRWTShnbG9iYWxP
YmplY3QpOworCisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU1ZhbHVlIHZhbHVlID0ganNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmpl
Y3QsICJmdW5jdGlvbiAiLCBuYW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOwor
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKKworICAgIEpT
U3RyaW5nKiBhc1N0cmluZyA9IDo6SlNDOjphc1N0cmluZyh2YWx1ZSk7CisgICAgV1RGOjpzdG9y
ZVN0b3JlRmVuY2UoKTsKKyAgICBtX2FzU3RyaW5nLnNldCh2bSwgdGhpcywgYXNTdHJpbmcpOwor
ICAgIHJldHVybiBhc1N0cmluZzsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3Zv
aWQgTmF0aXZlRXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIE5hdGl2ZUV4ZWN1dGFibGUqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8TmF0aXZlRXhlY3V0YWJsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fYXNTdHJpbmcp
OworfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oTmF0aXZlRXhlY3V0YWJsZSk7CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXhlY3V0YWJsZS5oCmluZGV4IDc2NmM5NmFkNDA0OTYyYmY0ZmE3M2ExOTgxYWI4NTk4NWMxNDJj
NWQuLjdmMTIzZWY3MjMzOTFkNDFlNDQ2MTllNGM1YTBlMWQ2ZjNlMWViNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKQEAgLTY3LDYg
KzY3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE5hdGl2ZUV4
ZWN1dGFibGUsIG1fY29uc3RydWN0b3IpOwogICAgIH0KIAorICAgIERFQ0xBUkVfVklTSVRfQ0hJ
TERSRU47CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvKTsKICAgICAgICAgCiAgICAgREVDTEFSRV9JTkZPOwpA
QCAtNzYsMTQgKzc3LDI3IEBAIHB1YmxpYzoKICAgICBjb25zdCBET01KSVQ6OlNpZ25hdHVyZSog
c2lnbmF0dXJlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpIGNvbnN0OwogICAgIEludHJpbnNp
YyBpbnRyaW5zaWMoKSBjb25zdDsKIAorICAgIEpTU3RyaW5nKiB0b1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2FzU3RyaW5nKQorICAg
ICAgICAgICAgcmV0dXJuIHRvU3RyaW5nU2xvdyhnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4gbV9hc1N0cmluZy5nZXQoKTsKKyAgICB9CisKKyAgICBKU1N0cmluZyogYXNTdHJpbmdDb25j
dXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBtX2FzU3RyaW5nLmdldCgpOyB9CisgICAgc3RhdGlj
IGlubGluZSBwdHJkaWZmX3Qgb2Zmc2V0T2ZBc1N0cmluZygpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihOYXRpdmVFeGVjdXRhYmxlLCBtX2FzU3RyaW5nKTsgfQorCiBwcml2YXRlOgogICAgIE5h
dGl2ZUV4ZWN1dGFibGUoVk0mLCBUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVu
Y3Rpb24gY29uc3RydWN0b3IpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBSZWY8SklU
Q29kZT4mJiBjYWxsVGh1bmssIFJlZjxKSVRDb2RlPiYmIGNvbnN0cnVjdFRodW5rLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCisgICAgSlNTdHJpbmcqIHRvU3RyaW5nU2xvdyhKU0dsb2JhbE9iamVj
dCopOworCiAgICAgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gbV9mdW5jdGlvbjsKICAgICBUYWdnZWRO
YXRpdmVGdW5jdGlvbiBtX2NvbnN0cnVjdG9yOwogCiAgICAgU3RyaW5nIG1fbmFtZTsKKyAgICBX
cml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fYXNTdHJpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNzA2MTI1YTIyZDQyY2RjYTIzODYyZjI1Nzg1MDZmY2U5MmZkYTMxYS4uNTU2NDY4MWI4ZmMw
ODRjZGVjNzM0NDY0NmM4YWIwYjJjMDY3YmM5ZiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNi0wMyAg
VGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KKworICAgICAgICBPcHRpbWl6ZSBG
dW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjQxOAorICAgICAgICA8cmRhcjovLzc3ODYxODQ2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL2Z1bmN0aW9uLXRvLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmKToKKyAgICAgICAg
KEMpOgorICAgICAgICAoQy5wcm90b3R5cGUubWV0aG9kMSk6CisgICAgICAgIChDLnByb3RvdHlw
ZS5tZXRob2QyKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAodGVzdDIpOgorCiAyMDIxLTA1
LTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBT
dXBwb3J0IEVyZ29ub21pYyBCcmFuZCBDaGVja3MgcHJvcG9zYWwgKGAjeCBpbiBvYmpgKQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tdG8tc3RyaW5nLmpzIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvZnVuY3Rpb24tdG8tc3RyaW5nLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg4NTJiMjg0MmIwYTYwMWM2OGVhYTcwOWZjZDllMzhkMGJhNmEwN2EKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9mdW5jdGlvbi10by1zdHJpbmcuanMKQEAgLTAs
MCArMSw0MCBAQAorZnVuY3Rpb24gZih4LCB5LCB6KSB7CisgICAgLy8gY29tbWVudCBpbiB0aGUg
Ym9keQorICAgIGNvbnN0IHcgPSA0MjsKKyAgICByZXR1cm4gdyArIHggKyB5ICsgejsKKworfQor
bm9JbmxpbmUoZik7CisKK2NsYXNzIEMgeworICAgIC8vIGNvbW1lbnQgaW4gdGhlIGNsYXNzCisg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgfQorCisgICAgbWV0aG9kMSgpIHsKKyAgICAgICAgcmV0
dXJuICJzb21lIHN0cmluZyI7CisgICAgfQorCisgICAgbWV0aG9kMigpIHsKKyAgICAgICAgcmV0
dXJuIDQyOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBmLnRvU3RyaW5nKCk7
CisgICAgQy50b1N0cmluZygpOworICAgIHByaW50LnRvU3RyaW5nKCk7Cit9Citub0lubGluZSh0
ZXN0KTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxZTc7ICsraSkKKyAgICB0ZXN0KCk7CisKK2Z1
bmN0aW9uIHRlc3QyKHgsIHksIHopIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNjsgKytp
KSB7CisgICAgICAgIGYoeC50b1N0cmluZygpLCB5LnRvU3RyaW5nKCksIHoudG9TdHJpbmcoKSwg
eC50b1N0cmluZygpLCB5LnRvU3RyaW5nKCkpOworICAgIH0KK30KK25vSW5saW5lKHRlc3QyKTsK
KwordGVzdDIoZiwgQywgcHJpbnQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>