<?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>226296</bug_id>
          
          <creation_ts>2021-05-26 14:51:15 -0700</creation_ts>
          <short_desc>[WASM-Function-References] Add support for (ref null? $t) type constructor</short_desc>
          <delta_ts>2022-11-02 17:08:56 -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>WebAssembly</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>
          
          <blocked>247393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Asumu Takikawa">asumu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbezhetskov</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1764066</commentid>
    <comment_count>0</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2021-05-26 14:51:15 -0700</bug_when>
    <thetext>This is a bug for adding the `(ref null? $t)` type constructor, which is part of the typed function references proposal (https://github.com/WebAssembly/function-references) and also needed for GC and type imports proposals.

The internal representation for such types was mostly already added in https://bugs.webkit.org/show_bug.cgi?id=222779. What&apos;s needed in addition is the ability to parse such types from Wasm binaries, and to represent nullability in the type. Adding nullability requires some additional checks in the Wasm/JS boundary in case the type is marked non-null (before typed function references, all reference types are nullable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764082</commentid>
    <comment_count>1</comment_count>
      <attachid>429803</attachid>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2021-05-26 15:23:47 -0700</bug_when>
    <thetext>Created attachment 429803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764083</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-26 15:24:46 -0700</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764241</commentid>
    <comment_count>3</comment_count>
      <attachid>429803</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-05-27 00:30:16 -0700</bug_when>
    <thetext>Comment on attachment 429803
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmParser.h:280
&gt; +        Type type = {static_cast&lt;TypeKind&gt;(typeKind), true, 0};

I would rather use `enum class Nullable = {Yes, No}` instead of `bool` so we can use Nullable::Yes here, but I don&apos;t mind `bool` too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764274</commentid>
    <comment_count>4</comment_count>
      <attachid>429803</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-27 03:07:15 -0700</bug_when>
    <thetext>Comment on attachment 429803
Patch

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

Nice. Quick comment on ChangeLog files.

&gt; Source/JavaScriptCore/ChangeLog:85
&gt; +        JSTests:
&gt; +        * wasm/function-references/ref_types.js: Added.
&gt; +        (module):
&gt; +        (async testRefTypeLocal):
&gt; +        (async testNonNullRefTypeLocal):
&gt; +        (async testRefTypeInSignature):
&gt; +        (async testRefTypeParamCheck):
&gt; +        (async testRefGlobalCheck):
&gt; +        (async testExternFuncrefNonNullCheck):
&gt; +        (async testExternrefCompatibility):
&gt; +        (async testNonNullExternrefIncompatible):
&gt; +        (async testFuncrefCompatibility):
&gt; +        (async testNonNullFuncrefIncompatible):
&gt; +        * wasm/wasm.json:
&gt; +
&gt; +        Source/JavaScriptCore:
&gt; +        * wasm/WasmAirIRGenerator.cpp:
&gt; +        (JSC::Wasm::AirIRGenerator::gTypeIdx):
&gt; +        (JSC::Wasm::AirIRGenerator::tmpForType):
&gt; +        (JSC::Wasm::AirIRGenerator::emitCCall):
&gt; +        (JSC::Wasm::AirIRGenerator::moveOpForValueType):
&gt; +        (JSC::Wasm::AirIRGenerator::AirIRGenerator):
&gt; +        (JSC::Wasm::AirIRGenerator::addLocal):
&gt; +        (JSC::Wasm::AirIRGenerator::addConstant):
&gt; +        (JSC::Wasm::AirIRGenerator::addRefFunc):
&gt; +        * wasm/WasmCallingConvention.h:
&gt; +        (JSC::Wasm::WasmCallingConvention::marshallLocation const):
&gt; +        (JSC::Wasm::JSCallingConvention::marshallLocation const):
&gt; +        * wasm/WasmFormat.h:
&gt; +        (JSC::Wasm::isSubtype):
&gt; +        (JSC::Wasm::isValidHeapTypeKind):
&gt; +        (JSC::Wasm::isDefaultableType):
&gt; +        * wasm/WasmFunctionParser.h:
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::parse):
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::parseAnnotatedSelectImmediates):
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::checkBranchTarget):
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::parseExpression):
&gt; +        * wasm/WasmGlobal.cpp:
&gt; +        (JSC::Wasm::Global::get const):
&gt; +        (JSC::Wasm::Global::set):
&gt; +        * wasm/WasmLLIntGenerator.cpp:
&gt; +        (JSC::Wasm::LLIntGenerator::callInformationForCaller):
&gt; +        (JSC::Wasm::LLIntGenerator::callInformationForCallee):
&gt; +        (JSC::Wasm::LLIntGenerator::addArguments):
&gt; +        * wasm/WasmParser.h:
&gt; +        (JSC::Wasm::Parser&lt;SuccessType&gt;::parseBlockSignature):
&gt; +        (JSC::Wasm::Parser&lt;SuccessType&gt;::parseValueType):
&gt; +        (JSC::Wasm::Parser&lt;SuccessType&gt;::parseRefType):
&gt; +        * wasm/WasmSectionParser.cpp:
&gt; +        (JSC::Wasm::SectionParser::parseType):
&gt; +        (JSC::Wasm::SectionParser::parseElement):
&gt; +        (JSC::Wasm::SectionParser::parseInitExpr):
&gt; +        (JSC::Wasm::SectionParser::parseElementSegmentVectorOfExpressions):
&gt; +        (JSC::Wasm::SectionParser::parseGlobalType):
&gt; +        * wasm/WasmSignature.cpp:
&gt; +        (JSC::Wasm::computeHash):
&gt; +        * wasm/generateWasmOpsHeader.py:
&gt; +        * wasm/js/WasmToJS.cpp:
&gt; +        (JSC::Wasm::wasmToJS):
&gt; +        * wasm/js/WebAssemblyFunction.cpp:
&gt; +        (JSC::JSC_DEFINE_HOST_FUNCTION):
&gt; +        * wasm/js/WebAssemblyModuleRecord.cpp:
&gt; +        (JSC::WebAssemblyModuleRecord::linkImpl):
&gt; +        * wasm/wasm.json:

Please remove this duplicate entry.
And these entries are including files that are not in Source/JavaScriptCore.

&gt; JSTests/ChangeLog:75
&gt; +        Source/JavaScriptCore:
&gt; +        * wasm/WasmAirIRGenerator.cpp:
&gt; +        (JSC::Wasm::AirIRGenerator::gTypeIdx):
&gt; +        (JSC::Wasm::AirIRGenerator::tmpForType):
&gt; +        (JSC::Wasm::AirIRGenerator::emitCCall):
&gt; +        (JSC::Wasm::AirIRGenerator::moveOpForValueType):
&gt; +        (JSC::Wasm::AirIRGenerator::AirIRGenerator):
&gt; +        (JSC::Wasm::AirIRGenerator::addLocal):
&gt; +        (JSC::Wasm::AirIRGenerator::addConstant):
&gt; +        (JSC::Wasm::AirIRGenerator::addRefFunc):
&gt; +        * wasm/WasmCallingConvention.h:
&gt; +        (JSC::Wasm::WasmCallingConvention::marshallLocation const):
&gt; +        (JSC::Wasm::JSCallingConvention::marshallLocation const):
&gt; +        * wasm/WasmFormat.h:
&gt; +        (JSC::Wasm::isSubtype):
&gt; +        (JSC::Wasm::isValidHeapTypeKind):
&gt; +        (JSC::Wasm::isDefaultableType):
&gt; +        * wasm/WasmFunctionParser.h:
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::parse):
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::parseAnnotatedSelectImmediates):
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::checkBranchTarget):
&gt; +        (JSC::Wasm::FunctionParser&lt;Context&gt;::parseExpression):
&gt; +        * wasm/WasmGlobal.cpp:
&gt; +        (JSC::Wasm::Global::get const):
&gt; +        (JSC::Wasm::Global::set):
&gt; +        * wasm/WasmLLIntGenerator.cpp:
&gt; +        (JSC::Wasm::LLIntGenerator::callInformationForCaller):
&gt; +        (JSC::Wasm::LLIntGenerator::callInformationForCallee):
&gt; +        (JSC::Wasm::LLIntGenerator::addArguments):
&gt; +        * wasm/WasmParser.h:
&gt; +        (JSC::Wasm::Parser&lt;SuccessType&gt;::parseBlockSignature):
&gt; +        (JSC::Wasm::Parser&lt;SuccessType&gt;::parseValueType):
&gt; +        (JSC::Wasm::Parser&lt;SuccessType&gt;::parseRefType):
&gt; +        * wasm/WasmSectionParser.cpp:
&gt; +        (JSC::Wasm::SectionParser::parseType):
&gt; +        (JSC::Wasm::SectionParser::parseElement):
&gt; +        (JSC::Wasm::SectionParser::parseInitExpr):
&gt; +        (JSC::Wasm::SectionParser::parseElementSegmentVectorOfExpressions):
&gt; +        (JSC::Wasm::SectionParser::parseGlobalType):
&gt; +        * wasm/WasmSignature.cpp:
&gt; +        (JSC::Wasm::computeHash):
&gt; +        * wasm/generateWasmOpsHeader.py:
&gt; +        * wasm/js/WasmToJS.cpp:
&gt; +        (JSC::Wasm::wasmToJS):
&gt; +        * wasm/js/WebAssemblyFunction.cpp:
&gt; +        (JSC::JSC_DEFINE_HOST_FUNCTION):
&gt; +        * wasm/js/WebAssemblyModuleRecord.cpp:
&gt; +        (JSC::WebAssemblyModuleRecord::linkImpl):
&gt; +        * wasm/wasm.json:
&gt; +

They are JSC&apos;s entries. Please do not include them in JSTests/ChangeLog.
Entries should be auto-generated by webkit-patch upload --update-changelogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764528</commentid>
    <comment_count>5</comment_count>
      <attachid>429937</attachid>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2021-05-27 15:12:06 -0700</bug_when>
    <thetext>Created attachment 429937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764532</commentid>
    <comment_count>6</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2021-05-27 15:17:10 -0700</bug_when>
    <thetext>Thanks for the feedback! I changed the patch to use an enum field so that the constructor uses are clearer (and added a `isNullable` method so that checking it is nearly the same as before).

I believe I&apos;ve also fixed up the ChangeLogs now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766173</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-02 14:52:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/78784066&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766711</commentid>
    <comment_count>8</comment_count>
      <attachid>429937</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-04 01:16:56 -0700</bug_when>
    <thetext>Comment on attachment 429937
Patch

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

The direction looks good! I left several comments. The main ones are related to IC and Wasm&apos;s global set.

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:1101
&gt; +        result = tmpForType(Type {TypeKind::TypeIdx, Nullable::No, signatureIndex});

Insert space around { and }.

&gt; Source/JavaScriptCore/wasm/WasmGlobal.cpp:118
&gt; -        if (!isWebAssemblyHostFunction(vm, argument) &amp;&amp; !argument.isNull()) {
&gt; +        bool isNullable = m_type.isNullable();
&gt; +        WebAssemblyFunction* wasmFunction = nullptr;
&gt; +        WebAssemblyWrapperFunction* wasmWrapperFunction = nullptr;
&gt; +        if (!isWebAssemblyHostFunction(vm, argument, wasmFunction, wasmWrapperFunction) &amp;&amp; (!isNullable || !argument.isNull())) {
&gt;              throwException(globalObject, throwScope, createJSWebAssemblyRuntimeError(globalObject, vm, &quot;Funcref must be an exported wasm function&quot;));
&gt;              return;
&gt;          }
&gt; +        if (m_type.kind == TypeKind::TypeIdx &amp;&amp; (wasmFunction || wasmWrapperFunction)) {
&gt; +            Wasm::SignatureIndex paramIndex = m_type.index;
&gt; +            Wasm::SignatureIndex argIndex;
&gt; +            if (wasmFunction)
&gt; +                argIndex = wasmFunction-&gt;signatureIndex();
&gt; +            else
&gt; +                argIndex = wasmWrapperFunction-&gt;signatureIndex();
&gt; +            if (paramIndex != argIndex) {
&gt; +                throwException(globalObject, throwScope, createJSWebAssemblyRuntimeError(globalObject, vm, &quot;Argument function did not match the reference type&quot;));
&gt; +                return;
&gt; +            }
&gt; +        }

Does this nullable check happen in Wasm&apos;s global set? Can we have a test that ensures this exception happens in wasm too?

&gt; Source/JavaScriptCore/wasm/WasmParser.h:332
&gt; +    Type type = {typeKind, static_cast&lt;Nullable&gt;(isNullable), sigIndex};

Ditto. Insert spaces around { and }.

&gt; Source/JavaScriptCore/wasm/WasmSectionParser.cpp:622
&gt; +            resultType = {TypeKind::TypeIdx, Nullable::No, signatureIndex};

Insert spaces around { and }.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:103
&gt;              break;

We need to have the same kind of handling in jsCallEntrypointSlow.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:107
&gt; +            if (!signature.argument(argIndex).isNullable() &amp;&amp; arg.isNull())
&gt; +                return JSValue::encode(throwException(globalObject, scope, createJSWebAssemblyRuntimeError(globalObject, vm, &quot;Non-null Externref cannot be null&quot;)));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767656</commentid>
    <comment_count>9</comment_count>
      <attachid>429937</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-07 20:28:47 -0700</bug_when>
    <thetext>Comment on attachment 429937
Patch

For now, putting r- since we need some handling in IC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769491</commentid>
    <comment_count>10</comment_count>
      <attachid>431350</attachid>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2021-06-14 12:01:14 -0700</bug_when>
    <thetext>Created attachment 431350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769495</commentid>
    <comment_count>11</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2021-06-14 12:06:35 -0700</bug_when>
    <thetext>Thanks for pointing out these issues! I&apos;ve pushed a new patch that adds the IC paths in `WebAssemblyFunction.cpp`, and also tests them (by looping for the relevant test cases).

&gt; Does this nullable check happen in Wasm&apos;s global set? Can we have a test that ensures this exception happens in wasm too?

This check should not be needed at runtime for global set, because Wasm validation should prevent it from compiling if a null argument is passed. I have added a test case that makes sure this validation happens to the end of `testRefGlobalCheck()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772416</commentid>
    <comment_count>12</comment_count>
      <attachid>432202</attachid>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2021-06-24 12:25:03 -0700</bug_when>
    <thetext>Created attachment 432202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772524</commentid>
    <comment_count>13</comment_count>
      <attachid>432202</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-06-24 18:56:59 -0700</bug_when>
    <thetext>Comment on attachment 432202
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772525</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-24 19:23:36 -0700</bug_when>
    <thetext>Committed r279265 (239144@main): &lt;https://commits.webkit.org/239144@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 432202.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429803</attachid>
            <date>2021-05-26 15:23:47 -0700</date>
            <delta_ts>2021-05-27 15:12:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226296-20210526152347.patch</filename>
            <type>text/plain</type>
            <size>57816</size>
            <attacher name="Asumu Takikawa">asumu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li4yYjgxMTY3MDE0M2MyNThh
ZjBmZmI5ZDM2YWI4NmYzNjU1Yzc0ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzggQEAKKzIwMjEtMDUtMjYgIEFzdW11IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNv
bT4KKworICAgICAgICBbV0FTTS1GdW5jdGlvbi1SZWZlcmVuY2VzXSBhZGQgYChyZWYgbnVsbD8g
JHQpYCB0eXBlIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYyOTYKKworICAgICAgICBBZGRzIHRoZSBgcmVmYCB0eXBlIGNvbnN0
cnVjdG9yIGZyb20gdGhlIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgcHJvcG9zYWw6CisKKyAg
ICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZnVuY3Rpb24tcmVmZXJlbmNl
cy9ibG9iL21hc3Rlci9wcm9wb3NhbHMvZnVuY3Rpb24tcmVmZXJlbmNlcy9PdmVydmlldy5tZAor
CisgICAgICAgIEl0J3MgYWxzbyByZXF1aXJlZCBmb3IgdGhlIHR5cGUgaW1wb3J0cyBhbmQgR0Mg
cHJvcG9zYWxzIGFzIHdlbGwuIFJlZiB0eXBlcyByZXByZXNlbnQKKyAgICAgICAgcmVmZXJlbmNl
cyB0byBhbnkgaGVhcCB0eXBlIChpbmNsdWRpbmcgZXhpc3RpbmcgZnVuY3JlZiBhbmQgZXh0ZXJu
cmVmKSB3aXRoIGEgc3BlY2lmaWVkCisgICAgICAgIG51bGxhYmlsaXR5LgorCisgICAgICAgIFRo
aXMgcmVxdWlyZXMgYSBuZXcgaXNOdWxsYWJsZSBmbGFnIGluIHRoZSB0eXBlIHJlcHJlc2VudGF0
aW9uLiBUaGlzIGZsYWcgYWxzbyBlbmFibGVzCisgICAgICAgIG5vbi1udWxsIGV4dGVybnJlZiBh
bmQgZnVuY3JlZnMsIGFuZCBoZW5jZSB0aGlzIGNvbW1pdCBhbHNvIGFkZHMgdGhlIG5lY2Vzc2Fy
eSBjaGVja3MKKyAgICAgICAgYXQgV2FzbS9KUyBib3VuZGFyaWVzLgorCisgICAgICAgIE5vbi1u
dWxsIHJlZmVyZW5jZSB0eXBlcyBhbHNvIGdlbmVyYWxseSBjYW5ub3QgYmUgdXNlZCBhcyBmdW5j
dGlvbiBsb2NhbHMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSlNUZXN0czoKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVmX3R5
cGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgIChhc3luYyB0ZXN0UmVm
VHlwZUxvY2FsKToKKyAgICAgICAgKGFzeW5jIHRlc3ROb25OdWxsUmVmVHlwZUxvY2FsKToKKyAg
ICAgICAgKGFzeW5jIHRlc3RSZWZUeXBlSW5TaWduYXR1cmUpOgorICAgICAgICAoYXN5bmMgdGVz
dFJlZlR5cGVQYXJhbUNoZWNrKToKKyAgICAgICAgKGFzeW5jIHRlc3RSZWZHbG9iYWxDaGVjayk6
CisgICAgICAgIChhc3luYyB0ZXN0RXh0ZXJuRnVuY3JlZk5vbk51bGxDaGVjayk6CisgICAgICAg
IChhc3luYyB0ZXN0RXh0ZXJucmVmQ29tcGF0aWJpbGl0eSk6CisgICAgICAgIChhc3luYyB0ZXN0
Tm9uTnVsbEV4dGVybnJlZkluY29tcGF0aWJsZSk6CisgICAgICAgIChhc3luYyB0ZXN0RnVuY3Jl
ZkNvbXBhdGliaWxpdHkpOgorICAgICAgICAoYXN5bmMgdGVzdE5vbk51bGxGdW5jcmVmSW5jb21w
YXRpYmxlKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKworICAgICAgICBTb3VyY2UvSmF2
YVNjcmlwdENvcmU6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6Z1R5cGVJZHgpOgorICAgICAgICAoSlND
OjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6dG1wRm9yVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjplbWl0Q0NhbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdl
bmVyYXRvcjo6bW92ZU9wRm9yVmFsdWVUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJH
ZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5l
cmF0b3I6OmFkZExvY2FsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFk
ZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZFJlZkZ1
bmMpOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmg6CisgICAgICAgIChK
U0M6Oldhc206Oldhc21DYWxsaW5nQ29udmVudGlvbjo6bWFyc2hhbGxMb2NhdGlvbiBjb25zdCk6
CisgICAgICAgIChKU0M6Oldhc206OkpTQ2FsbGluZ0NvbnZlbnRpb246Om1hcnNoYWxsTG9jYXRp
b24gY29uc3QpOgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpX
YXNtOjppc1N1YnR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjppc1ZhbGlkSGVhcFR5cGVLaW5k
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNEZWZhdWx0YWJsZVR5cGUpOgorICAgICAgICAqIHdh
c20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFy
c2VyPENvbnRleHQ+OjpwYXJzZSk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2Vy
PENvbnRleHQ+OjpwYXJzZUFubm90YXRlZFNlbGVjdEltbWVkaWF0ZXMpOgorICAgICAgICAoSlND
OjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6Y2hlY2tCcmFuY2hUYXJnZXQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9u
KToKKyAgICAgICAgKiB3YXNtL1dhc21HbG9iYWwuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpH
bG9iYWw6OmdldCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6c2V0KToKKyAg
ICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIpOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyk6CisgICAgICAgICog
d2FzbS9XYXNtUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlw
ZT46OnBhcnNlQmxvY2tTaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3Vj
Y2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxT
dWNjZXNzVHlwZT46OnBhcnNlUmVmVHlwZSk6CisgICAgICAgICogd2FzbS9XYXNtU2VjdGlvblBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSk6
CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCk6CisgICAg
ICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIpOgorICAgICAgICAo
SlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnRTZWdtZW50VmVjdG9yT2ZFeHBy
ZXNzaW9ucyk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlR2xvYmFs
VHlwZSk6CisgICAgICAgICogd2FzbS9XYXNtU2lnbmF0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIHdhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVy
LnB5OgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNt
Ojp3YXNtVG9KUyk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwor
ICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6QWlySVJHZW5lcmF0b3I6OmdUeXBlSWR4KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJH
ZW5lcmF0b3I6OnRtcEZvclR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6ZW1pdENDYWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6Om1vdmVP
cEZvclZhbHVlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpBaXJJ
UkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRMb2Nh
bCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDb25zdGFudCk6Cisg
ICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKToKKyAgICAgICAg
KiB3YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpXYXNt
Q2FsbGluZ0NvbnZlbnRpb246Om1hcnNoYWxsTG9jYXRpb24gY29uc3QpOgorICAgICAgICAoSlND
OjpXYXNtOjpKU0NhbGxpbmdDb252ZW50aW9uOjptYXJzaGFsbExvY2F0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNTdWJ0eXBl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNWYWxpZEhlYXBUeXBlS2luZCk6CisgICAgICAgIChK
U0M6Oldhc206OmlzRGVmYXVsdGFibGVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlv
blBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFy
c2VBbm5vdGF0ZWRTZWxlY3RJbW1lZGlhdGVzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OmNoZWNrQnJhbmNoVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgICog
d2FzbS9XYXNtR2xvYmFsLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6R2xvYmFsOjpnZXQgY29u
c3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpHbG9iYWw6OnNldCk6CisgICAgICAgICogd2FzbS9X
YXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVyYXRv
cjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZSk6CisgICAgICAgIChKU0M6Oldhc206
OkxMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOgorICAgICAgICAqIHdhc20vV2FzbVBhcnNl
ci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUJsb2Nr
U2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZVJlZlR5cGUpOgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUpOgorICAgICAgICAoSlND
OjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQpOgorICAgICAgICAoSlNDOjpXYXNt
OjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2Vj
dGlvblBhcnNlcjo6cGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mRXhwcmVzc2lvbnMpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUdsb2JhbFR5cGUpOgorICAgICAg
ICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNvbXB1dGVI
YXNoKToKKyAgICAgICAgKiB3YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weToKKyAgICAgICAg
KiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
OjpsaW5rSW1wbCk6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMDUtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgVW5jaGVja2VkTG9j
ayBldmVuIGxlc3MgaW4gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDAwYTE3YzQwNjRhNjAzMGMzZTRh
NGY5Njc3MjE0YTU3YTdiZjc5OTAuLjM0MDk4YWI2YjA0ZDFjNjI2N2EyZDgzZmExMTBiOTBmMzYy
ZjNlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcApAQCAtNDEzLDYgKzQxMyw3IEBAIHByaXZhdGU6CiAgICAgVHlwZWRUbXAgZzY0
KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkdQKSwgVHlwZXM6Okk2NCB9OyB9CiAgICAgVHlwZWRU
bXAgZ0V4dGVybnJlZigpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpHUCksIFR5cGVzOjpFeHRlcm5y
ZWYgfTsgfQogICAgIFR5cGVkVG1wIGdGdW5jcmVmKCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkdQ
KSwgVHlwZXM6OkZ1bmNyZWYgfTsgfQorICAgIFR5cGVkVG1wIGdUeXBlSWR4KFR5cGUgdHlwZSkg
eyByZXR1cm4geyBuZXdUbXAoQjM6OkdQKSwgdHlwZSB9OyB9CiAgICAgVHlwZWRUbXAgZjMyKCkg
eyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OkYzMiB9OyB9CiAgICAgVHlwZWRUbXAg
ZjY0KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OkY2NCB9OyB9CiAKQEAgLTQy
NSw2ICs0MjYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGc2NCgpOwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICAgICAgcmV0dXJuIGdGdW5jcmVmKCk7
CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CisgICAgICAgICAgICByZXR1cm4gZ1R5
cGVJZHgodHlwZSk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAg
ICAgIHJldHVybiBnRXh0ZXJucmVmKCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAg
LTYwMSw2ICs2MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0
OgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6
CiAgICAgICAgICAgICAgICAgcmVzdWx0VHlwZSA9IEIzOjpJbnQ2NDsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAgLTY1MCw2ICs2NTQs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAg
ICAgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAgIHJldHVybiBNb3ZlOwog
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0
OwpAQCAtOTA3LDYgKzkxMiw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBl
SWR4OgogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIGFyZywgbV9sb2NhbHNbaV0pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAgLTEwMDksNiArMTAx
NSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3Qg
Y291bnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jcmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4OgogICAgICAgICAgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6aW1tKEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpLCBsb2NhbCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgpAQCAtMTA0NCw2
ICsxMDUxLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoQmFzaWNCbG9jayog
YmxvY2ssIFR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpIC0KICAgICBjYXNlIFR5cGVLaW5kOjpJ
NjQ6CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgYXBwZW5kKGJsb2Nr
LCBNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1ZSksIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAgLTEwODgsNyArMTA5NiwxMSBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklY
TUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTg1MDY+LgotICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkZ1bmNyZWYpOwor
ICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkp
IHsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0
dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKKyAgICAgICAgcmVzdWx0ID0g
dG1wRm9yVHlwZShUeXBlIHtUeXBlS2luZDo6VHlwZUlkeCwgZmFsc2UsIHNpZ25hdHVyZUluZGV4
fSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkZ1bmNy
ZWYpOwogICAgIGVtaXRDQ2FsbCgmb3BlcmF0aW9uV2FzbVJlZkZ1bmMsIHJlc3VsdCwgaW5zdGFu
Y2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlczo6STMyLCBpbmRleCkpOwogCiAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5n
Q29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252
ZW50aW9uLmgKaW5kZXggODgwZTQ0NmJkYzhiZDBlOGU5YWVlOWY5MDM2MDM5NTM0NDhhNWY1Yi4u
NmMwMjZlMDhhNDA5ZTk5NWQ0MzE4ZGZiMTgwNDYyNmQwZmFkMTc1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgKQEAgLTEwNyw2
ICsxMDcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJl
ZjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAgIHJldHVybiBt
YXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBncHJBcmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNr
T2Zmc2V0KTsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBjYXNlIFR5cGVL
aW5kOjpGNjQ6CkBAIC0xOTUsNiArMTk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6STY0OgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAg
ICAgICAgICAgICByZXR1cm4gbWFyc2hhbGxMb2NhdGlvbkltcGwocm9sZSwgZ3ByQXJncywgZ3BB
cmd1bWVudENvdW50LCBzdGFja09mZnNldCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoK
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZvcm1hdC5oCmluZGV4IDgwN2FkYjhlNzA1ZDhmNzUyOWE1NGM4ZjI0MzEzMGNkZWFjZmY0NTIu
LjMyMjBhMjNkZGRhOTFhZTBlNDRmZGJmOWE5NWU5MGE0ZGM5MTg3MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTgwLDYgKzgwLDkgQEAgaW5saW5lIGJvb2wg
aXNWYWx1ZVR5cGUoVHlwZSB0eXBlKQogCiBpbmxpbmUgYm9vbCBpc1N1YnR5cGUoVHlwZSBzdWIs
IFR5cGUgcGFyZW50KQogeworICAgIGlmIChzdWIuaXNOdWxsYWJsZSAmJiAhcGFyZW50LmlzTnVs
bGFibGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmIChzdWIuaXNUeXBlSWR4KCkg
JiYgcGFyZW50LmlzRnVuY3JlZigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtOTEsNiAr
OTQsMjMgQEAgaW5saW5lIGJvb2wgaXNSZWZUeXBlKFR5cGUgdHlwZSkKICAgICByZXR1cm4gdHlw
ZS5pc0Z1bmNyZWYoKSB8fCB0eXBlLmlzRXh0ZXJucmVmKCkgfHwgdHlwZS5pc1R5cGVJZHgoKTsK
IH0KIAoraW5saW5lIGJvb2wgaXNWYWxpZEhlYXBUeXBlS2luZChUeXBlS2luZCBraW5kKQorewor
ICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgY2Fz
ZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUg
Ym9vbCBpc0RlZmF1bHRhYmxlVHlwZShUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuICFpc1JlZlR5
cGUodHlwZSkgfHwgdHlwZS5pc051bGxhYmxlOworfQorCiBlbnVtIGNsYXNzIEV4dGVybmFsS2lu
ZCA6IHVpbnQ4X3QgewogICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUgdGhpcy4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQogICAgIEZ1bmN0aW9uID0gMCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5k
ZXggYjA1Nzc5MWZiOGYxMzY1ZWM2ZTZmZDNhOWM1ZDY2OTUyNTgwNzc0NC4uNzQ2ZGRhMjBiNjYw
N2UyM2VmNGVkYjU4ZDg2NGZjNzU4NmZlOWQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI0Myw3ICsyNDMsOCBAQCBhdXRvIEZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpIC0+IFJlc3VsdAogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihudW1iZXJPZkxvY2FscyksICJjYW4ndCBnZXQg
RnVuY3Rpb24ncyBudW1iZXIgb2YgbG9jYWxzIGluIGdyb3VwICIsIGkpOwogICAgICAgICB0b3Rh
bE51bWJlck9mTG9jYWxzICs9IG51bWJlck9mTG9jYWxzOwogICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKHRvdGFsTnVtYmVyT2ZMb2NhbHMgPiBtYXhGdW5jdGlvbkxvY2FscywgIkZ1bmN0aW9u
J3MgbnVtYmVyIG9mIGxvY2FscyBpcyB0b28gYmlnICIsIHRvdGFsTnVtYmVyT2ZMb2NhbHMsICIg
bWF4aW11bSAiLCBtYXhGdW5jdGlvbkxvY2Fscyk7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlVmFsdWVUeXBlKHR5cGVPZkxvY2FsKSwgImNhbid0IGdldCBGdW5jdGlvbiBsb2Nh
bCdzIHR5cGUgaW4gZ3JvdXAgIiwgaSk7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlVmFsdWVUeXBlKG1faW5mbywgdHlwZU9mTG9jYWwpLCAiY2FuJ3QgZ2V0IEZ1bmN0aW9uIGxv
Y2FsJ3MgdHlwZSBpbiBncm91cCAiLCBpKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
aXNEZWZhdWx0YWJsZVR5cGUodHlwZU9mTG9jYWwpLCAiRnVuY3Rpb24gbG9jYWxzIG11c3QgaGF2
ZSBhIGRlZmF1bHRhYmxlIHR5cGUiKTsKIAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFt
X2xvY2Fscy50cnlSZXNlcnZlQ2FwYWNpdHkodG90YWxOdW1iZXJPZkxvY2FscyksICJjYW4ndCBh
bGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBmdW5jdGlvbidzICIsIHRvdGFsTnVtYmVyT2ZMb2Nh
bHMsICIgbG9jYWxzIik7CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBudW1iZXJP
ZkxvY2FsczsgKytpKQpAQCAtNjQ0LDcgKzY0NSw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlQW5ub3RhdGVkU2VsZWN0SW1tZWRpYXRlcyhBbm5vdGF0ZWRTZWxlY3RJbW1l
CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzaXplT2ZBbm5vdGF0aW9uVmVjdG9yICE9IDEsICJz
ZWxlY3QgaW52YWxpZCByZXN1bHQgYXJpdHkgZm9yIik7CiAKICAgICBUeXBlIHRhcmdldFR5cGU7
Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUodGFyZ2V0VHlwZSksICJz
ZWxlY3QgY2FuJ3QgcGFyc2UgYW5ub3RhdGlvbnMiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVZhbHVlVHlwZShtX2luZm8sIHRhcmdldFR5cGUpLCAic2VsZWN0IGNhbid0IHBhcnNl
IGFubm90YXRpb25zIik7CiAKICAgICByZXN1bHQuc2l6ZU9mQW5ub3RhdGlvblZlY3RvciA9IHNp
emVPZkFubm90YXRpb25WZWN0b3I7CiAgICAgcmVzdWx0LnRhcmdldFR5cGUgPSB0YXJnZXRUeXBl
OwpAQCAtNjk5LDcgKzcwMCw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OmNoZWNr
QnJhbmNoVGFyZ2V0KGNvbnN0IENvbnRyb2xUeXBlJiB0YXJnZXQpIC0+IFBhCiAKICAgICB1bnNp
Z25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSB0YXJnZXQuYnJhbmNoVGFy
Z2V0QXJpdHkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFyZ2V0LmJyYW5jaFRh
cmdldEFyaXR5KCk7ICsraSkKLSAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNTdWJ0
eXBlKHRhcmdldC5icmFuY2hUYXJnZXRUeXBlKGkpLCBtX2V4cHJlc3Npb25TdGFja1tvZmZzZXQg
KyBpXS50eXBlKCkpLCAiYnJhbmNoJ3Mgc3RhY2sgdHlwZSBpcyBub3QgYSBibG9jaydzIHR5cGUg
YnJhbmNoIHRhcmdldCB0eXBlLiBTdGFjayB2YWx1ZSBoYXMgdHlwZSIsIG1fZXhwcmVzc2lvblN0
YWNrW29mZnNldCArIGldLnR5cGUoKS5raW5kLCAiIGJ1dCBicmFuY2ggdGFyZ2V0IGV4cGVjdHMg
YSB2YWx1ZSBvZiAiLCB0YXJnZXQuYnJhbmNoVGFyZ2V0VHlwZShpKS5raW5kLCAiIGF0IGluZGV4
ICIsIGkpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUobV9leHBy
ZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLCB0YXJnZXQuYnJhbmNoVGFyZ2V0VHlwZShp
KSksICJicmFuY2gncyBzdGFjayB0eXBlIGlzIG5vdCBhIGJsb2NrJ3MgdHlwZSBicmFuY2ggdGFy
Z2V0IHR5cGUuIFN0YWNrIHZhbHVlIGhhcyB0eXBlICIsIG1fZXhwcmVzc2lvblN0YWNrW29mZnNl
dCArIGldLnR5cGUoKS5raW5kLCAiIGJ1dCBicmFuY2ggdGFyZ2V0IGV4cGVjdHMgYSB2YWx1ZSBv
ZiAiLCB0YXJnZXQuYnJhbmNoVGFyZ2V0VHlwZShpKS5raW5kLCAiIGF0IGluZGV4ICIsIGkpOwog
CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEwNzksNyArMTA4MCw3IEBAIEZPUl9FQUNIX1dBU01f
TUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgIGNhc2UgUmVmTnVsbDogewogICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVJlZmVyZW5jZXMo
KSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CiAgICAgICAgIFR5cGUgdHlwZU9mTnVs
bDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHR5cGVPZk51bGwp
LCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUiKTsKKyAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1faW5mbywgdHlwZU9mTnVsbCksICJyZWYu
bnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOwogICAgICAgICBtX2V4cHJlc3Np
b25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQodHlwZU9mTnVsbCwgbV9jb250ZXh0LmFkZENvbnN0
YW50KHR5cGVPZk51bGwsIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CkBAIC0xMTA5LDcgKzExMTAsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9S
WV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7CiAgICAgICAgICAgICBTaWduYXR1cmVJ
bmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5mby5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbklu
ZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0
QW5kQXBwZW5kKFR5cGUge1R5cGVLaW5kOjpUeXBlSWR4LCBzaWduYXR1cmVJbmRleH0sIHJlc3Vs
dCk7CisgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlw
ZSB7VHlwZUtpbmQ6OlR5cGVJZHgsIGZhbHNlLCBzaWduYXR1cmVJbmRleH0sIHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUdsb2JhbC5jcHAKaW5kZXggOWJlMWZmZTgyNDRhNWY3MWVmMTNmYzdkM2RhODE2
MmVlMmJlMjk5Ny4uNGQwMDZlN2RhYTNjMGJiM2JhZjI5ZmM5NDAwM2U0OTk5YzFlMjliMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAgSlNWYWx1ZSBHbG9iYWw6OmdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgICAgICByZXR1cm4ganNOdW1iZXIocHVyaWZ5TmFOKGJpdHdpc2VfY2FzdDxkb3VibGU+
KG1fdmFsdWUubV9wcmltaXRpdmUpKSk7CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgog
ICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoK
ICAgICAgICAgcmV0dXJuIG1fdmFsdWUubV9leHRlcm5yZWYuZ2V0KCk7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC04NiwxNSArODcsMzUgQEAgdm9pZCBH
bG9iYWw6OnNldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50
KQogICAgIH0KICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6IHsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9vd25lcik7CisgICAgICAgIGlmICghbV90eXBlLmlzTnVsbGFibGUgJiYgYXJn
dW1lbnQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihnbG9iYWxPYmpl
Y3QsIHZtLCAiTm9uLW51bGwgRXh0ZXJucmVmIGNhbm5vdCBiZSBudWxsIikpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIG1fdmFsdWUubV9leHRlcm5yZWYuc2V0KG1f
b3duZXItPnZtKCksIG1fb3duZXIsIGFyZ3VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQor
ICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjog
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX293bmVyKTsKLSAgICAgICAgaWYgKCFpc1dlYkFz
c2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmd1bWVudCkgJiYgIWFyZ3VtZW50LmlzTnVsbCgpKSB7
CisgICAgICAgIGJvb2wgaXNOdWxsYWJsZSA9IG1fdHlwZS5pc051bGxhYmxlOworICAgICAgICBX
ZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBudWxscHRyOworICAgICAgICBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbiA9IG51bGxwdHI7Cisg
ICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJndW1lbnQsIHdhc21G
dW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikgJiYgKCFpc051bGxhYmxlIHx8ICFhcmd1bWVu
dC5pc051bGwoKSkpIHsKICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihnbG9iYWxPYmplY3Qs
IHZtLCAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24iKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1fdHlwZS5raW5kID09IFR5
cGVLaW5kOjpUeXBlSWR4ICYmICh3YXNtRnVuY3Rpb24gfHwgd2FzbVdyYXBwZXJGdW5jdGlvbikp
IHsKKyAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHBhcmFtSW5kZXggPSBtX3R5cGUu
aW5kZXg7CisgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBhcmdJbmRleDsKKyAgICAg
ICAgICAgIGlmICh3YXNtRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgYXJnSW5kZXggPSB3YXNt
RnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgYXJnSW5kZXggPSB3YXNtV3JhcHBlckZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOwor
ICAgICAgICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgIkFyZ3VtZW50IGZ1bmN0aW9uIGRp
ZCBub3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSB0eXBlIikpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBtX3ZhbHVlLm1fZXh0ZXJucmVm
LnNldChtX293bmVyLT52bSgpLCBtX293bmVyLCBhcmd1bWVudCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0
b3IuY3BwCmluZGV4IGQ1ZjUwN2NkYTYzMzVhNjE2YTA4YzhlZmUyMWVkNzMzNDFkNDJlYjMuLjU1
ZGU5ZWZlODY4YTVmYTQ3NjhkNTcwYjE5OTdmNzI2NjA2ODkyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtNTU3LDYgKzU1
Nyw4IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAg
ICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVm
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
ICAgIH07CkBAIC02MTMsNiArNjE1LDggQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9y
bWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNjQxLDYgKzY0NSw4IEBAIGF1dG8gTExJbnRH
ZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6
Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6UmVmTnVsbDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTY5Nyw2ICs3
MDMsOCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29u
c3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IFZlYwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6Cisg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJl
ZjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC03NDYsNiArNzU0LDggQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQXJndW1l
bnRzKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAg
Y2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJz
ZXIuaAppbmRleCAyODY4NmI1M2Q0YzljYmYyZTQ4N2E4ODcyNTViNjFhNzgyMTk5MDg0Li5iNzdh
NWJmZmZiYTA0YTg0MzA5ZmJhZGEwMzllZmVlM2M4NjhmZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVBhcnNlci5oCkBAIC04NCw4ICs4NCw4IEBAIHByb3RlY3RlZDoKICAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhckludDY0KGludDY0X3QmKTsKIAogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlQmxvY2tTaWduYXR1cmUoY29uc3Qg
TW9kdWxlSW5mb3JtYXRpb24mLCBCbG9ja1NpZ25hdHVyZSYpOwotICAgIGJvb2wgV0FSTl9VTlVT
RURfUkVUVVJOIHBhcnNlVmFsdWVUeXBlKFR5cGUmKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZVJlZlR5cGUoVHlwZSYpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBh
cnNlVmFsdWVUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgVHlwZSYpOworICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlUmVmVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYs
IFR5cGUmKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUV4dGVybmFsS2luZChF
eHRlcm5hbEtpbmQmKTsKIAogICAgIHNpemVfdCBtX29mZnNldCA9IDA7CkBAIC0yNzcsNyArMjc3
LDcgQEAgQUxXQVlTX0lOTElORSB0eXBlbmFtZSBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpQYXJ0aWFs
UmVzdWx0IFBhcnNlcjxTdWNjZXNzVHlwZT46OnAKIHsKICAgICBpbnQ4X3QgdHlwZUtpbmQ7CiAg
ICAgaWYgKHBlZWtJbnQ3KHR5cGVLaW5kKSAmJiBpc1ZhbGlkVHlwZUtpbmQodHlwZUtpbmQpKSB7
Ci0gICAgICAgIFR5cGUgdHlwZSA9IHtzdGF0aWNfY2FzdDxUeXBlS2luZD4odHlwZUtpbmQpLCAw
fTsKKyAgICAgICAgVHlwZSB0eXBlID0ge3N0YXRpY19jYXN0PFR5cGVLaW5kPih0eXBlS2luZCks
IHRydWUsIDB9OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCEoaXNWYWx1ZVR5cGUodHlw
ZSkgfHwgdHlwZS5pc1ZvaWQoKSksICJyZXN1bHQgdHlwZSBvZiBibG9jazogIiwgbWFrZVN0cmlu
Zyh0eXBlLmtpbmQpLCAiIGlzIG5vdCBhIHZhbHVlIHR5cGUgb3IgVm9pZCIpOwogICAgICAgICBy
ZXN1bHQgPSBtX3NpZ25hdHVyZUluZm9ybWF0aW9uLnRodW5rRm9yKHR5cGUpOwogICAgICAgICBt
X29mZnNldCsrOwpAQCAtMjk2LDIyICsyOTYsNTAgQEAgQUxXQVlTX0lOTElORSB0eXBlbmFtZSBQ
YXJzZXI8U3VjY2Vzc1R5cGU+OjpQYXJ0aWFsUmVzdWx0IFBhcnNlcjxTdWNjZXNzVHlwZT46OnAK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoVHlwZSYgcmVzdWx0KQorQUxXQVlT
X0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKGNvbnN0IE1v
ZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBUeXBlJiByZXN1bHQpCiB7CiAgICAgaW50OF90IGtpbmQ7
CiAgICAgaWYgKCFwYXJzZUludDcoa2luZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBU
eXBlIHR5cGUgPSB7c3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KGtpbmQpLCAwfTsKLSAgICBpZiAoIWlz
VmFsaWRUeXBlS2luZChraW5kKSB8fCAhaXNWYWx1ZVR5cGUodHlwZSkpCisgICAgaWYgKCFpc1Zh
bGlkVHlwZUtpbmQoa2luZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFR5cGVLaW5k
IHR5cGVLaW5kID0gc3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KGtpbmQpOworICAgIGJvb2wgaXNOdWxs
YWJsZSA9IHRydWU7CisgICAgU2lnbmF0dXJlSW5kZXggc2lnSW5kZXggPSAwOworICAgIGlmICh0
eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmIHx8IHR5cGVLaW5kID09IFR5cGVLaW5kOjpSZWZOdWxs
KSB7CisgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVm
ZXJlbmNlcygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGludDMyX3Qg
aGVhcFR5cGU7CisgICAgICAgIGlzTnVsbGFibGUgPSB0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVm
TnVsbDsKKworICAgICAgICBpZiAoIXBhcnNlVmFySW50MzIoaGVhcFR5cGUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaGVhcFR5cGUgPCAwKSB7CisgICAgICAgICAg
ICBUeXBlS2luZCBoZWFwS2luZCA9IHN0YXRpY19jYXN0PFR5cGVLaW5kPihoZWFwVHlwZSk7Cisg
ICAgICAgICAgICBpZiAoIWlzVmFsaWRIZWFwVHlwZUtpbmQoaGVhcEtpbmQpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHR5cGVLaW5kID0gaGVhcEtpbmQ7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0eXBlS2luZCA9IFR5cGVLaW5kOjpUeXBlSWR4
OworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaGVhcFR5cGUpID49IGluZm8u
dXNlZFNpZ25hdHVyZXMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHNpZ0luZGV4ID0gU2lnbmF0dXJlSW5mb3JtYXRpb246OmdldChpbmZvLnVzZWRT
aWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUeXBl
IHR5cGUgPSB7dHlwZUtpbmQsIGlzTnVsbGFibGUsIHNpZ0luZGV4fTsKKyAgICBpZiAoIWlzVmFs
dWVUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0ID0gdHlwZTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+Ci1B
TFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VSZWZUeXBlKFR5cGUm
IHJlc3VsdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVJl
ZlR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFR5cGUmIHJlc3VsdCkKIHsKLSAg
ICBjb25zdCBib29sIHBhcnNlZCA9IHBhcnNlVmFsdWVUeXBlKHJlc3VsdCk7CisgICAgY29uc3Qg
Ym9vbCBwYXJzZWQgPSBwYXJzZVZhbHVlVHlwZShpbmZvLCByZXN1bHQpOwogICAgIHJldHVybiBw
YXJzZWQgJiYgaXNSZWZUeXBlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCBlZmY4YmMxYzk5N2YwMjI5YTJl
YmM4Mzc2YmUyMTc0OWM3MmZiMzE2Li43MGI1MjBhMjQ5YjhmMzRlZGE1ZTVjZDAyYTNkMzMxNTNl
MGNhYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlv
blBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25Q
YXJzZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUeXBl
KCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
cmd1bWVudENvdW50OyArK2kpIHsKICAgICAgICAgICAgIFR5cGUgYXJndW1lbnRUeXBlOwotICAg
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUoYXJndW1lbnRUeXBl
KSwgImNhbid0IGdldCAiLCBpLCAidGggYXJndW1lbnQgVHlwZSIpOworICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBhcmd1bWVudFR5cGUpLCAi
Y2FuJ3QgZ2V0ICIsIGksICJ0aCBhcmd1bWVudCBUeXBlIik7CiAgICAgICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKGFyZ3VtZW50VHlwZSk7CiAgICAgICAgIH0KIApAQCAtNzMsNyArNzMsNyBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcmV0dXJuVHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3Vt
ZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9u
J3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmV0dXJuQ291bnQ7ICsraSkgewogICAgICAgICAgICAgVHlwZSB2YWx1ZTsKLSAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKHZhbHVlKSwgImNhbid0IGdl
dCAiLCBpLCAidGggVHlwZSdzIHJldHVybiB2YWx1ZSIpOworICAgICAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCB2YWx1ZSksICJjYW4ndCBnZXQgIiwg
aSwgInRoIFR5cGUncyByZXR1cm4gdmFsdWUiKTsKICAgICAgICAgICAgIHJldHVyblR5cGVzLmFw
cGVuZCh2YWx1ZSk7CiAgICAgICAgIH0KIApAQCAtNDg0LDcgKzQ4NCw3IEBAIGF1dG8gU2VjdGlv
blBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNlIDB4
MDU6IHsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFz
c2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKICAgICAg
ICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9u
Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZv
LCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CiAgICAg
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVmdHlw
ZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAgICAg
dWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUwOCw3ICs1MDgsNyBAQCBhdXRvIFNlY3Rpb25QYXJz
ZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01fRkFJ
TF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKGluaXRF
eHByKSk7CiAKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUg
aW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBz
ZWN0aW9uIik7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlzRnVu
Y3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsK
IAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUyNiw3ICs1MjYsNyBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJl
bmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKIAogICAgICAgICAgICAgVHlw
ZSByZWZUeXBlOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBl
KHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUp
LCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKICAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGluIGVsZW1l
bnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOwogCiAgICAgICAgICAgICB1aW50MzJfdCBp
bmRleENvdW50OwpAQCAtNjA2LDcgKzYwNiw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJ
bml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIsCiAK
ICAgICBjYXNlIFJlZk51bGw6IHsKICAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOwotICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0
eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVz
dCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAgICAgICAgIHJlc3VsdFR5cGUgPSB0eXBlT2ZOdWxs
OwogICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkp
OwogICAgICAgICBicmVhazsKQEAgLTYxNyw3ICs2MTcsMTIgQEAgYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9ydE51
bWJlciwKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5kZXgp
LCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoaW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpLCAicmVmLmZ1bmMgaW5kZXgiLCBp
bmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVuY3Rp
b25zLnNpemUoKSk7CiAKLSAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpGdW5jcmVmOworICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygp
KSB7CisgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5mby0+
c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKKyAgICAgICAgICAg
IHJlc3VsdFR5cGUgPSB7VHlwZUtpbmQ6OlR5cGVJZHgsIGZhbHNlLCBzaWduYXR1cmVJbmRleH07
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpGdW5jcmVm
OworCiAgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGluZGV4OwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC02OTIsNyArNjk3LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1l
bnRTZWdtZW50VmVjdG9yT2ZFeHByZXNzaW9ucyhWZWN0b3I8dWludDMyX3Q+JiByZXMKICAgICAg
ICAgICAgIG1faW5mby0+YWRkRGVjbGFyZWRGdW5jdGlvbihmdW5jdGlvbkluZGV4KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIFR5cGUgdHlwZU9mTnVsbDsKLSAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZSh0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5
cGUgbXVzdCBiZSBhIGZ1bmMgdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHR5cGVPZk51bGwpLCAicmVm
Lm51bGwgdHlwZSBtdXN0IGJlIGEgZnVuYyB0eXBlIGluIGVsZW0gc2VjdGlvbiIpOwogICAgICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighdHlwZU9mTnVsbC5pc0Z1bmNyZWYoKSwgInJlZi5u
dWxsIGV4dGVybiBpcyBmb3JiaWRkZW4gaW4gZWxlbWVudCBzZWN0aW9uJ3MsICIsIGVsZW1lbnRO
dW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOwogICAgICAgICAgICAgZnVu
Y3Rpb25JbmRleCA9IEVsZW1lbnQ6Om51bGxGdW5jSW5kZXg7CiAgICAgICAgIH0KQEAgLTcyOCw3
ICs3MzMsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHJGb3JEYXRhU2Vj
dGlvbihPcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeAogYXV0byBTZWN0aW9uUGFyc2VyOjpw
YXJzZUdsb2JhbFR5cGUoR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCkgLT4gUGFydGlhbFJlc3Vs
dAogewogICAgIHVpbnQ4X3QgbXV0YWJpbGl0eTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhbHVlVHlwZShnbG9iYWwudHlwZSksICJjYW4ndCBnZXQgR2xvYmFsJ3MgdmFsdWUgdHlw
ZSIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgZ2xv
YmFsLnR5cGUpLCAiY2FuJ3QgZ2V0IEdsb2JhbCdzIHZhbHVlIHR5cGUiKTsKICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG11dGFiaWxpdHkpLCAiY2FuJ3QgZ2V0IEdsb2JhbCB0
eXBlJ3MgbXV0YWJpbGl0eSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYobXV0YWJpbGl0eSAh
PSAweDAgJiYgbXV0YWJpbGl0eSAhPSAweDEsICJpbnZhbGlkIEdsb2JhbCdzIG11dGFiaWxpdHk6
IDB4IiwgaGV4KG11dGFiaWxpdHksIDIsIExvd2VyY2FzZSkpOwogICAgIGdsb2JhbC5tdXRhYmls
aXR5ID0gc3RhdGljX2Nhc3Q8R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxpdHk+KG11dGFiaWxp
dHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVy
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAppbmRl
eCA2YjIwZDA4OTQ1NDIwNjc5ZTc2MjdlZTBjOGRjMTliZGM5ODY3Yjg4Li5jOGQ2ODQxZWYyMzRl
ODk0Nzk5NGRmYjFiYWE5N2FkNzE3NTA3ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtNzAsMTAgKzcwLDEyIEBAIHN0YXRpYyB1bnNpZ25l
ZCBjb21wdXRlSGFzaChzaXplX3QgcmV0dXJuQ291bnQsIGNvbnN0IFR5cGUqIHJldHVyblR5cGVz
LCBzaXplX3QKICAgICB1bnNpZ25lZCBhY2N1bXVsYXRvciA9IDB4YTFiY2VkZDh1OwogICAgIGZv
ciAodWludDMyX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsKICAgICAgICAgYWNj
dW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWlu
dDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDhfdD4oYXJndW1lbnRUeXBlc1tpXS5raW5kKSkp
OworICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdU
Rjo6SW50SGFzaDx1aW50OF90Pjo6aGFzaChzdGF0aWNfY2FzdDx1aW50OF90Pihhcmd1bWVudFR5
cGVzW2ldLmlzTnVsbGFibGUpKSk7CiAgICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50
SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPjo6aGFzaChhcmd1bWVudFR5
cGVzW2ldLmluZGV4KSk7CiAgICAgfQogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCByZXR1
cm5Db3VudDsgKytpKSB7CiAgICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChh
Y2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHJldHVyblR5cGVzW2ldLmtpbmQpKSk7CisgICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpw
YWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KHJldHVyblR5cGVzW2ldLmlzTnVsbGFibGUpKSk7CiAgICAgICAgIGFj
Y3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVu
c2lnbmVkPjo6aGFzaChyZXR1cm5UeXBlc1tpXS5pbmRleCkpOwogICAgIH0KICAgICByZXR1cm4g
YWNjdW11bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5l
cmF0ZVdhc21PcHNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0
ZVdhc21PcHNIZWFkZXIucHkKaW5kZXggODUyZDc0NTdhMzkzZWI0YzkyMjg0ZWU0NTIxNzA2Zjcx
ZTc3Y2QwZi4uNDMyM2ExMTc5YWE5MmU5Zjc3MTcxMmEyYWM5N2UyNGYyNmRhMDc2ZiAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5w
eQpAQCAtMjE2LDExICsyMTYsMTIgQEAgdXNpbmcgU2lnbmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7
CiAKIHN0cnVjdCBUeXBlIHsKICAgICBUeXBlS2luZCBraW5kOworICAgIGJvb2wgaXNOdWxsYWJs
ZTsKICAgICBTaWduYXR1cmVJbmRleCBpbmRleDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUeXBlJiBvdGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlci5raW5kID09
IGtpbmQgJiYgb3RoZXIuaW5kZXggPT0gaW5kZXg7CisgICAgICAgIHJldHVybiBvdGhlci5raW5k
ID09IGtpbmQgJiYgb3RoZXIuaXNOdWxsYWJsZSA9PSBpc051bGxhYmxlICYmIG90aGVyLmluZGV4
ID09IGluZGV4OwogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUeXBlJiBvdGhl
cikgY29uc3QKQEAgLTIzNSw3ICsyMzYsNyBAQCBzdHJ1Y3QgVHlwZSB7CiAKIG5hbWVzcGFjZSBU
eXBlcwogewotI2RlZmluZSBDUkVBVEVfQ09OU1RBTlQobmFtZSwgaWQsIC4uLikgY29uc3RleHBy
IFR5cGUgbmFtZSA9IFR5cGV7VHlwZUtpbmQ6Om5hbWUsIDB1fTsKKyNkZWZpbmUgQ1JFQVRFX0NP
TlNUQU5UKG5hbWUsIGlkLCAuLi4pIGNvbnN0ZXhwciBUeXBlIG5hbWUgPSBUeXBle1R5cGVLaW5k
OjpuYW1lLCB0cnVlLCAwdX07CiBGT1JfRUFDSF9XQVNNX1RZUEUoQ1JFQVRFX0NPTlNUQU5UKQog
I3VuZGVmIENSRUFURV9DT05TVEFOVAogfSAvLyBuYW1lc3BhY2UgVHlwZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAppbmRleCA0OWU2ZjQ5MDA3MzFiZjE2YTYw
ZDRkNjk3MGEwYzBiNmMwMjFmNTJlLi5mNjdmMjQyYTc4OTEzYWU1YzAyYWE1NjhlOTlhYzY1Y2Ri
YjgwZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBA
IC0xMDQsNiArMTA0LDggQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRy
eVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIHN3
aXRjaCAoYXJnVHlwZS5raW5kKSB7CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgog
ICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlJlZk51bGw6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KICAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgICAgICAgICBjYXNlIFR5cGVL
aW5kOjpFeHRlcm5yZWY6CkBAIC0xNzcsNiArMTc5LDggQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYg
dm0KICAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZS5raW5kKSB7CiAgICAgICAgICAgICBjYXNl
IFR5cGVLaW5kOjpWb2lkOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5k
OjpSZWY6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8g
SGFuZGxlZCBhYm92ZS4KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CkBAIC0yNzgsNiArMjgyLDggQEAgRXhw
ZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWls
dXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUucmV0dXJuVHlw
ZSgwKS5raW5kKSB7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIC8vIEZvciB0aGUgSmF2YVNjcmlwdCBl
bWJlZGRpbmcsIGltcG9ydHMgd2l0aCB0aGVzZSB0eXBlcyBpbiB0aGVpciBzaWduYXR1cmUgcmV0
dXJuIGFyZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSB2YWxpZGF0aW9uIGVycm9yLgogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAppbmRleCBjNWJhYzI1OWE5MWIyMTFhYjM1Y2JhODY4MDNjODQzZjJlOTI3YmI3Li5lNmNm
YWZjYjc0YWQzMGRkZGFiNTVlMWQ1N2IzYTM2OWQ4Nzg3M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtODUs
MTEgKzg1LDI2IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsV2ViQXNzZW1ibHlGdW5j
dGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgY2FzZSBXYXNt
OjpUeXBlS2luZDo6RnVuY3JlZjogewotICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9z
dEZ1bmN0aW9uKHZtLCBhcmcpICYmICFhcmcuaXNOdWxsKCkpCisgICAgICAgICAgICBib29sIGlz
TnVsbGFibGUgPSBzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpLmlzTnVsbGFibGU7CisgICAg
ICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBudWxscHRyOworICAg
ICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb24g
PSBudWxscHRyOworICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZt
LCBhcmcsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikgJiYgKCFpc051bGxhYmxl
IHx8ICFhcmcuaXNOdWxsKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcihnbG9iYWxPYmplY3QsIHZtLCAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9y
dGVkIHdhc20gZnVuY3Rpb24iKSkpOworICAgICAgICAgICAgaWYgKHNpZ25hdHVyZS5hcmd1bWVu
dChhcmdJbmRleCkua2luZCA9PSBXYXNtOjpUeXBlS2luZDo6VHlwZUlkeCAmJiAod2FzbUZ1bmN0
aW9uIHx8IHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggcGFyYW1JbmRleCA9IHNpZ25hdHVyZS5hcmd1bWVudChhcmdJbmRleCkuaW5k
ZXg7CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggYXJnSW5kZXg7CisgICAg
ICAgICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgYXJnSW5k
ZXggPSB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBhcmdJbmRleCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNp
Z25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5k
ZXgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJv
cihnbG9iYWxPYmplY3QsIHZtLCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRjaCB0aGUg
cmVmZXJlbmNlIHR5cGUiKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgICAg
ICAgICAgaWYgKCFzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpLmlzTnVsbGFibGUgJiYgYXJn
LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVF
cnJvcihnbG9iYWxPYmplY3QsIHZtLCAiTm9uLW51bGwgRXh0ZXJucmVmIGNhbm5vdCBiZSBudWxs
IikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJ
NjQ6CiAgICAgICAgICAgICBhcmcgPSBKU1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0PHVpbnQ2
NF90PihhcmcudG9CaWdJbnQ2NChnbG9iYWxPYmplY3QpKSk7CkBAIC0xMDIsNiArMTE3LDggQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdhc206OlR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGdW5j
OgorICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICBjYXNlIFdh
c206OlR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICB9CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDU4ZThjZDAwMDY4MjNkZWFmNGVl
Njg3M2ExNzE4YWQ1NzgzNmY1YjMuLjI3YmIwODA4ODJiZmIwZThiMDMzZDM3OWY5YmE0MjkyNmQ2
OWQ2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTI0NywxNiArMjQ3LDM1IEBAIHZvaWQgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTT2JqZWN0KiBpCiAgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxWYWx1ZS0+Z2xv
YmFsKCktPm11dGFiaWxpdHkoKSAhPSBXYXNtOjpHbG9iYWxJbmZvcm1hdGlvbjo6SW1tdXRhYmxl
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9y
dCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgc2FtZSBtdXRhYmlsaXR5IikpKTsKICAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChtb2R1bGVJbmZvcm1hdGlvbi5nbG9iYWxzW2ltcG9y
dC5raW5kSW5kZXhdLnR5cGUua2luZCkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206
OlR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVL
aW5kOjpUeXBlSWR4OgorICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpG
dW5jcmVmOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzTnVsbGFibGUgPSBnbG9i
YWwudHlwZS5pc051bGxhYmxlOworICAgICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlG
dW5jdGlvbiogd2FzbUZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uID0gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2xvYmFsVmFsdWUtPmdsb2JhbCgp
LT5nZXQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
V2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlKSAmJiAhdmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9y
dCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5jdGlvbiBv
ciBudWxsIikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhv
c3RGdW5jdGlvbih2bSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikg
JiYgKCFpc051bGxhYmxlIHx8ICF2YWx1ZS5pc051bGwoKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBtc2cgPSBpc051bGxhYmxlID8gIm11c3QgYmUgYSB3YXNt
IGV4cG9ydGVkIGZ1bmN0aW9uIG9yIG51bGwiIDogIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1
bmN0aW9uIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNy
ZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1l
c3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgbXNnKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbC50eXBlLmtpbmQg
PT0gV2FzbTo6VHlwZUtpbmQ6OlR5cGVJZHggJiYgKHdhc21GdW5jdGlvbiB8fCB3YXNtV3JhcHBl
ckZ1bmN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVy
ZUluZGV4IHBhcmFtSW5kZXggPSBnbG9iYWwudHlwZS5pbmRleDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBhcmdJbmRleDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ0luZGV4ID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1JbmRleCAhPSBhcmdJbmRleCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGlt
cG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNo
IHRoZSByZWZlcmVuY2UgdHlwZSIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChpbXBv
cnQua2luZEluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVL
aW5kOjpFeHRlcm5yZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdsb2JhbFZh
bHVlLT5nbG9iYWwoKS0+Z2V0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFnbG9iYWwudHlwZS5pc051bGxhYmxlICYmIHZhbHVlLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQs
ICJpbXBvcnRlZCBnbG9iYWwiLCAibm9uLW51bGwgZXh0ZXJucmVmIGNhbm5vdCBiZSBudWxsIikp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xv
YmFsKGltcG9ydC5raW5kSW5kZXgsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJMzI6CkBAIC0y
ODMsMTIgKzMwMiwzMSBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaQogCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGlpaS4gQXBwZW5kIFRvV2ViQXNzZW1ibHlWYWx1ZSh2KSB0byBpbXBvcnRzLgog
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbFR5cGUua2luZCkgewotICAgICAgICAg
ICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGdW5jcmVmOgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSkgJiYgIXZh
bHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRp
b24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRG
YWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIHdhc20gZXhw
b3J0ZWQgZnVuY3Rpb24gb3IgbnVsbCIpKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2Fz
bTo6VHlwZUtpbmQ6OlR5cGVJZHg6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlw
ZUtpbmQ6OkZ1bmNyZWY6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNOdWxsYWJs
ZSA9IGdsb2JhbFR5cGUuaXNOdWxsYWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYkFz
c2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbiA9
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0
RnVuY3Rpb24odm0sIHZhbHVlLCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pICYm
ICghaXNOdWxsYWJsZSB8fCAhdmFsdWUuaXNOdWxsKCkpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogbXNnID0gaXNOdWxsYWJsZSA/ICJtdXN0IGJlIGEgd2FzbSBl
eHBvcnRlZCBmdW5jdGlvbiBvciBudWxsIiA6ICJtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5j
dGlvbiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVh
dGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNz
YWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsIG1zZykpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnbG9iYWxUeXBlLmtpbmQgPT0g
V2FzbTo6VHlwZUtpbmQ6OlR5cGVJZHggJiYgKHdhc21GdW5jdGlvbiB8fCB3YXNtV3JhcHBlckZ1
bmN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUlu
ZGV4IHBhcmFtSW5kZXggPSBnbG9iYWwudHlwZS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBhcmdJbmRleDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFyZ0luZGV4ID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1JbmRleCAhPSBhcmdJbmRleCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9y
dCwgImltcG9ydGVkIGdsb2JhbCIsICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNoIHRo
ZSByZWZlcmVuY2UgdHlwZSIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChpbXBvcnQu
a2luZEluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5k
OjpFeHRlcm5yZWY6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbFR5cGUuaXNO
dWxsYWJsZSAmJiB2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0
LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3Qg
YmUgYSBub24tbnVsbCB2YWx1ZSIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3Rh
bmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChpbXBvcnQua2luZEluZGV4LCB2YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNt
OjpUeXBlS2luZDo6STMyOgpAQCAtNDkwLDYgKzUyOCw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQ6OmxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBpCiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBlLmtpbmQpIHsKICAgICAgICAgICAg
IGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAgICAgIGNhc2UgV2FzbTo6
VHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpUeXBl
SWR4OgogICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STMyOgogICAgICAgICAgICAg
Y2FzZSBXYXNtOjpUeXBlS2luZDo6STY0OgogICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2lu
ZDo6RjMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29u
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDc5NDA5MmI3NmRk
NzBmNDcyNDM3Zjc2OWNhNDdiNDY0NWZmY2I4MDEuLjRmOGRkOWUzZDIxMzQzNTAwMDAwNmUyNDE0
NmIwMTk0YzlhYzg4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dh
c20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTEz
LDYgKzEzLDggQEAKICAgICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKICAgICAgICAgImZ1bmNyZWYi
OiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAiQjM6Oklu
dDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVl
IjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCisgICAgICAgICJyZWZfbnVsbCI6ICB7
ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIg
fSwKKyAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAt
MjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAg
ICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJi
M3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ0eXBlX2lkeCI6ICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAtMTI4LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3MDYxMjVhMjJk
NDJjZGNhMjM4NjJmMjU3ODUwNmZjZTkyZmRhMzFhLi45MTRiMWQ4ZjcxZTA0MzBhMGM4ZTI0YWM2
MTZmMjZkM2U1ZGQ4MDIwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDIxLTA1LTI2ICBBc3VtdSBUYWtpa2F3
YSAgPGFzdW11QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dBU00tRnVuY3Rpb24tUmVmZXJlbmNl
c10gYWRkIGAocmVmIG51bGw/ICR0KWAgdHlwZSBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2Mjk2CisKKyAgICAgICAgQWRkcyBh
ZGRpdGlvbmFsIHRlc3RzIGZvciB1c2VzIG9mIGAocmVmICR0KWAgYW5kIGAocmVmIG51bGwgJHQp
YAorICAgICAgICB0eXBlcywgaW5jbHVkaW5nIHdpdGggbm9uLW51bGwgZXh0ZXJuL2Z1bmNyZWZz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEpTVGVz
dHM6CisgICAgICAgICogd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzL3JlZl90eXBlcy5qczogQWRk
ZWQuCisgICAgICAgIChtb2R1bGUpOgorICAgICAgICAoYXN5bmMgdGVzdFJlZlR5cGVMb2NhbCk6
CisgICAgICAgIChhc3luYyB0ZXN0Tm9uTnVsbFJlZlR5cGVMb2NhbCk6CisgICAgICAgIChhc3lu
YyB0ZXN0UmVmVHlwZUluU2lnbmF0dXJlKToKKyAgICAgICAgKGFzeW5jIHRlc3RSZWZUeXBlUGFy
YW1DaGVjayk6CisgICAgICAgIChhc3luYyB0ZXN0UmVmR2xvYmFsQ2hlY2spOgorICAgICAgICAo
YXN5bmMgdGVzdEV4dGVybkZ1bmNyZWZOb25OdWxsQ2hlY2spOgorICAgICAgICAoYXN5bmMgdGVz
dEV4dGVybnJlZkNvbXBhdGliaWxpdHkpOgorICAgICAgICAoYXN5bmMgdGVzdE5vbk51bGxFeHRl
cm5yZWZJbmNvbXBhdGlibGUpOgorICAgICAgICAoYXN5bmMgdGVzdEZ1bmNyZWZDb21wYXRpYmls
aXR5KToKKyAgICAgICAgKGFzeW5jIHRlc3ROb25OdWxsRnVuY3JlZkluY29tcGF0aWJsZSk6Cisg
ICAgICAgICogd2FzbS93YXNtLmpzb246CisKKyAgICAgICAgU291cmNlL0phdmFTY3JpcHRDb3Jl
OgorICAgICAgICAqIHdhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6QWlySVJHZW5lcmF0b3I6OmdUeXBlSWR4KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWly
SVJHZW5lcmF0b3I6OnRtcEZvclR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVy
YXRvcjo6ZW1pdENDYWxsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6Om1v
dmVPcEZvclZhbHVlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpB
aXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRM
b2NhbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDb25zdGFudCk6
CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKToKKyAgICAg
ICAgKiB3YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjpX
YXNtQ2FsbGluZ0NvbnZlbnRpb246Om1hcnNoYWxsTG9jYXRpb24gY29uc3QpOgorICAgICAgICAo
SlNDOjpXYXNtOjpKU0NhbGxpbmdDb252ZW50aW9uOjptYXJzaGFsbExvY2F0aW9uIGNvbnN0KToK
KyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNTdWJ0
eXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNWYWxpZEhlYXBUeXBlS2luZCk6CisgICAgICAg
IChKU0M6Oldhc206OmlzRGVmYXVsdGFibGVUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5j
dGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
cGFyc2VBbm5vdGF0ZWRTZWxlY3RJbW1lZGlhdGVzKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OmNoZWNrQnJhbmNoVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6
V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAg
ICogd2FzbS9XYXNtR2xvYmFsLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6R2xvYmFsOjpnZXQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpHbG9iYWw6OnNldCk6CisgICAgICAgICogd2Fz
bS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludEdlbmVy
YXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJ
bnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZSk6CisgICAgICAgIChKU0M6Oldh
c206OkxMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOgorICAgICAgICAqIHdhc20vV2FzbVBh
cnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUJs
b2NrU2lnbmF0dXJlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6
cGFyc2VWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+
OjpwYXJzZVJlZlR5cGUpOgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUpOgorICAgICAgICAo
SlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQpOgorICAgICAgICAoSlNDOjpX
YXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mRXhwcmVzc2lvbnMpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2VyOjpwYXJzZUdsb2JhbFR5cGUpOgorICAg
ICAgICAqIHdhc20vV2FzbVNpZ25hdHVyZS5jcHA6CisgICAgICAgIChKU0M6Oldhc206OmNvbXB1
dGVIYXNoKToKKyAgICAgICAgKiB3YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weToKKyAgICAg
ICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rSW1wbCk6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKKyAgICAgICAgKiB3
YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVmX3R5cGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKG1v
ZHVsZSk6CisgICAgICAgIChhc3luYyB0ZXN0UmVmVHlwZUxvY2FsKToKKyAgICAgICAgKGFzeW5j
IHRlc3ROb25OdWxsUmVmVHlwZUxvY2FsKToKKyAgICAgICAgKGFzeW5jIHRlc3RSZWZUeXBlSW5T
aWduYXR1cmUpOgorICAgICAgICAoYXN5bmMgdGVzdFJlZlR5cGVQYXJhbUNoZWNrKToKKyAgICAg
ICAgKGFzeW5jIHRlc3RSZWZHbG9iYWxDaGVjayk6CisgICAgICAgIChhc3luYyB0ZXN0RXh0ZXJu
RnVuY3JlZk5vbk51bGxDaGVjayk6CisgICAgICAgIChhc3luYyB0ZXN0RXh0ZXJucmVmQ29tcGF0
aWJpbGl0eSk6CisgICAgICAgIChhc3luYyB0ZXN0Tm9uTnVsbEV4dGVybnJlZkluY29tcGF0aWJs
ZSk6CisgICAgICAgIChhc3luYyB0ZXN0RnVuY3JlZkNvbXBhdGliaWxpdHkpOgorICAgICAgICAo
YXN5bmMgdGVzdE5vbk51bGxGdW5jcmVmSW5jb21wYXRpYmxlKToKKyAgICAgICAgKiB3YXNtL3dh
c20uanNvbjoKKwogMjAyMS0wNS0yMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBFcmdvbm9taWMgQnJhbmQgQ2hlY2tzIHByb3Bvc2Fs
IChgI3ggaW4gb2JqYCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZlcmVu
Y2VzL3JlZl90eXBlcy5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzL3JlZl90
eXBlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYTdiMjBiOTBhMDVjOGRlMDc2YzQ1YjJlOGI1YzdhMjI0ZDg0
ZTRkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMv
cmVmX3R5cGVzLmpzCkBAIC0wLDAgKzEsMjk1IEBACisvL0AgcnVuV2ViQXNzZW1ibHlTdWl0ZSgi
LS11c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzPXRydWUiKQoraW1wb3J0ICog
YXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyI7CitpbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZy
b20gIi4uL3dhYnQtd3JhcHBlci5qcyI7CisKK2Z1bmN0aW9uIG1vZHVsZShieXRlcywgdmFsaWQg
PSB0cnVlKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsK
KyAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsg
aSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQo
aSk7CisgIH0KKyAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKK30KKwor
YXN5bmMgZnVuY3Rpb24gdGVzdFJlZlR5cGVMb2NhbCgpIHsKKyAgLyoKKyAgICogKG1vZHVsZQor
ICAgKiAgICh0eXBlIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAqICAgKGZ1
bmMgKHJlc3VsdCAocmVmIG51bGwgMCkpIChsb2NhbCAocmVmIG51bGwgMCkpCisgICAqICAgICAo
bG9jYWwuZ2V0IDApKSkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKKyAgICBt
b2R1bGUoCisgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYlx4
MDJceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAwXHgwMVx4NmNceDAwXHgwM1x4MDJceDAxXHgw
MVx4MGFceDA5XHgwMVx4MDdceDAxXHgwMVx4NmNceDAwXHgyMFx4MDBceDBiIgorICAgICkKKyAg
KTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdE5vbk51bGxSZWZUeXBlTG9jYWwoKSB7CisgIC8q
CisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkz
MikpKQorICAgKiAgIChmdW5jIChsb2NhbCAocmVmIDApKSkpCisgICAqLworICBhc3NlcnQudGhy
b3dzKAorICAgICgpID0+CisgICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceDA5XHgwMlx4NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4MDBc
eDAwXHgwM1x4MDJceDAxXHgwMVx4MGFceDA3XHgwMVx4MDVceDAxXHgwMVx4NmJceDAwXHgwYiIK
KyAgICAgICksCisgICAgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAorICAgICJGdW5jdGlvbiBs
b2NhbHMgbXVzdCBoYXZlIGEgZGVmYXVsdGFibGUgdHlwZSIKKyAgKTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gdGVzdFJlZlR5cGVJblNpZ25hdHVyZSgpIHsKKyAgLyoKKyAgICogKG1vZHVsZQorICAg
KiAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgJGYpKQorICAgKiAgICh0eXBlICR0
MSAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAgKiAgICh0eXBlICR0MiAoZnVu
YyAocGFyYW0pIChyZXN1bHQgKHJlZiAkdDEpKSkpCisgICAqICAgKGZ1bmMgJGYgKHR5cGUgJHQx
KSAoaTMyLmNvbnN0IDEpKQorICAgKiAgIChmdW5jICRnICh0eXBlICR0MikgKHJlZi5mdW5jICRm
KSkpCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoCisgICAgbW9kdWxlKAorICAg
ICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg2MFx4MDFc
eDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDZiXHgwMFx4MDNceDAzXHgwMlx4MDBceDAxXHgwOVx4
MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4MGFceDBiXHgwMlx4MDRceDAwXHg0MVx4MDFceDBiXHgw
NFx4MDBceGQyXHgwMFx4MGJceDAwXHgwZVx4MDRceDZlXHg2MVx4NmRceDY1XHgwMVx4MDdceDAy
XHgwMFx4MDFceDY2XHgwMVx4MDFceDY3IgorICAgICkKKyAgKTsKK30KKworYXN5bmMgZnVuY3Rp
b24gdGVzdFJlZlR5cGVQYXJhbUNoZWNrKCkgeworICBjb25zdCB3YXQxID0gYAorICAgIChtb2R1
bGUKKyAgICAgIChmdW5jIChleHBvcnQgImYiKSAocGFyYW0gZjY0KSAocmVzdWx0IGY2NCkKKyAg
ICAgICAgKGxvY2FsLmdldCAwKSkpCisgICAgYDsKKworICBjb25zdCBpbnN0YW5jZTEgPSBhd2Fp
dCBpbnN0YW50aWF0ZSh3YXQxKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUg
JHQxIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAqICAgKHR5cGUgJHQyIChm
dW5jIChwYXJhbSAocmVmICR0MSkpIChyZXN1bHQpKSkKKyAgICogICAoZnVuYyAoZXhwb3J0ICJm
IikgKHR5cGUgJHQyKSkpCisgICAqLworICBjb25zdCBtMiA9IG1vZHVsZSgKKyAgICAiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYlx4MDJceDYwXHgwMVx4N2ZceDAxXHg3
Zlx4NjBceDAxXHg2Ylx4MDBceDAwXHgwM1x4MDJceDAxXHgwMVx4MDdceDA1XHgwMVx4MDFceDY2
XHgwMFx4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGIiCisgICk7CisgIGNvbnN0IGluc3RhbmNl
MiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtMik7CisKKyAgLyoKKyAgICogKG1vZHVsZQor
ICAgKiAgICh0eXBlICR0MSAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAgKiAg
ICh0eXBlICR0MiAoZnVuYyAocGFyYW0gKHJlZiBudWxsICR0MSkpIChyZXN1bHQpKSkKKyAgICog
ICAoZnVuYyAoZXhwb3J0ICJmIikgKHR5cGUgJHQyKSkpCisgICAqLworICBjb25zdCBtMyA9IG1v
ZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYlx4MDJc
eDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAxXHg2Y1x4MDBceDAwXHgwM1x4MDJceDAxXHgwMVx4
MDdceDA1XHgwMVx4MDFceDY2XHgwMFx4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGIiCisgICk7
CisgIGNvbnN0IGluc3RhbmNlMyA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtMyk7CisKKyAg
YXNzZXJ0LnRocm93cygKKyAgICAoKSA9PiBpbnN0YW5jZTIuZXhwb3J0cy5mKG51bGwpLAorICAg
IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9y
dGVkIHdhc20gZnVuY3Rpb24iCisgICk7CisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4gaW5z
dGFuY2UyLmV4cG9ydHMuZihpbnN0YW5jZTEuZXhwb3J0cy5mKSwKKyAgICBXZWJBc3NlbWJseS5S
dW50aW1lRXJyb3IsCisgICAgIkFyZ3VtZW50IGZ1bmN0aW9uIGRpZCBub3QgbWF0Y2ggdGhlIHJl
ZmVyZW5jZSB0eXBlIgorICApOworICBpbnN0YW5jZTMuZXhwb3J0cy5mKG51bGwpOworfQorCith
c3luYyBmdW5jdGlvbiB0ZXN0UmVmR2xvYmFsQ2hlY2soKSB7CisgIGNvbnN0IHdhdCA9IGAKKyAg
ICAobW9kdWxlCisgICAgICAoZ2xvYmFsIChleHBvcnQgImciKSBmdW5jcmVmIChyZWYubnVsbCBm
dW5jKSkKKyAgICAgIChmdW5jIChleHBvcnQgImYiKSAocGFyYW0gZjY0KSAocmVzdWx0IGY2NCkK
KyAgICAgICAgKGxvY2FsLmdldCAwKSkpCisgICAgYDsKKworICBjb25zdCBwcm92aWRlckluc3Rh
bmNlID0gYXdhaXQgaW5zdGFudGlhdGUoCisgICAgd2F0LAorICAgIHt9LAorICAgIHsgcmVmZXJl
bmNlX3R5cGVzOiB0cnVlIH0KKyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKGds
b2JhbCAoZXhwb3J0ICJnIikgKG11dCAocmVmIGZ1bmMpKSAocmVmLmZ1bmMgJGYpKQorICAgKiAg
IChmdW5jICRmKSkKKyAgICovCisgIGNvbnN0IG0xID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA0XHgwMVx4NjBceDAwXHgwMFx4MDNceDAyXHgw
MVx4MDBceDA2XHgwN1x4MDFceDZiXHg3MFx4MDFceGQyXHgwMFx4MGJceDA3XHgwNVx4MDFceDAx
XHg2N1x4MDNceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiXHgwMFx4MGJceDA0XHg2ZVx4NjFc
eDZkXHg2NVx4MDFceDA0XHgwMVx4MDBceDAxXHg2NiIKKyAgKTsKKyAgY29uc3QgaW5zdGFuY2Ux
ID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0xKTsKKyAgYXNzZXJ0LnRocm93cygKKyAgICAo
KSA9PiAoaW5zdGFuY2UxLmV4cG9ydHMuZy52YWx1ZSA9IG51bGwpLAorICAgIFdlYkFzc2VtYmx5
LlJ1bnRpbWVFcnJvciwKKyAgICAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVu
Y3Rpb24iCisgICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChmdW5jKSkK
KyAgICogICAoZ2xvYmFsIChleHBvcnQgImciKSAobXV0IChyZWYgMCkpIChyZWYuZnVuYyAkZikp
CisgICAqICAgKGZ1bmMgJGYgKHR5cGUgMCkpKQorICAgKi8KKyAgY29uc3QgbTIgPSBtb2R1bGUo
CisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDRceDAxXHg2MFx4
MDBceDAwXHgwM1x4MDJceDAxXHgwMFx4MDZceDA3XHgwMVx4NmJceDAwXHgwMVx4ZDJceDAwXHgw
Ylx4MDdceDA1XHgwMVx4MDFceDY3XHgwM1x4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGJceDAw
XHgwYlx4MDRceDZlXHg2MVx4NmRceDY1XHgwMVx4MDRceDAxXHgwMFx4MDFceDY2IgorICApOwor
ICBjb25zdCBpbnN0YW5jZTIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTIpOworICBhc3Nl
cnQudGhyb3dzKAorICAgICgpID0+IChpbnN0YW5jZTIuZXhwb3J0cy5nLnZhbHVlID0gbnVsbCks
CisgICAgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICJGdW5jcmVmIG11c3QgYmUgYW4g
ZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIKKyAgKTsKKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9
PiAoaW5zdGFuY2UyLmV4cG9ydHMuZy52YWx1ZSA9IHByb3ZpZGVySW5zdGFuY2UuZXhwb3J0cy5m
KSwKKyAgICBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsCisgICAgIkFyZ3VtZW50IGZ1bmN0aW9u
IGRpZCBub3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSB0eXBlIgorICApOworCisgIC8qCisgICAqICht
b2R1bGUKKyAgICogICAoaW1wb3J0ICJtIiAiZyIgKGdsb2JhbCAocmVmIGZ1bmMpKSkpCisgICAq
LworICBjb25zdCBtMyA9IG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAyXHgwOVx4MDFceDAxXHg2ZFx4MDFceDY3XHgwM1x4NmJceDcwXHgwMCIKKyAgKTsK
KyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG0zLCB7IG06IHsgZzogcHJvdmlkZXJJbnN0YW5jZS5leHBvcnRzLmcgfSB9KSwKKyAgICBX
ZWJBc3NlbWJseS5MaW5rRXJyb3IsCisgICAgImltcG9ydGVkIGdsb2JhbCBtOmcgbXVzdCBiZSBh
IHNhbWUgdHlwZSIKKyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKGZ1
bmMpKQorICAgKiAgIChpbXBvcnQgIm0iICJnIiAoZ2xvYmFsIChyZWYgMCkpKSkKKyAgICovCisg
IGNvbnN0IG00ID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDA0XHgwMVx4NjBceDAwXHgwMFx4MDJceDA5XHgwMVx4MDFceDZkXHgwMVx4NjdceDAz
XHg2Ylx4MDBceDAwIgorICApOworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+CisgICAgICBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTQsIHsgbTogeyBnOiBwcm92aWRlckluc3RhbmNlLmV4
cG9ydHMuZyB9IH0pLAorICAgIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwKKyAgICAiaW1wb3J0ZWQg
Z2xvYmFsIG06ZyBtdXN0IGJlIGEgc2FtZSB0eXBlIgorICApOworCisgIC8qCisgICAqIChtb2R1
bGUKKyAgICogICAoaW1wb3J0ICJtIiAiZyIgKGdsb2JhbCAocmVmIGV4dGVybikpKSkKKyAgICov
CisgIGNvbnN0IG01ID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDJceDA5XHgwMVx4MDFceDZkXHgwMVx4NjdceDAzXHg2Ylx4NmZceDAwIgorICApOwor
ICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtNSwg
eyBtOiB7IGc6IG51bGwgfSB9KSwKKyAgICBXZWJBc3NlbWJseS5MaW5rRXJyb3IsCisgICAgImlt
cG9ydGVkIGdsb2JhbCBtOmcgbXVzdCBiZSBhIG5vbi1udWxsIHZhbHVlIgorICApOworfQorCith
c3luYyBmdW5jdGlvbiB0ZXN0RXh0ZXJuRnVuY3JlZk5vbk51bGxDaGVjaygpIHsKKyAgLyoKKyAg
ICogKG1vZHVsZQorICAgKiAgICh0eXBlICR0IChmdW5jIChwYXJhbSAocmVmIGV4dGVybikpIChy
ZXN1bHQpKSkKKyAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHR5cGUgJHQpKSkKKyAgICovCisg
IGNvbnN0IG0xID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceDA2XHgwMVx4NjBceDAxXHg2Ylx4NmZceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA1
XHgwMVx4MDFceDY2XHgwMFx4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGIiCisgICk7CisgIGNv
bnN0IGluc3RhbmNlMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtMSk7CisKKyAgLyoKKyAg
ICogKG1vZHVsZQorICAgKiAgICh0eXBlICR0IChmdW5jIChwYXJhbSAocmVmIGZ1bmMpKSAocmVz
dWx0KSkpCisgICAqICAgKGZ1bmMgKGV4cG9ydCAiZiIpICh0eXBlICR0KSkpCisgICAqLworICBj
b25zdCBtMiA9IG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHgwNlx4MDFceDYwXHgwMVx4NmJceDcwXHgwMFx4MDNceDAyXHgwMVx4MDBceDA3XHgwNVx4
MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiIgorICApOworICBjb25z
dCBpbnN0YW5jZTIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTIpOworCisgIGFzc2VydC50
aHJvd3MoCisgICAgKCkgPT4gaW5zdGFuY2UxLmV4cG9ydHMuZihudWxsKSwKKyAgICBXZWJBc3Nl
bWJseS5SdW50aW1lRXJyb3IsCisgICAgIk5vbi1udWxsIEV4dGVybnJlZiBjYW5ub3QgYmUgbnVs
bCIKKyAgKTsKKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PiBpbnN0YW5jZTIuZXhwb3J0cy5m
KG51bGwpLAorICAgIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAiRnVuY3JlZiBtdXN0
IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24iCisgICk7Cit9CisKKy8vIEVuc3VyZSB0d28g
d2F5cyBvZiB3cml0aW5nIGV4dGVybnJlZiBhcmUgZXF1aXZhbGVudC4KK2FzeW5jIGZ1bmN0aW9u
IHRlc3RFeHRlcm5yZWZDb21wYXRpYmlsaXR5KCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAq
ICAgKHR5cGUgJHQgKGZ1bmMgKHBhcmFtIGV4dGVybnJlZikgKHJlc3VsdCAocmVmIG51bGwgZXh0
ZXJuKSkpKQorICAgKiAgIChmdW5jICRmICh0eXBlICR0KSAobG9jYWwuZ2V0IDApKSkKKyAgICov
CisgIG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgw
N1x4MDFceDYwXHgwMVx4NmZceDAxXHg2Y1x4NmZceDAzXHgwMlx4MDFceDAwXHgwYVx4MDZceDAx
XHgwNFx4MDBceDIwXHgwMFx4MGJceDAwXHgwYlx4MDRceDZlXHg2MVx4NmRceDY1XHgwMVx4MDRc
eDAxXHgwMFx4MDFceDY2IgorICApOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0Tm9uTnVsbEV4
dGVybnJlZkluY29tcGF0aWJsZSgpIHsKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBl
ICR0IChmdW5jIChwYXJhbSBleHRlcm5yZWYpIChyZXN1bHQgKHJlZiBleHRlcm4pKSkpCisgICAq
ICAgKGZ1bmMgJGYgKHR5cGUgJHQpIChsb2NhbC5nZXQgMCkpKQorICAgKi8KKyAgYXNzZXJ0LnRo
cm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAorICAgICAgICAiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwN1x4MDFceDYwXHgwMVx4NmZceDAxXHg2Ylx4NmZceDAz
XHgwMlx4MDFceDAwXHgwYVx4MDZceDAxXHgwNFx4MDBceDIwXHgwMFx4MGJceDAwXHgwYlx4MDRc
eDZlXHg2MVx4NmRceDY1XHgwMVx4MDRceDAxXHgwMFx4MDFceDY2IgorICAgICAgKSwKKyAgICBX
ZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgImNvbnRyb2wgZmxvdyByZXR1cm5zIHdpdGgg
dW5leHBlY3RlZCB0eXBlLiBFeHRlcm5yZWYiCisgICk7Cit9CisKKy8vIEVuc3VyZSB0d28gd2F5
cyBvZiB3cml0aW5nIGZ1bmNyZWYgYXJlIGVxdWl2YWxlbnQuCithc3luYyBmdW5jdGlvbiB0ZXN0
RnVuY3JlZkNvbXBhdGliaWxpdHkoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlw
ZSAkdCAoZnVuYyAocGFyYW0gZnVuY3JlZikgKHJlc3VsdCAocmVmIG51bGwgZnVuYykpKSkKKyAg
ICogICAoZnVuYyAkZiAodHlwZSAkdCkgKGxvY2FsLmdldCAwKSkpCisgICAqLworICBtb2R1bGUo
CisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDdceDAxXHg2MFx4
MDFceDcwXHgwMVx4NmNceDcwXHgwM1x4MDJceDAxXHgwMFx4MGFceDA2XHgwMVx4MDRceDAwXHgy
MFx4MDBceDBiXHgwMFx4MGJceDA0XHg2ZVx4NjFceDZkXHg2NVx4MDFceDA0XHgwMVx4MDBceDAx
XHg2NiIKKyAgKTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdE5vbk51bGxGdW5jcmVmSW5jb21w
YXRpYmxlKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgJHQgKGZ1bmMgKHBh
cmFtIGZ1bmNyZWYpIChyZXN1bHQgKHJlZiBmdW5jKSkpKQorICAgKiAgIChmdW5jICRmICh0eXBl
ICR0KSAobG9jYWwuZ2V0IDApKSkKKyAgICovCisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4K
KyAgICAgIG1vZHVsZSgKKyAgICAgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4MDdceDAxXHg2MFx4MDFceDcwXHgwMVx4NmJceDcwXHgwM1x4MDJceDAxXHgwMFx4MGFc
eDA2XHgwMVx4MDRceDAwXHgyMFx4MDBceDBiXHgwMFx4MGJceDA0XHg2ZVx4NjFceDZkXHg2NVx4
MDFceDA0XHgwMVx4MDBceDAxXHg2NiIKKyAgICAgICksCisgICAgV2ViQXNzZW1ibHkuQ29tcGls
ZUVycm9yLAorICAgICJjb250cm9sIGZsb3cgcmV0dXJucyB3aXRoIHVuZXhwZWN0ZWQgdHlwZS4g
RnVuY3JlZiIKKyAgKTsKK30KKworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0UmVmVHlwZUxvY2FsKCkp
OworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0Tm9uTnVsbFJlZlR5cGVMb2NhbCgpKTsKK2Fzc2VydC5h
c3luY1Rlc3QodGVzdFJlZlR5cGVJblNpZ25hdHVyZSgpKTsKK2Fzc2VydC5hc3luY1Rlc3QodGVz
dFJlZlR5cGVQYXJhbUNoZWNrKCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0UmVmR2xvYmFsQ2hl
Y2soKSk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RFeHRlcm5GdW5jcmVmTm9uTnVsbENoZWNrKCkp
OworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0RXh0ZXJucmVmQ29tcGF0aWJpbGl0eSgpKTsKK2Fzc2Vy
dC5hc3luY1Rlc3QodGVzdE5vbk51bGxFeHRlcm5yZWZJbmNvbXBhdGlibGUoKSk7Cithc3NlcnQu
YXN5bmNUZXN0KHRlc3RGdW5jcmVmQ29tcGF0aWJpbGl0eSgpKTsKK2Fzc2VydC5hc3luY1Rlc3Qo
dGVzdE5vbk51bGxGdW5jcmVmSW5jb21wYXRpYmxlKCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggNzk0MDkyYjc2ZGQ3
MGY0NzI0MzdmNzY5Y2E0N2I0NjQ1ZmZjYjgwMS4uNGY4ZGQ5ZTNkMjEzNDM1MDAwMDA2ZTI0MTQ2
YjAxOTRjOWFjODhmMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9K
U1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC0xMyw2ICsxMyw4IEBACiAgICAgICAgICJmNjQiOiAg
ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC00LCAiYjN0eXBlIjogIkIzOjpE
b3VibGUiIH0sCiAgICAgICAgICJmdW5jcmVmIjogICB7ICJ0eXBlIjogInZhcmludDciLCAidmFs
dWUiOiAgLTE2LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAgImV4dGVybnJlZiI6
IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTcsICJiM3R5cGUiOiAiQjM6OkludDY0
IiB9LAorICAgICAgICAicmVmX251bGwiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
IC0yMCwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCisgICAgICAgICJyZWYiOiAgICAgICB7ICJ0
eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIxLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwK
ICAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIs
ICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjog
InZhcmludDciLCAidmFsdWUiOiAgLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAg
ICAidHlwZV9pZHgiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogLTEyOCwgImIzdHlw
ZSI6ICJCMzo6SW50NjQiIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429937</attachid>
            <date>2021-05-27 15:12:06 -0700</date>
            <delta_ts>2021-06-14 12:01:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226296-20210527151206.patch</filename>
            <type>text/plain</type>
            <size>52565</size>
            <attacher name="Asumu Takikawa">asumu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li5iMDhjODkzYzkyMTU4Zjlm
MGQzNTQ5Y2UwMjZhZTcyZjhhZDg4YmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAyMS0wNS0yNyAgQXN1bXUgVGFraWthd2EgIDxhc3VtdUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciAo
cmVmIG51bGw/ICR0KSB0eXBlIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRoZSBgcmVmYCB0eXBlIGNvbnN0cnVjdG9yIGZy
b20gdGhlIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgcHJvcG9zYWw6CisKKyAgICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZnVuY3Rpb24tcmVmZXJlbmNlcy9ibG9iL21h
c3Rlci9wcm9wb3NhbHMvZnVuY3Rpb24tcmVmZXJlbmNlcy9PdmVydmlldy5tZAorCisgICAgICAg
IEl0J3MgYWxzbyByZXF1aXJlZCBmb3IgdGhlIHR5cGUgaW1wb3J0cyBhbmQgR0MgcHJvcG9zYWxz
IGFzIHdlbGwuIFJlZiB0eXBlcyByZXByZXNlbnQKKyAgICAgICAgcmVmZXJlbmNlcyB0byBhbnkg
aGVhcCB0eXBlIChpbmNsdWRpbmcgZXhpc3RpbmcgZnVuY3JlZiBhbmQgZXh0ZXJucmVmKSB3aXRo
IGEgc3BlY2lmaWVkCisgICAgICAgIG51bGxhYmlsaXR5LgorCisgICAgICAgIFRoaXMgcmVxdWly
ZXMgYSBuZXcgaXNOdWxsYWJsZSBmbGFnIGluIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uLiBUaGlz
IGZsYWcgYWxzbyBlbmFibGVzCisgICAgICAgIG5vbi1udWxsIGV4dGVybnJlZiBhbmQgZnVuY3Jl
ZnMsIGFuZCBoZW5jZSB0aGlzIGNvbW1pdCBhbHNvIGFkZHMgdGhlIG5lY2Vzc2FyeSBjaGVja3MK
KyAgICAgICAgYXQgV2FzbS9KUyBib3VuZGFyaWVzLgorCisgICAgICAgIE5vbi1udWxsIHJlZmVy
ZW5jZSB0eXBlcyBhbHNvIGdlbmVyYWxseSBjYW5ub3QgYmUgdXNlZCBhcyBmdW5jdGlvbiBsb2Nh
bHMuCisKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpnVHlwZUlkeCk6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjp0bXBGb3JUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJH
ZW5lcmF0b3I6OmVtaXRDQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
Ojptb3ZlT3BGb3JWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6V2FzbUNhbGxpbmdDb252ZW50aW9uOjptYXJzaGFsbExvY2F0aW9uIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SlNDYWxsaW5nQ29udmVudGlvbjo6bWFyc2hhbGxMb2NhdGlvbiBjb25z
dCk6CisgICAgICAgICogd2FzbS9XYXNtRm9ybWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206Omlz
U3VidHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OmlzVmFsaWRIZWFwVHlwZUtpbmQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjppc0RlZmF1bHRhYmxlVHlwZSk6CisgICAgICAgICogd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4
dD46OnBhcnNlQW5ub3RhdGVkU2VsZWN0SW1tZWRpYXRlcyk6CisgICAgICAgIChKU0M6Oldhc206
OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpjaGVja0JyYW5jaFRhcmdldCk6CisgICAgICAgIChK
U0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAg
ICAgICAqIHdhc20vV2FzbUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6R2xvYmFsOjpzZXQpOgorICAgICAgICAq
IHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChKU0M6Oldhc206
OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUpOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKToKKyAgICAgICAgKiB3YXNtL1dh
c21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VCbG9ja1NpZ25hdHVyZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlw
ZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VSZWZUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcik6CisgICAgICAgIChKU0M6Oldh
c206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudFNlZ21lbnRWZWN0b3JPZkV4cHJlc3Npb25z
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWxUeXBlKToK
KyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpj
b21wdXRlSGFzaCk6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHk6Cisg
ICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21U
b0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6bGlua0ltcGwpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTA1
LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFVuY2hl
Y2tlZExvY2sgZXZlbiBsZXNzIGluIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAwMGExN2M0MDY0YTYw
MzBjM2U0YTRmOTY3NzIxNGE1N2E3YmY3OTkwLi4wZTk2YTYxODdiOTJiOTI0YTM4MTllZDg5ZTIz
OWFmZmUxOWRmMmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvci5jcHAKQEAgLTQxMyw2ICs0MTMsNyBAQCBwcml2YXRlOgogICAgIFR5cGVk
VG1wIGc2NCgpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpHUCksIFR5cGVzOjpJNjQgfTsgfQogICAg
IFR5cGVkVG1wIGdFeHRlcm5yZWYoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCBUeXBlczo6
RXh0ZXJucmVmIH07IH0KICAgICBUeXBlZFRtcCBnRnVuY3JlZigpIHsgcmV0dXJuIHsgbmV3VG1w
KEIzOjpHUCksIFR5cGVzOjpGdW5jcmVmIH07IH0KKyAgICBUeXBlZFRtcCBnVHlwZUlkeChUeXBl
IHR5cGUpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpHUCksIHR5cGUgfTsgfQogICAgIFR5cGVkVG1w
IGYzMigpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpGUCksIFR5cGVzOjpGMzIgfTsgfQogICAgIFR5
cGVkVG1wIGY2NCgpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpGUCksIFR5cGVzOjpGNjQgfTsgfQog
CkBAIC00MjUsNiArNDI2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBnNjQoKTsK
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKICAgICAgICAgICAgIHJldHVybiBnRnVu
Y3JlZigpOworICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4OgorICAgICAgICAgICAgcmV0
dXJuIGdUeXBlSWR4KHR5cGUpOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CiAg
ICAgICAgICAgICByZXR1cm4gZ0V4dGVybnJlZigpOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
MzI6CkBAIC02MDEsNiArNjA0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6Okk2NDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpU
eXBlSWR4OgogICAgICAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBCMzo6SW50NjQ7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CkBAIC02NTAs
NiArNjU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OgogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNy
ZWY6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgICAgICAgICByZXR1cm4g
TW92ZTsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICAgICAgcmV0dXJuIE1v
dmVGbG9hdDsKQEAgLTkwNyw2ICs5MTIsNyBAQCBBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0
b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHBybwogICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJl
ZjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6VHlwZUlkeDoKICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBhcmcsIG1fbG9jYWxzW2ldKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CkBAIC0xMDA5
LDYgKzEwMTUsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRMb2NhbChUeXBlIHR5cGUsIHVp
bnQzMl90IGNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHN3aXRjaCAodHlwZS5raW5k
KSB7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6RnVuY3JlZjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAg
ICAgIGFwcGVuZChNb3ZlLCBBcmc6OmltbShKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSwgbG9j
YWwpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKQEAg
LTEwNDQsNiArMTA1MSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENvbnN0YW50KEJhc2lj
QmxvY2sqIGJsb2NrLCBUeXBlIHR5cGUsIHVpbnQ2NF90IHZhbHVlKSAtCiAgICAgY2FzZSBUeXBl
S2luZDo6STY0OgogICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICBjYXNlIFR5cGVL
aW5kOjpGdW5jcmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgICAgIGFwcGVu
ZChibG9jaywgTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUpLCByZXN1bHQpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CkBAIC0xMDg4LDcgKzEwOTYsMTEgQEAgYXV0byBB
aXJJUkdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNz
aW9uVHlwZSYgcmVzdWx0KQogYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyh1aW50MzJf
dCBpbmRleCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAg
IC8vIEZJWE1FOiBFbWl0IHRoaXMgaW5saW5lIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTk4NTA2Pi4KLSAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGVzOjpGdW5j
cmVmKTsKKyAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJl
bmNlcygpKSB7CisgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZv
LnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7CisgICAgICAgIHJl
c3VsdCA9IHRtcEZvclR5cGUoVHlwZSB7VHlwZUtpbmQ6OlR5cGVJZHgsIE51bGxhYmxlOjpObywg
c2lnbmF0dXJlSW5kZXh9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gdG1wRm9yVHlw
ZShUeXBlczo6RnVuY3JlZik7CiAgICAgZW1pdENDYWxsKCZvcGVyYXRpb25XYXNtUmVmRnVuYywg
cmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5cGVzOjpJMzIsIGluZGV4KSk7
CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA4ODBlNDQ2YmRjOGJkMGU4ZTlhZWU5ZjkwMzYw
Mzk1MzQ0OGE1ZjViLi42YzAyNmUwOGE0MDllOTk1ZDQzMThkZmIxODA0NjI2ZDBmYWQxNzVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRp
b24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRp
b24uaApAQCAtMTA3LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
Okk2NDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6RXh0ZXJucmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4OgogICAgICAg
ICAgICAgcmV0dXJuIG1hcnNoYWxsTG9jYXRpb25JbXBsKHJvbGUsIGdwckFyZ3MsIGdwQXJndW1l
bnRDb3VudCwgc3RhY2tPZmZzZXQpOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKQEAgLTE5NSw2ICsxOTYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6VHlwZUlkeDoKICAgICAgICAgICAgIHJldHVybiBtYXJzaGFsbExvY2F0aW9uSW1wbChyb2xl
LCBncHJBcmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNrT2Zmc2V0KTsKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGNjQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggODA3YWRiOGU3MDVkOGY3NTI5YTU0YzhmMjQz
MTMwY2RlYWNmZjQ1Mi4uMDcyNDRmMGRkYWFkN2I3MzA3OWI3MjA5MzM1M2ExMGNhZDJjZTE0MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtODAsNiArODAsOSBA
QCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAKIGlubGluZSBib29sIGlzU3Vi
dHlwZShUeXBlIHN1YiwgVHlwZSBwYXJlbnQpCiB7CisgICAgaWYgKHN1Yi5pc051bGxhYmxlKCkg
JiYgIXBhcmVudC5pc051bGxhYmxlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlm
IChzdWIuaXNUeXBlSWR4KCkgJiYgcGFyZW50LmlzRnVuY3JlZigpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIApAQCAtOTEsNiArOTQsMjMgQEAgaW5saW5lIGJvb2wgaXNSZWZUeXBlKFR5cGUgdHlw
ZSkKICAgICByZXR1cm4gdHlwZS5pc0Z1bmNyZWYoKSB8fCB0eXBlLmlzRXh0ZXJucmVmKCkgfHwg
dHlwZS5pc1R5cGVJZHgoKTsKIH0KIAoraW5saW5lIGJvb2wgaXNWYWxpZEhlYXBUeXBlS2luZChU
eXBlS2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitpbmxpbmUgYm9vbCBpc0RlZmF1bHRhYmxlVHlwZShUeXBlIHR5cGUpCit7Cisg
ICAgcmV0dXJuICFpc1JlZlR5cGUodHlwZSkgfHwgdHlwZS5pc051bGxhYmxlKCk7Cit9CisKIGVu
dW0gY2xhc3MgRXh0ZXJuYWxLaW5kIDogdWludDhfdCB7CiAgICAgLy8gRklYTUUgYXV0by1nZW5l
cmF0ZSB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MjMx
CiAgICAgRnVuY3Rpb24gPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaAppbmRleCBiMDU3NzkxZmI4ZjEzNjVlYzZlNmZkM2E5YzVkNjY5NTI1
ODA3NzQ0Li4zNzA2ZTViMGYzODY0YzJlOGJkMzc0ZmY2MjA1MmRlMmZlZmYzMzhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMjQz
LDcgKzI0Myw4IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkgLT4gUmVz
dWx0CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKG51bWJlck9m
TG9jYWxzKSwgImNhbid0IGdldCBGdW5jdGlvbidzIG51bWJlciBvZiBsb2NhbHMgaW4gZ3JvdXAg
IiwgaSk7CiAgICAgICAgIHRvdGFsTnVtYmVyT2ZMb2NhbHMgKz0gbnVtYmVyT2ZMb2NhbHM7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodG90YWxOdW1iZXJPZkxvY2FscyA+IG1heEZ1bmN0
aW9uTG9jYWxzLCAiRnVuY3Rpb24ncyBudW1iZXIgb2YgbG9jYWxzIGlzIHRvbyBiaWcgIiwgdG90
YWxOdW1iZXJPZkxvY2FscywgIiBtYXhpbXVtICIsIG1heEZ1bmN0aW9uTG9jYWxzKTsKLSAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUodHlwZU9mTG9jYWwpLCAiY2Fu
J3QgZ2V0IEZ1bmN0aW9uIGxvY2FsJ3MgdHlwZSBpbiBncm91cCAiLCBpKTsKKyAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCB0eXBlT2ZMb2NhbCksICJj
YW4ndCBnZXQgRnVuY3Rpb24gbG9jYWwncyB0eXBlIGluIGdyb3VwICIsIGkpOworICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFpc0RlZmF1bHRhYmxlVHlwZSh0eXBlT2ZMb2NhbCksICJGdW5j
dGlvbiBsb2NhbHMgbXVzdCBoYXZlIGEgZGVmYXVsdGFibGUgdHlwZSIpOwogCiAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIW1fbG9jYWxzLnRyeVJlc2VydmVDYXBhY2l0eSh0b3RhbE51bWJl
ck9mTG9jYWxzKSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIGZ1bmN0aW9uJ3Mg
IiwgdG90YWxOdW1iZXJPZkxvY2FscywgIiBsb2NhbHMiKTsKICAgICAgICAgZm9yICh1aW50MzJf
dCBpID0gMDsgaSA8IG51bWJlck9mTG9jYWxzOyArK2kpCkBAIC02NDQsNyArNjQ1LDcgQEAgYXV0
byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VBbm5vdGF0ZWRTZWxlY3RJbW1lZGlhdGVz
KEFubm90YXRlZFNlbGVjdEltbWUKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKHNpemVPZkFubm90
YXRpb25WZWN0b3IgIT0gMSwgInNlbGVjdCBpbnZhbGlkIHJlc3VsdCBhcml0eSBmb3IiKTsKIAog
ICAgIFR5cGUgdGFyZ2V0VHlwZTsKLSAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVl
VHlwZSh0YXJnZXRUeXBlKSwgInNlbGVjdCBjYW4ndCBwYXJzZSBhbm5vdGF0aW9ucyIpOworICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgdGFyZ2V0VHlwZSks
ICJzZWxlY3QgY2FuJ3QgcGFyc2UgYW5ub3RhdGlvbnMiKTsKIAogICAgIHJlc3VsdC5zaXplT2ZB
bm5vdGF0aW9uVmVjdG9yID0gc2l6ZU9mQW5ub3RhdGlvblZlY3RvcjsKICAgICByZXN1bHQudGFy
Z2V0VHlwZSA9IHRhcmdldFR5cGU7CkBAIC02OTksNyArNzAwLDcgQEAgYXV0byBGdW5jdGlvblBh
cnNlcjxDb250ZXh0Pjo6Y2hlY2tCcmFuY2hUYXJnZXQoY29uc3QgQ29udHJvbFR5cGUmIHRhcmdl
dCkgLT4gUGEKIAogICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KSAtIHRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsgKytpKQotICAgICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodGFyZ2V0LmJyYW5jaFRhcmdldFR5cGUoaSksIG1fZXhw
cmVzc2lvblN0YWNrW29mZnNldCArIGldLnR5cGUoKSksICJicmFuY2gncyBzdGFjayB0eXBlIGlz
IG5vdCBhIGJsb2NrJ3MgdHlwZSBicmFuY2ggdGFyZ2V0IHR5cGUuIFN0YWNrIHZhbHVlIGhhcyB0
eXBlIiwgbV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLmtpbmQsICIgYnV0IGJy
YW5jaCB0YXJnZXQgZXhwZWN0cyBhIHZhbHVlIG9mICIsIHRhcmdldC5icmFuY2hUYXJnZXRUeXBl
KGkpLmtpbmQsICIgYXQgaW5kZXggIiwgaSk7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxf
SUYoIWlzU3VidHlwZShtX2V4cHJlc3Npb25TdGFja1tvZmZzZXQgKyBpXS50eXBlKCksIHRhcmdl
dC5icmFuY2hUYXJnZXRUeXBlKGkpKSwgImJyYW5jaCdzIHN0YWNrIHR5cGUgaXMgbm90IGEgYmxv
Y2sncyB0eXBlIGJyYW5jaCB0YXJnZXQgdHlwZS4gU3RhY2sgdmFsdWUgaGFzIHR5cGUgIiwgbV9l
eHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLmtpbmQsICIgYnV0IGJyYW5jaCB0YXJn
ZXQgZXhwZWN0cyBhIHZhbHVlIG9mICIsIHRhcmdldC5icmFuY2hUYXJnZXRUeXBlKGkpLmtpbmQs
ICIgYXQgaW5kZXggIiwgaSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTA3OSw3ICsxMDgw
LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgY2Fz
ZSBSZWZOdWxsOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdl
YkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKICAg
ICAgICAgVHlwZSB0eXBlT2ZOdWxsOwotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2Ug
dHlwZSIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZv
LCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7
CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZCh0eXBlT2ZOdWxs
LCBtX2NvbnRleHQuYWRkQ29uc3RhbnQodHlwZU9mTnVsbCwgSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKSkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAgLTExMDksNyArMTExMCw3IEBA
IEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIGlm
IChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKICAg
ICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLnNpZ25hdHVy
ZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0gICAgICAgICAgICBtX2V4cHJl
c3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlwZSB7VHlwZUtpbmQ6OlR5cGVJZHgsIHNp
Z25hdHVyZUluZGV4fSwgcmVzdWx0KTsKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNv
bnN0cnVjdEFuZEFwcGVuZChUeXBlIHtUeXBlS2luZDo6VHlwZUlkeCwgTnVsbGFibGU6Ok5vLCBz
aWduYXR1cmVJbmRleH0sIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKaW5kZXggOWJl
MWZmZTgyNDRhNWY3MWVmMTNmYzdkM2RhODE2MmVlMmJlMjk5Ny4uNTlkYTk3N2MzY2E2ZmE0Y2Ez
NTdlMGNmNWRlYTRkNTY2YmIwYzk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUdsb2JhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUdsb2JhbC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgSlNWYWx1ZSBHbG9iYWw6OmdldChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICByZXR1cm4ganNOdW1iZXIocHVy
aWZ5TmFOKGJpdHdpc2VfY2FzdDxkb3VibGU+KG1fdmFsdWUubV9wcmltaXRpdmUpKSk7CiAgICAg
Y2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6Cisg
ICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgcmV0dXJuIG1fdmFsdWUubV9leHRl
cm5yZWYuZ2V0KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CkBAIC04NiwxNSArODcsMzUgQEAgdm9pZCBHbG9iYWw6OnNldChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIH0KICAgICBjYXNlIFR5cGVLaW5kOjpF
eHRlcm5yZWY6IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vd25lcik7CisgICAgICAgIGlm
ICghbV90eXBlLmlzTnVsbGFibGUoKSAmJiBhcmd1bWVudC5pc051bGwoKSkgeworICAgICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFz
c2VtYmx5UnVudGltZUVycm9yKGdsb2JhbE9iamVjdCwgdm0sICJOb24tbnVsbCBFeHRlcm5yZWYg
Y2Fubm90IGJlIG51bGwiKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAg
ICAgbV92YWx1ZS5tX2V4dGVybnJlZi5zZXQobV9vd25lci0+dm0oKSwgbV9vd25lciwgYXJndW1l
bnQpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoK
ICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOiB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
b3duZXIpOwotICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGFyZ3Vt
ZW50KSAmJiAhYXJndW1lbnQuaXNOdWxsKCkpIHsKKyAgICAgICAgYm9vbCBpc051bGxhYmxlID0g
bV90eXBlLmlzTnVsbGFibGUoKTsKKyAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1
bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdh
c21XcmFwcGVyRnVuY3Rpb24gPSBudWxscHRyOworICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlI
b3N0RnVuY3Rpb24odm0sIGFyZ3VtZW50LCB3YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rp
b24pICYmICghaXNOdWxsYWJsZSB8fCAhYXJndW1lbnQuaXNOdWxsKCkpKSB7CiAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZUpTV2ViQXNz
ZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBl
eHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisgICAgICAgIGlmIChtX3R5cGUua2luZCA9PSBUeXBlS2luZDo6VHlwZUlkeCAmJiAod2FzbUZ1
bmN0aW9uIHx8IHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7CisgICAgICAgICAgICBXYXNtOjpTaWdu
YXR1cmVJbmRleCBwYXJhbUluZGV4ID0gbV90eXBlLmluZGV4OworICAgICAgICAgICAgV2FzbTo6
U2lnbmF0dXJlSW5kZXggYXJnSW5kZXg7CisgICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9uKQor
ICAgICAgICAgICAgICAgIGFyZ0luZGV4ID0gd2FzbUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFyZ0luZGV4ID0gd2FzbVdyYXBw
ZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAgICAgICAgIGlmIChwYXJhbUluZGV4
ICE9IGFyZ0luZGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKGdsb2JhbE9i
amVjdCwgdm0sICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZlcmVuY2Ug
dHlwZSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
IH0KICAgICAgICAgbV92YWx1ZS5tX2V4dGVybnJlZi5zZXQobV9vd25lci0+dm0oKSwgbV9vd25l
ciwgYXJndW1lbnQpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCBkNWY1MDdjZGE2MzM1
YTYxNmEwOGM4ZWZlMjFlZDczMzQxZDQyZWIzLi41NWRlOWVmZTg2OGE1ZmE0NzY4ZDU3MGIxOTk3
ZjcyNjYwNjg5MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludEdlbmVyYXRvci5jcHAKQEAgLTU1Nyw2ICs1NTcsOCBAQCBhdXRvIExMSW50R2VuZXJhdG9y
OjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+
IExMSQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51
bGw6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNjEzLDYgKzYxNSw4IEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAg
Y2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTY0MSw2ICs2NDUsOCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25G
b3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIH0KICAgICB9CkBAIC02OTcsNiArNzAzLDggQEAgYXV0byBMTEludEdlbmVyYXRv
cjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAt
PiBWZWMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgog
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZO
dWxsOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzQ2LDYgKzc1NCw4IEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5kZXggMjg2ODZiNTNkNGM5Y2Jm
MmU0ODdhODg3MjU1YjYxYTc4MjE5OTA4NC4uZDJmYzdkNmU3OTlkZWUxODQ5YTg4NzIxYTBlN2I0
MTJiYzk4ODg1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaApAQCAt
ODQsOCArODQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VWYXJJbnQ2NChpbnQ2NF90Jik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBwYXJzZUJsb2NrU2lnbmF0dXJlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgQmxvY2tT
aWduYXR1cmUmKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVlVHlwZShU
eXBlJik7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VSZWZUeXBlKFR5cGUmKTsK
KyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVlVHlwZShjb25zdCBNb2R1bGVJ
bmZvcm1hdGlvbiYsIFR5cGUmKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVJl
ZlR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBUeXBlJik7CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gcGFyc2VFeHRlcm5hbEtpbmQoRXh0ZXJuYWxLaW5kJik7CiAKICAgICBzaXpl
X3QgbV9vZmZzZXQgPSAwOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIEFMV0FZU19JTkxJTkUgdHlwZW5h
bWUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJlc3VsdCBQYXJzZXI8U3VjY2Vzc1R5cGU+
OjpwCiB7CiAgICAgaW50OF90IHR5cGVLaW5kOwogICAgIGlmIChwZWVrSW50Nyh0eXBlS2luZCkg
JiYgaXNWYWxpZFR5cGVLaW5kKHR5cGVLaW5kKSkgewotICAgICAgICBUeXBlIHR5cGUgPSB7c3Rh
dGljX2Nhc3Q8VHlwZUtpbmQ+KHR5cGVLaW5kKSwgMH07CisgICAgICAgIFR5cGUgdHlwZSA9IHtz
dGF0aWNfY2FzdDxUeXBlS2luZD4odHlwZUtpbmQpLCBOdWxsYWJsZTo6WWVzLCAwfTsKICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighKGlzVmFsdWVUeXBlKHR5cGUpIHx8IHR5cGUuaXNWb2lk
KCkpLCAicmVzdWx0IHR5cGUgb2YgYmxvY2s6ICIsIG1ha2VTdHJpbmcodHlwZS5raW5kKSwgIiBp
cyBub3QgYSB2YWx1ZSB0eXBlIG9yIFZvaWQiKTsKICAgICAgICAgcmVzdWx0ID0gbV9zaWduYXR1
cmVJbmZvcm1hdGlvbi50aHVua0Zvcih0eXBlKTsKICAgICAgICAgbV9vZmZzZXQrKzsKQEAgLTI5
NiwyMiArMjk2LDUwIEBAIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUgUGFyc2VyPFN1Y2Nlc3NUeXBl
Pjo6UGFydGlhbFJlc3VsdCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFN1Y2Nlc3NUeXBlPgotQUxXQVlTX0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlw
ZT46OnBhcnNlVmFsdWVUeXBlKFR5cGUmIHJlc3VsdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJz
ZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYg
aW5mbywgVHlwZSYgcmVzdWx0KQogewogICAgIGludDhfdCBraW5kOwogICAgIGlmICghcGFyc2VJ
bnQ3KGtpbmQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgVHlwZSB0eXBlID0ge3N0YXRp
Y19jYXN0PFR5cGVLaW5kPihraW5kKSwgMH07Ci0gICAgaWYgKCFpc1ZhbGlkVHlwZUtpbmQoa2lu
ZCkgfHwgIWlzVmFsdWVUeXBlKHR5cGUpKQorICAgIGlmICghaXNWYWxpZFR5cGVLaW5kKGtpbmQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBUeXBlS2luZCB0eXBlS2luZCA9IHN0YXRp
Y19jYXN0PFR5cGVLaW5kPihraW5kKTsKKyAgICBib29sIGlzTnVsbGFibGUgPSB0cnVlOworICAg
IFNpZ25hdHVyZUluZGV4IHNpZ0luZGV4ID0gMDsKKyAgICBpZiAodHlwZUtpbmQgPT0gVHlwZUtp
bmQ6OlJlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmTnVsbCkgeworICAgICAgICBpZiAo
IU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbnQzMl90IGhlYXBUeXBlOworICAgICAg
ICBpc051bGxhYmxlID0gdHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJlZk51bGw7CisKKyAgICAgICAg
aWYgKCFwYXJzZVZhckludDMyKGhlYXBUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKGhlYXBUeXBlIDwgMCkgeworICAgICAgICAgICAgVHlwZUtpbmQgaGVhcEtp
bmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oaGVhcFR5cGUpOworICAgICAgICAgICAgaWYgKCFp
c1ZhbGlkSGVhcFR5cGVLaW5kKGhlYXBLaW5kKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB0eXBlS2luZCA9IGhlYXBLaW5kOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdHlwZUtpbmQgPSBUeXBlS2luZDo6VHlwZUlkeDsKKyAgICAgICAgICAgIGlm
IChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnVzZWRTaWduYXR1cmVzLnNp
emUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBzaWdJbmRl
eCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoaW5mby51c2VkU2lnbmF0dXJlc1toZWFwVHlw
ZV0uZ2V0KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgVHlwZSB0eXBlID0ge3R5cGVLaW5k
LCBzdGF0aWNfY2FzdDxOdWxsYWJsZT4oaXNOdWxsYWJsZSksIHNpZ0luZGV4fTsKKyAgICBpZiAo
IWlzVmFsdWVUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0ID0g
dHlwZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5
cGU+Ci1BTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VSZWZUeXBl
KFR5cGUmIHJlc3VsdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZVJlZlR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFR5cGUmIHJlc3VsdCkK
IHsKLSAgICBjb25zdCBib29sIHBhcnNlZCA9IHBhcnNlVmFsdWVUeXBlKHJlc3VsdCk7CisgICAg
Y29uc3QgYm9vbCBwYXJzZWQgPSBwYXJzZVZhbHVlVHlwZShpbmZvLCByZXN1bHQpOwogICAgIHJl
dHVybiBwYXJzZWQgJiYgaXNSZWZUeXBlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCBlZmY4YmMxYzk5N2Yw
MjI5YTJlYmM4Mzc2YmUyMTc0OWM3MmZiMzE2Li43ZGYxNTFmNmQ3MWE5Y2EzZTNmMmYxMzk4MWM1
YjIwNzk0NjQzMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2VjdGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNl
Y3Rpb25QYXJzZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFy
c2VUeXBlKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsKICAgICAgICAgICAgIFR5cGUgYXJndW1lbnRUeXBl
OwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUoYXJndW1l
bnRUeXBlKSwgImNhbid0IGdldCAiLCBpLCAidGggYXJndW1lbnQgVHlwZSIpOworICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBhcmd1bWVudFR5
cGUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBhcmd1bWVudCBUeXBlIik7CiAgICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50VHlwZSk7CiAgICAgICAgIH0KIApAQCAtNzMsNyArNzMs
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSgpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmV0dXJuVHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5
KGFyZ3VtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBz
ZWN0aW9uJ3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcmV0dXJuQ291bnQ7ICsraSkgewogICAgICAgICAgICAgVHlwZSB2YWx1ZTsKLSAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKHZhbHVlKSwgImNh
bid0IGdldCAiLCBpLCAidGggVHlwZSdzIHJldHVybiB2YWx1ZSIpOworICAgICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCB2YWx1ZSksICJjYW4ndCBn
ZXQgIiwgaSwgInRoIFR5cGUncyByZXR1cm4gdmFsdWUiKTsKICAgICAgICAgICAgIHJldHVyblR5
cGVzLmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIH0KIApAQCAtNDg0LDcgKzQ4NCw3IEBAIGF1dG8g
U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBj
YXNlIDB4MDU6IHsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVz
ZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsK
ICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBz
ZWN0aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUo
bV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7
CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAi
cmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKIAogICAgICAg
ICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUwOCw3ICs1MDgsNyBAQCBhdXRvIFNlY3Rp
b25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdB
U01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9u
KGluaXRFeHByKSk7CiAKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJl
ZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFwYXJzZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4g
ZWxlbSBzZWN0aW9uIik7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBl
LmlzRnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNy
ZWYiKTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUyNiw3ICs1MjYs
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKIAogICAgICAgICAg
ICAgVHlwZSByZWZUeXBlOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VS
ZWZUeXBlKHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsK
KyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJl
ZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKICAgICAgICAg
ICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGlu
IGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOwogCiAgICAgICAgICAgICB1aW50
MzJfdCBpbmRleENvdW50OwpAQCAtNjA2LDcgKzYwNiw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6
cGFyc2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1i
ZXIsCiAKICAgICBjYXNlIFJlZk51bGw6IHsKICAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOwotICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYu
bnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOworICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5
cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAgICAgICAgIHJlc3VsdFR5cGUgPSB0eXBl
T2ZOdWxsOwogICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpOwogICAgICAgICBicmVhazsKQEAgLTYxNyw3ICs2MTcsMTIgQEAgYXV0byBTZWN0aW9u
UGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPcklt
cG9ydE51bWJlciwKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIo
aW5kZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7CiAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoaW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpLCAicmVmLmZ1bmMgaW5k
ZXgiLCBpbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+
ZnVuY3Rpb25zLnNpemUoKSk7CiAKLSAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpGdW5jcmVm
OworICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJl
bmNlcygpKSB7CisgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1f
aW5mby0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKKyAgICAg
ICAgICAgIHJlc3VsdFR5cGUgPSB7VHlwZUtpbmQ6OlR5cGVJZHgsIE51bGxhYmxlOjpObywgc2ln
bmF0dXJlSW5kZXh9OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdFR5cGUgPSBU
eXBlczo6RnVuY3JlZjsKKwogICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBpbmRleDsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNjkyLDcgKzY5Nyw3IEBAIGF1dG8gU2VjdGlvblBhcnNl
cjo6cGFyc2VFbGVtZW50U2VnbWVudFZlY3Rvck9mRXhwcmVzc2lvbnMoVmVjdG9yPHVpbnQzMl90
PiYgcmVzCiAgICAgICAgICAgICBtX2luZm8tPmFkZERlY2xhcmVkRnVuY3Rpb24oZnVuY3Rpb25J
bmRleCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBUeXBlIHR5cGVPZk51bGw7Ci0g
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCks
ICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSBmdW5jIHR5cGUgaW4gZWxlbSBzZWN0aW9uIik7Cisg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBl
T2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIGZ1bmMgdHlwZSBpbiBlbGVtIHNlY3Rp
b24iKTsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXR5cGVPZk51bGwuaXNGdW5j
cmVmKCksICJyZWYubnVsbCBleHRlcm4gaXMgZm9yYmlkZGVuIGluIGVsZW1lbnQgc2VjdGlvbidz
LCAiLCBlbGVtZW50TnVtLCAidGggZWxlbWVudCdzICIsIGluZGV4LCAidGggaW5kZXgiKTsKICAg
ICAgICAgICAgIGZ1bmN0aW9uSW5kZXggPSBFbGVtZW50OjpudWxsRnVuY0luZGV4OwogICAgICAg
ICB9CkBAIC03MjgsNyArNzMzLDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRF
eHByRm9yRGF0YVNlY3Rpb24oT3B0aW9uYWw8STMySW5pdEV4cHI+JiBpbml0RXgKIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VHbG9iYWxUeXBlKEdsb2JhbEluZm9ybWF0aW9uJiBnbG9iYWwpIC0+
IFBhcnRpYWxSZXN1bHQKIHsKICAgICB1aW50OF90IG11dGFiaWxpdHk7Ci0gICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUoZ2xvYmFsLnR5cGUpLCAiY2FuJ3QgZ2V0IEdsb2Jh
bCdzIHZhbHVlIHR5cGUiKTsKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlw
ZShtX2luZm8sIGdsb2JhbC50eXBlKSwgImNhbid0IGdldCBHbG9iYWwncyB2YWx1ZSB0eXBlIik7
CiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VVSW50OChtdXRhYmlsaXR5KSwgImNhbid0
IGdldCBHbG9iYWwgdHlwZSdzIG11dGFiaWxpdHkiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KG11dGFiaWxpdHkgIT0gMHgwICYmIG11dGFiaWxpdHkgIT0gMHgxLCAiaW52YWxpZCBHbG9iYWwn
cyBtdXRhYmlsaXR5OiAweCIsIGhleChtdXRhYmlsaXR5LCAyLCBMb3dlcmNhc2UpKTsKICAgICBn
bG9iYWwubXV0YWJpbGl0eSA9IHN0YXRpY19jYXN0PEdsb2JhbEluZm9ybWF0aW9uOjpNdXRhYmls
aXR5PihtdXRhYmlsaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TaWduYXR1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25h
dHVyZS5jcHAKaW5kZXggNmIyMGQwODk0NTQyMDY3OWU3NjI3ZWUwYzhkYzE5YmRjOTg2N2I4OC4u
OWNhNjhmNWUwMGIyMGU4YTI4OTMwMmE4OWQwOTgzN2RiMDVlMzkxNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNpZ25hdHVyZS5jcHAKQEAgLTcwLDEwICs3MCwxMiBAQCBz
dGF0aWMgdW5zaWduZWQgY29tcHV0ZUhhc2goc2l6ZV90IHJldHVybkNvdW50LCBjb25zdCBUeXBl
KiByZXR1cm5UeXBlcywgc2l6ZV90CiAgICAgdW5zaWduZWQgYWNjdW11bGF0b3IgPSAweGExYmNl
ZGQ4dTsKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7
CiAgICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RG
OjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGFyZ3VtZW50VHlw
ZXNbaV0ua2luZCkpKTsKKyAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFj
Y3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDhf
dD4oYXJndW1lbnRUeXBlc1tpXS5udWxsYWJsZSkpKTsKICAgICAgICAgYWNjdW11bGF0b3IgPSBX
VEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNo
KGFyZ3VtZW50VHlwZXNbaV0uaW5kZXgpKTsKICAgICB9CiAgICAgZm9yICh1aW50MzJfdCBpID0g
MDsgaSA8IHJldHVybkNvdW50OyArK2kpIHsKICAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBh
aXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGlj
X2Nhc3Q8dWludDhfdD4ocmV0dXJuVHlwZXNbaV0ua2luZCkpKTsKKyAgICAgICAgYWNjdW11bGF0
b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDhfdD46
Omhhc2goc3RhdGljX2Nhc3Q8dWludDhfdD4ocmV0dXJuVHlwZXNbaV0ubnVsbGFibGUpKSk7CiAg
ICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJ
bnRIYXNoPHVuc2lnbmVkPjo6aGFzaChyZXR1cm5UeXBlc1tpXS5pbmRleCkpOwogICAgIH0KICAg
ICByZXR1cm4gYWNjdW11bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKaW5kZXggODUyZDc0NTdhMzkzZWI0YzkyMjg0ZWU0
NTIxNzA2ZjcxZTc3Y2QwZi4uODVlMTljZTU4MTZlZmVhNzYzNDVkZDc2YjNhOWRiZmUyMjhlZTM0
ZiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3Bz
SGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2dlbmVyYXRlV2FzbU9w
c0hlYWRlci5weQpAQCAtMjEyLDE1ICsyMTIsMjEgQEAgZW51bSBjbGFzcyBUeXBlS2luZCA6IGlu
dDhfdCB7CiB9OwogI3VuZGVmIENSRUFURV9FTlVNX1ZBTFVFCiAKK2VudW0gY2xhc3MgTnVsbGFi
bGUgOiBib29sIHsKKyAgTm8gPSBmYWxzZSwKKyAgWWVzID0gdHJ1ZSwKK307CisKIHVzaW5nIFNp
Z25hdHVyZUluZGV4ID0gdWludHB0cl90OwogCiBzdHJ1Y3QgVHlwZSB7CiAgICAgVHlwZUtpbmQg
a2luZDsKKyAgICBOdWxsYWJsZSBudWxsYWJsZTsKICAgICBTaWduYXR1cmVJbmRleCBpbmRleDsK
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlJiBvdGhlcikgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBvdGhlci5raW5kID09IGtpbmQgJiYgb3RoZXIuaW5kZXggPT0gaW5kZXg7
CisgICAgICAgIHJldHVybiBvdGhlci5raW5kID09IGtpbmQgJiYgb3RoZXIubnVsbGFibGUgPT0g
bnVsbGFibGUgJiYgb3RoZXIuaW5kZXggPT0gaW5kZXg7CiAgICAgfQogCiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFR5cGUmIG90aGVyKSBjb25zdApAQCAtMjI4LDYgKzIzNCwxMSBAQCBzdHJ1
Y3QgVHlwZSB7CiAgICAgICAgIHJldHVybiAhKG90aGVyID09ICp0aGlzKTsKICAgICB9CiAKKyAg
ICBib29sIGlzTnVsbGFibGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGJvb2w+KG51bGxhYmxlKTsKKyAgICB9CisKICAgICAjZGVmaW5lIENSRUFURV9QUkVESUNB
VEUobmFtZSwgLi4uKSBib29sIGlzICMjIG5hbWUoKSBjb25zdCB7IHJldHVybiBraW5kID09IFR5
cGVLaW5kOjpuYW1lOyB9CiAgICAgRk9SX0VBQ0hfV0FTTV9UWVBFKENSRUFURV9QUkVESUNBVEUp
CiAgICAgI3VuZGVmIENSRUFURV9QUkVESUNBVEUKQEAgLTIzNSw3ICsyNDYsNyBAQCBzdHJ1Y3Qg
VHlwZSB7CiAKIG5hbWVzcGFjZSBUeXBlcwogewotI2RlZmluZSBDUkVBVEVfQ09OU1RBTlQobmFt
ZSwgaWQsIC4uLikgY29uc3RleHByIFR5cGUgbmFtZSA9IFR5cGV7VHlwZUtpbmQ6Om5hbWUsIDB1
fTsKKyNkZWZpbmUgQ1JFQVRFX0NPTlNUQU5UKG5hbWUsIGlkLCAuLi4pIGNvbnN0ZXhwciBUeXBl
IG5hbWUgPSBUeXBle1R5cGVLaW5kOjpuYW1lLCBOdWxsYWJsZTo6WWVzLCAwdX07CiBGT1JfRUFD
SF9XQVNNX1RZUEUoQ1JFQVRFX0NPTlNUQU5UKQogI3VuZGVmIENSRUFURV9DT05TVEFOVAogfSAv
LyBuYW1lc3BhY2UgVHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dhc21Ub0pTLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAppbmRleCA0OWU2ZjQ5MDA3MzFiZjE2YTYwZDRkNjk3MGEwYzBiNmMwMjFmNTJlLi5mNjdm
MjQyYTc4OTEzYWU1YzAyYWE1NjhlOTlhYzY1Y2RiYjgwZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCkBAIC0xMDQsNiArMTA0LDggQEAgRXhwZWN0ZWQ8
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3
YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIHN3aXRjaCAoYXJnVHlwZS5raW5kKSB7CiAgICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RnVuYzoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5
cGVJZHg6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CkBAIC0xNzcsNiAr
MTc5LDggQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4s
IEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIHN3aXRjaCAoYXJn
VHlwZS5raW5kKSB7CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51
bGw6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92ZS4KICAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRl
cm5yZWY6CkBAIC0yNzgsNiArMjgyLDggQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAg
ICAgc3dpdGNoIChzaWduYXR1cmUucmV0dXJuVHlwZSgwKS5raW5kKSB7CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAg
ICAgICAgIC8vIEZvciB0aGUgSmF2YVNjcmlwdCBlbWJlZGRpbmcsIGltcG9ydHMgd2l0aCB0aGVz
ZSB0eXBlcyBpbiB0aGVpciBzaWduYXR1cmUgcmV0dXJuIGFyZSBhIFdlYkFzc2VtYmx5Lk1vZHVs
ZSB2YWxpZGF0aW9uIGVycm9yLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBjNWJhYzI1OWE5MWIyMTFh
YjM1Y2JhODY4MDNjODQzZjJlOTI3YmI3Li5jYjBhN2QzY2UyOWIzMzVmNDBlODFlYjQ4ZDYzZTgw
Y2QwYmVmNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtODUsMTEgKzg1LDI2IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2lu
ZDo6VHlwZUlkeDoKICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVuY3JlZjogewotICAg
ICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmcpICYmICFhcmcu
aXNOdWxsKCkpCisgICAgICAgICAgICBib29sIGlzTnVsbGFibGUgPSBzaWduYXR1cmUuYXJndW1l
bnQoYXJnSW5kZXgpLmlzTnVsbGFibGUoKTsKKyAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rp
b24qIHdhc21GdW5jdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICBp
ZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGFyZywgd2FzbUZ1bmN0aW9uLCB3YXNt
V3JhcHBlckZ1bmN0aW9uKSAmJiAoIWlzTnVsbGFibGUgfHwgIWFyZy5pc051bGwoKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKGdsb2JhbE9iamVj
dCwgdm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIpKSk7Cisg
ICAgICAgICAgICBpZiAoc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ0luZGV4KS5raW5kID09IFdhc206
OlR5cGVLaW5kOjpUeXBlSWR4ICYmICh3YXNtRnVuY3Rpb24gfHwgd2FzbVdyYXBwZXJGdW5jdGlv
bikpIHsKKyAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0g
c2lnbmF0dXJlLmFyZ3VtZW50KGFyZ0luZGV4KS5pbmRleDsKKyAgICAgICAgICAgICAgICBXYXNt
OjpTaWduYXR1cmVJbmRleCBhcmdJbmRleDsKKyAgICAgICAgICAgICAgICBpZiAod2FzbUZ1bmN0
aW9uKQorICAgICAgICAgICAgICAgICAgICBhcmdJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0
dXJlSW5kZXgoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGFy
Z0luZGV4ID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAgICAg
ICAgICAgICBpZiAocGFyYW1JbmRleCAhPSBhcmdJbmRleCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKGdsb2JhbE9iamVjdCwgdm0sICJBcmd1
bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZlcmVuY2UgdHlwZSIpKSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdh
c206OlR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgICAgICAgICBpZiAoIXNpZ25hdHVyZS5hcmd1
bWVudChhcmdJbmRleCkuaXNOdWxsYWJsZSgpICYmIGFyZy5pc051bGwoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwg
Ik5vbi1udWxsIEV4dGVybnJlZiBjYW5ub3QgYmUgbnVsbCIpKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STY0OgogICAgICAgICAgICAgYXJnID0g
SlNWYWx1ZTo6ZGVjb2RlKGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYXJnLnRvQmlnSW50NjQoZ2xv
YmFsT2JqZWN0KSkpOwpAQCAtMTAyLDYgKzExNyw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6Vm9pZDoK
ICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBXYXNtOjpU
eXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6UmVmOgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmNwcAppbmRleCA1OGU4Y2QwMDA2ODIzZGVhZjRlZTY4NzNhMTcxOGFkNTc4MzZmNWIzLi4y
YzExZDA2ZjllODA0YjcyZWNhNTgyMTM4ZTlhZTQ0MGYzMDVlZDM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQu
Y3BwCkBAIC0yNDcsMTYgKzI0NywzNSBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjps
aW5rSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaQogICAgICAg
ICAgICAgICAgICAgICBpZiAoZ2xvYmFsVmFsdWUtPmdsb2JhbCgpLT5tdXRhYmlsaXR5KCkgIT0g
V2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxP
YmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAi
bXVzdCBiZSBhIHNhbWUgbXV0YWJpbGl0eSIpKSk7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQua2luZEluZGV4XS50eXBlLmtpbmQp
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVuY3JlZjoKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6VHlwZUlkeDoKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVuY3JlZjogeworICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc051bGxhYmxlID0gZ2xvYmFsLnR5cGUuaXNOdWxsYWJsZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9u
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gZ2xvYmFsVmFsdWUtPmdsb2JhbCgpLT5nZXQoZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rp
b24odm0sIHZhbHVlKSAmJiAhdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2Jh
bE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIs
ICJtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5jdGlvbiBvciBudWxsIikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFsdWUs
IHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikgJiYgKCFpc051bGxhYmxlIHx8ICF2
YWx1ZS5pc051bGwoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBtc2cgPSBpc051bGxhYmxlID8gIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIG9y
IG51bGwiIDogIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0
ZWQgZ2xvYmFsIiwgbXNnKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGdsb2JhbC50eXBlLmtpbmQgPT0gV2FzbTo6VHlwZUtpbmQ6OlR5
cGVJZHggJiYgKHdhc21GdW5jdGlvbiB8fCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHBhcmFtSW5kZXggPSBn
bG9iYWwudHlwZS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYXNtOjpTaWdu
YXR1cmVJbmRleCBhcmdJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2Fz
bUZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdJbmRleCA9IHdh
c21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ0luZGV4ID0gd2FzbVdy
YXBwZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAocGFyYW1JbmRleCAhPSBhcmdJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGds
b2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2Jh
bCIsICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZlcmVuY2UgdHlwZSIp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBt
X2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChpbXBvcnQua2luZEluZGV4LCB2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAg
ICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+Z2V0KGds
b2JhbE9iamVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWwudHlw
ZS5pc051bGxhYmxlKCkgJiYgdmFsdWUuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2Jh
bE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIs
ICJub24tbnVsbCBleHRlcm5yZWYgY2Fubm90IGJlIG51bGwiKSkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRl
eCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKQEAgLTI4MywxMiArMzAyLDMxIEBAIHZv
aWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0KiBpCiAKICAgICAgICAgICAgICAgICAgICAgLy8gaWlpLiBBcHBl
bmQgVG9XZWJBc3NlbWJseVZhbHVlKHYpIHRvIGltcG9ydHMuCiAgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAoZ2xvYmFsVHlwZS5raW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgV2Fz
bTo6VHlwZUtpbmQ6OkZ1bmNyZWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzV2Vi
QXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlKSAmJiAhdmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2Vt
Ymx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwg
ImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5jdGlvbiBvciBu
dWxsIikpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6VHlwZUlk
eDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVuY3JlZjogewor
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc051bGxhYmxlID0gZ2xvYmFsVHlwZS5pc051
bGxhYmxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3
YXNtRnVuY3Rpb24gPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb24gPSBudWxscHRyOworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2YWx1
ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSAmJiAoIWlzTnVsbGFibGUgfHwg
IXZhbHVlLmlzTnVsbCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIG1zZyA9IGlzTnVsbGFibGUgPyAibXVzdCBiZSBhIHdhc20gZXhwb3J0ZWQgZnVuY3Rpb24g
b3IgbnVsbCIgOiAibXVzdCBiZSBhIHdhc20gZXhwb3J0ZWQgZnVuY3Rpb24iOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxp
bmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBv
cnRlZCBnbG9iYWwiLCBtc2cpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsVHlwZS5raW5kID09IFdhc206OlR5cGVLaW5kOjpU
eXBlSWR4ICYmICh3YXNtRnVuY3Rpb24gfHwgd2FzbVdyYXBwZXJGdW5jdGlvbikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0g
Z2xvYmFsLnR5cGUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2ln
bmF0dXJlSW5kZXggYXJnSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdh
c21GdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnSW5kZXggPSB3
YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdJbmRleCA9IHdhc21X
cmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihn
bG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9i
YWwiLCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRjaCB0aGUgcmVmZXJlbmNlIHR5cGUi
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxUeXBlLmlzTnVsbGFibGUoKSAmJiB2YWx1
ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9u
KGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFp
bE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11c3QgYmUgYSBub24tbnVsbCB2
YWx1ZSIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgp
LnNldEdsb2JhbChpbXBvcnQua2luZEluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STMy
OgpAQCAtNDkwLDYgKzUyOCw3IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJ
bXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpCiAgICAgICAgICAg
ICBzd2l0Y2ggKGdsb2JhbC50eXBlLmtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlw
ZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNy
ZWY6CisgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpUeXBlSWR4OgogICAgICAgICAg
ICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STMyOgogICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBl
S2luZDo6STY0OgogICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RjMyOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDc5NDA5MmI3NmRkNzBmNDcyNDM3Zjc2OWNh
NDdiNDY0NWZmY2I4MDEuLjRmOGRkOWUzZDIxMzQzNTAwMDAwNmUyNDE0NmIwMTk0YzlhYzg4ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTEzLDYgKzEzLDggQEAKICAg
ICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTQsICJi
M3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKICAgICAgICAgImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAg
ICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0xNywgImIzdHlw
ZSI6ICJCMzo6SW50NjQiIH0sCisgICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmlu
dDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKKyAgICAgICAgInJl
ZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAi
QjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3Iiwg
InZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAg
ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZv
aWQiIH0sCiAgICAgICAgICJ0eXBlX2lkeCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUi
OiAtMTI4LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3MDYxMjVhMjJkNDJjZGNhMjM4NjJmMjU3
ODUwNmZjZTkyZmRhMzFhLi44ZDMwNDU1OTcyYmM3ZDYxMGU4OTMyNGViMTNhYTFjMzk3NTBjODY1
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDIxLTA1LTI3ICBBc3VtdSBUYWtpa2F3YSAgPGFzdW11QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW1dBU00tRnVuY3Rpb24tUmVmZXJlbmNlc10gQWRkIHN1cHBvcnQg
Zm9yIChyZWYgbnVsbD8gJHQpIHR5cGUgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI5NgorCisgICAgICAgIEFkZHMgYWRkaXRp
b25hbCB0ZXN0cyBmb3IgdXNlcyBvZiBgKHJlZiAkdClgIGFuZCBgKHJlZiBudWxsICR0KWAKKyAg
ICAgICAgdHlwZXMsIGluY2x1ZGluZyB3aXRoIG5vbi1udWxsIGV4dGVybi9mdW5jcmVmcy4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdhc20vZnVu
Y3Rpb24tcmVmZXJlbmNlcy9yZWZfdHlwZXMuanM6IEFkZGVkLgorICAgICAgICAobW9kdWxlKToK
KyAgICAgICAgKGFzeW5jIHRlc3RSZWZUeXBlTG9jYWwpOgorICAgICAgICAoYXN5bmMgdGVzdE5v
bk51bGxSZWZUeXBlTG9jYWwpOgorICAgICAgICAoYXN5bmMgdGVzdFJlZlR5cGVJblNpZ25hdHVy
ZSk6CisgICAgICAgIChhc3luYyB0ZXN0UmVmVHlwZVBhcmFtQ2hlY2spOgorICAgICAgICAoYXN5
bmMgdGVzdFJlZkdsb2JhbENoZWNrKToKKyAgICAgICAgKGFzeW5jIHRlc3RFeHRlcm5GdW5jcmVm
Tm9uTnVsbENoZWNrKToKKyAgICAgICAgKGFzeW5jIHRlc3RFeHRlcm5yZWZDb21wYXRpYmlsaXR5
KToKKyAgICAgICAgKGFzeW5jIHRlc3ROb25OdWxsRXh0ZXJucmVmSW5jb21wYXRpYmxlKToKKyAg
ICAgICAgKGFzeW5jIHRlc3RGdW5jcmVmQ29tcGF0aWJpbGl0eSk6CisgICAgICAgIChhc3luYyB0
ZXN0Tm9uTnVsbEZ1bmNyZWZJbmNvbXBhdGlibGUpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29u
OgorCiAyMDIxLTA1LTIyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
IAogICAgICAgICBTdXBwb3J0IEVyZ29ub21pYyBCcmFuZCBDaGVja3MgcHJvcG9zYWwgKGAjeCBp
biBvYmpgKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVm
X3R5cGVzLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvcmVmX3R5cGVzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVhN2IyMGI5MGEwNWM4ZGUwNzZjNDViMmU4YjVjN2EyMjRkODRlNGQKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9yZWZfdHlw
ZXMuanMKQEAgLTAsMCArMSwyOTUgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdl
YkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBvcnQgKiBhcyBhc3Nl
cnQgZnJvbSAiLi4vYXNzZXJ0LmpzIjsKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4v
d2FidC13cmFwcGVyLmpzIjsKKworZnVuY3Rpb24gbW9kdWxlKGJ5dGVzLCB2YWxpZCA9IHRydWUp
IHsKKyAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpOworICBsZXQg
dmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0
ZXMubGVuZ3RoOyArK2kpIHsKKyAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsKKyAg
fQorICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpOworfQorCithc3luYyBm
dW5jdGlvbiB0ZXN0UmVmVHlwZUxvY2FsKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAg
KHR5cGUgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICogICAoZnVuYyAocmVz
dWx0IChyZWYgbnVsbCAwKSkgKGxvY2FsIChyZWYgbnVsbCAwKSkKKyAgICogICAgIChsb2NhbC5n
ZXQgMCkpKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAorICAgIG1vZHVsZSgK
KyAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NjBc
eDAxXHg3Zlx4MDFceDdmXHg2MFx4MDBceDAxXHg2Y1x4MDBceDAzXHgwMlx4MDFceDAxXHgwYVx4
MDlceDAxXHgwN1x4MDFceDAxXHg2Y1x4MDBceDIwXHgwMFx4MGIiCisgICAgKQorICApOworfQor
Cithc3luYyBmdW5jdGlvbiB0ZXN0Tm9uTnVsbFJlZlR5cGVMb2NhbCgpIHsKKyAgLyoKKyAgICog
KG1vZHVsZQorICAgKiAgICh0eXBlIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisg
ICAqICAgKGZ1bmMgKGxvY2FsIChyZWYgMCkpKSkKKyAgICovCisgIGFzc2VydC50aHJvd3MoCisg
ICAgKCkgPT4KKyAgICAgIG1vZHVsZSgKKyAgICAgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4MDlceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDBceDAz
XHgwMlx4MDFceDAxXHgwYVx4MDdceDAxXHgwNVx4MDFceDAxXHg2Ylx4MDBceDBiIgorICAgICAg
KSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIkZ1bmN0aW9uIGxvY2FscyBt
dXN0IGhhdmUgYSBkZWZhdWx0YWJsZSB0eXBlIgorICApOworfQorCithc3luYyBmdW5jdGlvbiB0
ZXN0UmVmVHlwZUluU2lnbmF0dXJlKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKGVs
ZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAkZikpCisgICAqICAgKHR5cGUgJHQxIChmdW5j
IChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAqICAgKHR5cGUgJHQyIChmdW5jIChwYXJh
bSkgKHJlc3VsdCAocmVmICR0MSkpKSkKKyAgICogICAoZnVuYyAkZiAodHlwZSAkdDEpIChpMzIu
Y29uc3QgMSkpCisgICAqICAgKGZ1bmMgJGcgKHR5cGUgJHQyKSAocmVmLmZ1bmMgJGYpKSkKKyAg
ICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKKyAgICBtb2R1bGUoCisgICAgICAiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYlx4MDJceDYwXHgwMVx4N2ZceDAx
XHg3Zlx4NjBceDAwXHgwMVx4NmJceDAwXHgwM1x4MDNceDAyXHgwMFx4MDFceDA5XHgwNVx4MDFc
eDAzXHgwMFx4MDFceDAwXHgwYVx4MGJceDAyXHgwNFx4MDBceDQxXHgwMVx4MGJceDA0XHgwMFx4
ZDJceDAwXHgwYlx4MDBceDBlXHgwNFx4NmVceDYxXHg2ZFx4NjVceDAxXHgwN1x4MDJceDAwXHgw
MVx4NjZceDAxXHgwMVx4NjciCisgICAgKQorICApOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0
UmVmVHlwZVBhcmFtQ2hlY2soKSB7CisgIGNvbnN0IHdhdDEgPSBgCisgICAgKG1vZHVsZQorICAg
ICAgKGZ1bmMgKGV4cG9ydCAiZiIpIChwYXJhbSBmNjQpIChyZXN1bHQgZjY0KQorICAgICAgICAo
bG9jYWwuZ2V0IDApKSkKKyAgICBgOworCisgIGNvbnN0IGluc3RhbmNlMSA9IGF3YWl0IGluc3Rh
bnRpYXRlKHdhdDEpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkdDEgKGZ1
bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICogICAodHlwZSAkdDIgKGZ1bmMgKHBh
cmFtIChyZWYgJHQxKSkgKHJlc3VsdCkpKQorICAgKiAgIChmdW5jIChleHBvcnQgImYiKSAodHlw
ZSAkdDIpKSkKKyAgICovCisgIGNvbnN0IG0yID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4
MDFceDZiXHgwMFx4MDBceDAzXHgwMlx4MDFceDAxXHgwN1x4MDVceDAxXHgwMVx4NjZceDAwXHgw
MFx4MGFceDA0XHgwMVx4MDJceDAwXHgwYiIKKyAgKTsKKyAgY29uc3QgaW5zdGFuY2UyID0gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0yKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAg
KHR5cGUgJHQxIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAqICAgKHR5cGUg
JHQyIChmdW5jIChwYXJhbSAocmVmIG51bGwgJHQxKSkgKHJlc3VsdCkpKQorICAgKiAgIChmdW5j
IChleHBvcnQgImYiKSAodHlwZSAkdDIpKSkKKyAgICovCisgIGNvbnN0IG0zID0gbW9kdWxlKAor
ICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NjBceDAx
XHg3Zlx4MDFceDdmXHg2MFx4MDFceDZjXHgwMFx4MDBceDAzXHgwMlx4MDFceDAxXHgwN1x4MDVc
eDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDA0XHgwMVx4MDJceDAwXHgwYiIKKyAgKTsKKyAgY29u
c3QgaW5zdGFuY2UzID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0zKTsKKworICBhc3NlcnQu
dGhyb3dzKAorICAgICgpID0+IGluc3RhbmNlMi5leHBvcnRzLmYobnVsbCksCisgICAgV2ViQXNz
ZW1ibHkuUnVudGltZUVycm9yLAorICAgICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2Fz
bSBmdW5jdGlvbiIKKyAgKTsKKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PiBpbnN0YW5jZTIu
ZXhwb3J0cy5mKGluc3RhbmNlMS5leHBvcnRzLmYpLAorICAgIFdlYkFzc2VtYmx5LlJ1bnRpbWVF
cnJvciwKKyAgICAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRjaCB0aGUgcmVmZXJlbmNl
IHR5cGUiCisgICk7CisgIGluc3RhbmNlMy5leHBvcnRzLmYobnVsbCk7Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIHRlc3RSZWZHbG9iYWxDaGVjaygpIHsKKyAgY29uc3Qgd2F0ID0gYAorICAgIChtb2R1
bGUKKyAgICAgIChnbG9iYWwgKGV4cG9ydCAiZyIpIGZ1bmNyZWYgKHJlZi5udWxsIGZ1bmMpKQor
ICAgICAgKGZ1bmMgKGV4cG9ydCAiZiIpIChwYXJhbSBmNjQpIChyZXN1bHQgZjY0KQorICAgICAg
ICAobG9jYWwuZ2V0IDApKSkKKyAgICBgOworCisgIGNvbnN0IHByb3ZpZGVySW5zdGFuY2UgPSBh
d2FpdCBpbnN0YW50aWF0ZSgKKyAgICB3YXQsCisgICAge30sCisgICAgeyByZWZlcmVuY2VfdHlw
ZXM6IHRydWUgfQorICApOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAoZ2xvYmFsIChl
eHBvcnQgImciKSAobXV0IChyZWYgZnVuYykpIChyZWYuZnVuYyAkZikpCisgICAqICAgKGZ1bmMg
JGYpKQorICAgKi8KKyAgY29uc3QgbTEgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4MDRceDAxXHg2MFx4MDBceDAwXHgwM1x4MDJceDAxXHgwMFx4
MDZceDA3XHgwMVx4NmJceDcwXHgwMVx4ZDJceDAwXHgwYlx4MDdceDA1XHgwMVx4MDFceDY3XHgw
M1x4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGJceDAwXHgwYlx4MDRceDZlXHg2MVx4NmRceDY1
XHgwMVx4MDRceDAxXHgwMFx4MDFceDY2IgorICApOworICBjb25zdCBpbnN0YW5jZTEgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobTEpOworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+IChp
bnN0YW5jZTEuZXhwb3J0cy5nLnZhbHVlID0gbnVsbCksCisgICAgV2ViQXNzZW1ibHkuUnVudGlt
ZUVycm9yLAorICAgICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIK
KyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKGZ1bmMpKQorICAgKiAg
IChnbG9iYWwgKGV4cG9ydCAiZyIpIChtdXQgKHJlZiAwKSkgKHJlZi5mdW5jICRmKSkKKyAgICog
ICAoZnVuYyAkZiAodHlwZSAwKSkpCisgICAqLworICBjb25zdCBtMiA9IG1vZHVsZSgKKyAgICAi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNFx4MDFceDYwXHgwMFx4MDBc
eDAzXHgwMlx4MDFceDAwXHgwNlx4MDdceDAxXHg2Ylx4MDBceDAxXHhkMlx4MDBceDBiXHgwN1x4
MDVceDAxXHgwMVx4NjdceDAzXHgwMFx4MGFceDA0XHgwMVx4MDJceDAwXHgwYlx4MDBceDBiXHgw
NFx4NmVceDYxXHg2ZFx4NjVceDAxXHgwNFx4MDFceDAwXHgwMVx4NjYiCisgICk7CisgIGNvbnN0
IGluc3RhbmNlMiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtMik7CisgIGFzc2VydC50aHJv
d3MoCisgICAgKCkgPT4gKGluc3RhbmNlMi5leHBvcnRzLmcudmFsdWUgPSBudWxsKSwKKyAgICBX
ZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsCisgICAgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRl
ZCB3YXNtIGZ1bmN0aW9uIgorICApOworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+IChpbnN0
YW5jZTIuZXhwb3J0cy5nLnZhbHVlID0gcHJvdmlkZXJJbnN0YW5jZS5leHBvcnRzLmYpLAorICAg
IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5v
dCBtYXRjaCB0aGUgcmVmZXJlbmNlIHR5cGUiCisgICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQor
ICAgKiAgIChpbXBvcnQgIm0iICJnIiAoZ2xvYmFsIChyZWYgZnVuYykpKSkKKyAgICovCisgIGNv
bnN0IG0zID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDJceDA5XHgwMVx4MDFceDZkXHgwMVx4NjdceDAzXHg2Ylx4NzBceDAwIgorICApOworICBhc3Nl
cnQudGhyb3dzKAorICAgICgpID0+CisgICAgICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTMs
IHsgbTogeyBnOiBwcm92aWRlckluc3RhbmNlLmV4cG9ydHMuZyB9IH0pLAorICAgIFdlYkFzc2Vt
Ymx5LkxpbmtFcnJvciwKKyAgICAiaW1wb3J0ZWQgZ2xvYmFsIG06ZyBtdXN0IGJlIGEgc2FtZSB0
eXBlIgorICApOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoZnVuYykpCisg
ICAqICAgKGltcG9ydCAibSIgImciIChnbG9iYWwgKHJlZiAwKSkpKQorICAgKi8KKyAgY29uc3Qg
bTQgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
MDRceDAxXHg2MFx4MDBceDAwXHgwMlx4MDlceDAxXHgwMVx4NmRceDAxXHg2N1x4MDNceDZiXHgw
MFx4MDAiCisgICk7CisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4KKyAgICAgIG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtNCwgeyBtOiB7IGc6IHByb3ZpZGVySW5zdGFuY2UuZXhwb3J0cy5n
IH0gfSksCisgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICJpbXBvcnRlZCBnbG9iYWwg
bTpnIG11c3QgYmUgYSBzYW1lIHR5cGUiCisgICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAg
KiAgIChpbXBvcnQgIm0iICJnIiAoZ2xvYmFsIChyZWYgZXh0ZXJuKSkpKQorICAgKi8KKyAgY29u
c3QgbTUgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
Mlx4MDlceDAxXHgwMVx4NmRceDAxXHg2N1x4MDNceDZiXHg2Zlx4MDAiCisgICk7CisgIGFzc2Vy
dC50aHJvd3MoCisgICAgKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG01LCB7IG06IHsg
ZzogbnVsbCB9IH0pLAorICAgIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwKKyAgICAiaW1wb3J0ZWQg
Z2xvYmFsIG06ZyBtdXN0IGJlIGEgbm9uLW51bGwgdmFsdWUiCisgICk7Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIHRlc3RFeHRlcm5GdW5jcmVmTm9uTnVsbENoZWNrKCkgeworICAvKgorICAgKiAobW9k
dWxlCisgICAqICAgKHR5cGUgJHQgKGZ1bmMgKHBhcmFtIChyZWYgZXh0ZXJuKSkgKHJlc3VsdCkp
KQorICAgKiAgIChmdW5jIChleHBvcnQgImYiKSAodHlwZSAkdCkpKQorICAgKi8KKyAgY29uc3Qg
bTEgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
MDZceDAxXHg2MFx4MDFceDZiXHg2Zlx4MDBceDAzXHgwMlx4MDFceDAwXHgwN1x4MDVceDAxXHgw
MVx4NjZceDAwXHgwMFx4MGFceDA0XHgwMVx4MDJceDAwXHgwYiIKKyAgKTsKKyAgY29uc3QgaW5z
dGFuY2UxID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0xKTsKKworICAvKgorICAgKiAobW9k
dWxlCisgICAqICAgKHR5cGUgJHQgKGZ1bmMgKHBhcmFtIChyZWYgZnVuYykpIChyZXN1bHQpKSkK
KyAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHR5cGUgJHQpKSkKKyAgICovCisgIGNvbnN0IG0y
ID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA2
XHgwMVx4NjBceDAxXHg2Ylx4NzBceDAwXHgwM1x4MDJceDAxXHgwMFx4MDdceDA1XHgwMVx4MDFc
eDY2XHgwMFx4MDBceDBhXHgwNFx4MDFceDAyXHgwMFx4MGIiCisgICk7CisgIGNvbnN0IGluc3Rh
bmNlMiA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtMik7CisKKyAgYXNzZXJ0LnRocm93cygK
KyAgICAoKSA9PiBpbnN0YW5jZTEuZXhwb3J0cy5mKG51bGwpLAorICAgIFdlYkFzc2VtYmx5LlJ1
bnRpbWVFcnJvciwKKyAgICAiTm9uLW51bGwgRXh0ZXJucmVmIGNhbm5vdCBiZSBudWxsIgorICAp
OworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+IGluc3RhbmNlMi5leHBvcnRzLmYobnVsbCks
CisgICAgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICJGdW5jcmVmIG11c3QgYmUgYW4g
ZXhwb3J0ZWQgd2FzbSBmdW5jdGlvbiIKKyAgKTsKK30KKworLy8gRW5zdXJlIHR3byB3YXlzIG9m
IHdyaXRpbmcgZXh0ZXJucmVmIGFyZSBlcXVpdmFsZW50LgorYXN5bmMgZnVuY3Rpb24gdGVzdEV4
dGVybnJlZkNvbXBhdGliaWxpdHkoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlw
ZSAkdCAoZnVuYyAocGFyYW0gZXh0ZXJucmVmKSAocmVzdWx0IChyZWYgbnVsbCBleHRlcm4pKSkp
CisgICAqICAgKGZ1bmMgJGYgKHR5cGUgJHQpIChsb2NhbC5nZXQgMCkpKQorICAgKi8KKyAgbW9k
dWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA3XHgwMVx4
NjBceDAxXHg2Zlx4MDFceDZjXHg2Zlx4MDNceDAyXHgwMVx4MDBceDBhXHgwNlx4MDFceDA0XHgw
MFx4MjBceDAwXHgwYlx4MDBceDBiXHgwNFx4NmVceDYxXHg2ZFx4NjVceDAxXHgwNFx4MDFceDAw
XHgwMVx4NjYiCisgICk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3ROb25OdWxsRXh0ZXJucmVm
SW5jb21wYXRpYmxlKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgJHQgKGZ1
bmMgKHBhcmFtIGV4dGVybnJlZikgKHJlc3VsdCAocmVmIGV4dGVybikpKSkKKyAgICogICAoZnVu
YyAkZiAodHlwZSAkdCkgKGxvY2FsLmdldCAwKSkpCisgICAqLworICBhc3NlcnQudGhyb3dzKAor
ICAgICgpID0+CisgICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceDA3XHgwMVx4NjBceDAxXHg2Zlx4MDFceDZiXHg2Zlx4MDNceDAyXHgw
MVx4MDBceDBhXHgwNlx4MDFceDA0XHgwMFx4MjBceDAwXHgwYlx4MDBceDBiXHgwNFx4NmVceDYx
XHg2ZFx4NjVceDAxXHgwNFx4MDFceDAwXHgwMVx4NjYiCisgICAgICApLAorICAgIFdlYkFzc2Vt
Ymx5LkNvbXBpbGVFcnJvciwKKyAgICAiY29udHJvbCBmbG93IHJldHVybnMgd2l0aCB1bmV4cGVj
dGVkIHR5cGUuIEV4dGVybnJlZiIKKyAgKTsKK30KKworLy8gRW5zdXJlIHR3byB3YXlzIG9mIHdy
aXRpbmcgZnVuY3JlZiBhcmUgZXF1aXZhbGVudC4KK2FzeW5jIGZ1bmN0aW9uIHRlc3RGdW5jcmVm
Q29tcGF0aWJpbGl0eSgpIHsKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlICR0IChm
dW5jIChwYXJhbSBmdW5jcmVmKSAocmVzdWx0IChyZWYgbnVsbCBmdW5jKSkpKQorICAgKiAgIChm
dW5jICRmICh0eXBlICR0KSAobG9jYWwuZ2V0IDApKSkKKyAgICovCisgIG1vZHVsZSgKKyAgICAi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwN1x4MDFceDYwXHgwMVx4NzBc
eDAxXHg2Y1x4NzBceDAzXHgwMlx4MDFceDAwXHgwYVx4MDZceDAxXHgwNFx4MDBceDIwXHgwMFx4
MGJceDAwXHgwYlx4MDRceDZlXHg2MVx4NmRceDY1XHgwMVx4MDRceDAxXHgwMFx4MDFceDY2Igor
ICApOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0Tm9uTnVsbEZ1bmNyZWZJbmNvbXBhdGlibGUo
KSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkdCAoZnVuYyAocGFyYW0gZnVu
Y3JlZikgKHJlc3VsdCAocmVmIGZ1bmMpKSkpCisgICAqICAgKGZ1bmMgJGYgKHR5cGUgJHQpIChs
b2NhbC5nZXQgMCkpKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAg
bW9kdWxlKAorICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgw
N1x4MDFceDYwXHgwMVx4NzBceDAxXHg2Ylx4NzBceDAzXHgwMlx4MDFceDAwXHgwYVx4MDZceDAx
XHgwNFx4MDBceDIwXHgwMFx4MGJceDAwXHgwYlx4MDRceDZlXHg2MVx4NmRceDY1XHgwMVx4MDRc
eDAxXHgwMFx4MDFceDY2IgorICAgICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3Is
CisgICAgImNvbnRyb2wgZmxvdyByZXR1cm5zIHdpdGggdW5leHBlY3RlZCB0eXBlLiBGdW5jcmVm
IgorICApOworfQorCithc3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZUeXBlTG9jYWwoKSk7Cithc3Nl
cnQuYXN5bmNUZXN0KHRlc3ROb25OdWxsUmVmVHlwZUxvY2FsKCkpOworYXNzZXJ0LmFzeW5jVGVz
dCh0ZXN0UmVmVHlwZUluU2lnbmF0dXJlKCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0UmVmVHlw
ZVBhcmFtQ2hlY2soKSk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZHbG9iYWxDaGVjaygpKTsK
K2Fzc2VydC5hc3luY1Rlc3QodGVzdEV4dGVybkZ1bmNyZWZOb25OdWxsQ2hlY2soKSk7Cithc3Nl
cnQuYXN5bmNUZXN0KHRlc3RFeHRlcm5yZWZDb21wYXRpYmlsaXR5KCkpOworYXNzZXJ0LmFzeW5j
VGVzdCh0ZXN0Tm9uTnVsbEV4dGVybnJlZkluY29tcGF0aWJsZSgpKTsKK2Fzc2VydC5hc3luY1Rl
c3QodGVzdEZ1bmNyZWZDb21wYXRpYmlsaXR5KCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0Tm9u
TnVsbEZ1bmNyZWZJbmNvbXBhdGlibGUoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2Fz
bS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA3OTQwOTJiNzZkZDcwZjQ3MjQz
N2Y3NjljYTQ3YjQ2NDVmZmNiODAxLi40ZjhkZDllM2QyMTM0MzUwMDAwMDZlMjQxNDZiMDE5NGM5
YWM4OGYxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMv
d2FzbS93YXNtLmpzb24KQEAgLTEzLDYgKzEzLDggQEAKICAgICAgICAgImY2NCI6ICAgICAgIHsg
InR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIg
fSwKICAgICAgICAgImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAt
MTYsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCisg
ICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAi
YjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKKyAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAg
ICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlw
ZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50
NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ0eXBl
X2lkeCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtMTI4LCAiYjN0eXBlIjogIkIz
OjpJbnQ2NCIgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431350</attachid>
            <date>2021-06-14 12:01:14 -0700</date>
            <delta_ts>2021-06-24 12:25:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226296-20210614120113.patch</filename>
            <type>text/plain</type>
            <size>56279</size>
            <attacher name="Asumu Takikawa">asumu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDgzOTU0Y2ZhMzliMTA5YTgzZWU1MGUyZWY3Mzk1NmIwZDI3ODM2Li5mNThiMDdlNjMwZmZlZWM3
MzUzMGFiMjFmYmMxNGI5MjJlNjI2ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAyMS0wNS0yNyAgQXN1bXUgVGFraWthd2EgIDxhc3VtdUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciAo
cmVmIG51bGw/ICR0KSB0eXBlIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRoZSBgcmVmYCB0eXBlIGNvbnN0cnVjdG9yIGZy
b20gdGhlIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgcHJvcG9zYWw6CisKKyAgICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZnVuY3Rpb24tcmVmZXJlbmNlcy9ibG9iL21h
c3Rlci9wcm9wb3NhbHMvZnVuY3Rpb24tcmVmZXJlbmNlcy9PdmVydmlldy5tZAorCisgICAgICAg
IEl0J3MgYWxzbyByZXF1aXJlZCBmb3IgdGhlIHR5cGUgaW1wb3J0cyBhbmQgR0MgcHJvcG9zYWxz
IGFzIHdlbGwuIFJlZiB0eXBlcyByZXByZXNlbnQKKyAgICAgICAgcmVmZXJlbmNlcyB0byBhbnkg
aGVhcCB0eXBlIChpbmNsdWRpbmcgZXhpc3RpbmcgZnVuY3JlZiBhbmQgZXh0ZXJucmVmKSB3aXRo
IGEgc3BlY2lmaWVkCisgICAgICAgIG51bGxhYmlsaXR5LgorCisgICAgICAgIFRoaXMgcmVxdWly
ZXMgYSBuZXcgaXNOdWxsYWJsZSBmbGFnIGluIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uLiBUaGlz
IGZsYWcgYWxzbyBlbmFibGVzCisgICAgICAgIG5vbi1udWxsIGV4dGVybnJlZiBhbmQgZnVuY3Jl
ZnMsIGFuZCBoZW5jZSB0aGlzIGNvbW1pdCBhbHNvIGFkZHMgdGhlIG5lY2Vzc2FyeSBjaGVja3MK
KyAgICAgICAgYXQgV2FzbS9KUyBib3VuZGFyaWVzLgorCisgICAgICAgIE5vbi1udWxsIHJlZmVy
ZW5jZSB0eXBlcyBhbHNvIGdlbmVyYWxseSBjYW5ub3QgYmUgdXNlZCBhcyBmdW5jdGlvbiBsb2Nh
bHMuCisKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpnVHlwZUlkeCk6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjp0bXBGb3JUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJH
ZW5lcmF0b3I6OmVtaXRDQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
Ojptb3ZlT3BGb3JWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6V2FzbUNhbGxpbmdDb252ZW50aW9uOjptYXJzaGFsbExvY2F0aW9uIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SlNDYWxsaW5nQ29udmVudGlvbjo6bWFyc2hhbGxMb2NhdGlvbiBjb25z
dCk6CisgICAgICAgICogd2FzbS9XYXNtRm9ybWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206Omlz
U3VidHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OmlzVmFsaWRIZWFwVHlwZUtpbmQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjppc0RlZmF1bHRhYmxlVHlwZSk6CisgICAgICAgICogd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4
dD46OnBhcnNlQW5ub3RhdGVkU2VsZWN0SW1tZWRpYXRlcyk6CisgICAgICAgIChKU0M6Oldhc206
OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpjaGVja0JyYW5jaFRhcmdldCk6CisgICAgICAgIChK
U0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAg
ICAgICAqIHdhc20vV2FzbUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6R2xvYmFsOjpzZXQpOgorICAgICAgICAq
IHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChKU0M6Oldhc206
OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUpOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKToKKyAgICAgICAgKiB3YXNtL1dh
c21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VCbG9ja1NpZ25hdHVyZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlw
ZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VSZWZUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcik6CisgICAgICAgIChKU0M6Oldh
c206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudFNlZ21lbnRWZWN0b3JPZkV4cHJlc3Npb25z
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWxUeXBlKToK
KyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpj
b21wdXRlSGFzaCk6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHk6Cisg
ICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21U
b0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHdhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6bGlua0ltcGwpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTA2
LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByZXZlcnRpbmcgcjI3ODczNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDhmNDViMWFkMWVlZDRiZTExZDhh
ZjExODQ3MDkwYjdmNDJiN2NjMGUuLmFmM2EzMDJhOTU5NzZhYzI2NmMxYTJkN2RhMWUwNmUyNzkw
ZGEyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2Vu
ZXJhdG9yLmNwcApAQCAtNDEzLDYgKzQxMyw3IEBAIHByaXZhdGU6CiAgICAgVHlwZWRUbXAgZzY0
KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkdQKSwgVHlwZXM6Okk2NCB9OyB9CiAgICAgVHlwZWRU
bXAgZ0V4dGVybnJlZigpIHsgcmV0dXJuIHsgbmV3VG1wKEIzOjpHUCksIFR5cGVzOjpFeHRlcm5y
ZWYgfTsgfQogICAgIFR5cGVkVG1wIGdGdW5jcmVmKCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkdQ
KSwgVHlwZXM6OkZ1bmNyZWYgfTsgfQorICAgIFR5cGVkVG1wIGdUeXBlSWR4KFR5cGUgdHlwZSkg
eyByZXR1cm4geyBuZXdUbXAoQjM6OkdQKSwgdHlwZSB9OyB9CiAgICAgVHlwZWRUbXAgZjMyKCkg
eyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OkYzMiB9OyB9CiAgICAgVHlwZWRUbXAg
ZjY0KCkgeyByZXR1cm4geyBuZXdUbXAoQjM6OkZQKSwgVHlwZXM6OkY2NCB9OyB9CiAKQEAgLTQy
NSw2ICs0MjYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGc2NCgpOwogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAgICAgICAgICAgcmV0dXJuIGdGdW5jcmVmKCk7
CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CisgICAgICAgICAgICByZXR1cm4gZ1R5
cGVJZHgodHlwZSk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAg
ICAgIHJldHVybiBnRXh0ZXJucmVmKCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAg
LTYwMSw2ICs2MDQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0
OgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6
CiAgICAgICAgICAgICAgICAgcmVzdWx0VHlwZSA9IEIzOjpJbnQ2NDsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAgLTY1MCw2ICs2NTQs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAg
ICAgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAgIHJldHVybiBNb3ZlOwog
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpGMzI6CiAgICAgICAgICAgICByZXR1cm4gTW92ZUZsb2F0
OwpAQCAtOTA3LDYgKzkxMiw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25z
dCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvCiAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBl
SWR4OgogICAgICAgICAgICAgYXBwZW5kKE1vdmUsIGFyZywgbV9sb2NhbHNbaV0pOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAgLTEwMDksNiArMTAx
NSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZExvY2FsKFR5cGUgdHlwZSwgdWludDMyX3Qg
Y291bnQpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgc3dpdGNoICh0eXBlLmtpbmQpIHsKICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jcmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4OgogICAgICAgICAgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6aW1tKEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkpLCBsb2NhbCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6STMyOgpAQCAtMTA0NCw2
ICsxMDUxLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3RhbnQoQmFzaWNCbG9jayog
YmxvY2ssIFR5cGUgdHlwZSwgdWludDY0X3QgdmFsdWUpIC0KICAgICBjYXNlIFR5cGVLaW5kOjpJ
NjQ6CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgYXBwZW5kKGJsb2Nr
LCBNb3ZlLCBBcmc6OmJpZ0ltbSh2YWx1ZSksIHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVHlwZUtpbmQ6OkYzMjoKQEAgLTEwODgsNyArMTA5NiwxMSBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCiBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRSZWZGdW5jKHVpbnQzMl90IGluZGV4
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgLy8gRklY
TUU6IEVtaXQgdGhpcyBpbmxpbmUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTg1MDY+LgotICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlwZXM6OkZ1bmNyZWYpOwor
ICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkp
IHsKKyAgICAgICAgU2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXggPSBtX2luZm8uc2lnbmF0
dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKKyAgICAgICAgcmVzdWx0ID0g
dG1wRm9yVHlwZShUeXBlIHsgVHlwZUtpbmQ6OlR5cGVJZHgsIE51bGxhYmxlOjpObywgc2lnbmF0
dXJlSW5kZXggfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdCA9IHRtcEZvclR5cGUoVHlw
ZXM6OkZ1bmNyZWYpOwogICAgIGVtaXRDQ2FsbCgmb3BlcmF0aW9uV2FzbVJlZkZ1bmMsIHJlc3Vs
dCwgaW5zdGFuY2VWYWx1ZSgpLCBhZGRDb25zdGFudChUeXBlczo6STMyLCBpbmRleCkpOwogCiAg
ICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgKaW5kZXggODgwZTQ0NmJkYzhiZDBlOGU5YWVlOWY5MDM2MDM5NTM0
NDhhNWY1Yi4uNmMwMjZlMDhhNDA5ZTk5NWQ0MzE4ZGZiMTgwNDYyNmQwZmFkMTc1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgK
QEAgLTEwNyw2ICsxMDcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkV4dGVybnJlZjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAg
IHJldHVybiBtYXJzaGFsbExvY2F0aW9uSW1wbChyb2xlLCBncHJBcmdzLCBncEFyZ3VtZW50Q291
bnQsIHN0YWNrT2Zmc2V0KTsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBj
YXNlIFR5cGVLaW5kOjpGNjQ6CkBAIC0xOTUsNiArMTk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6STY0OgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgogICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5
cGVJZHg6CiAgICAgICAgICAgICByZXR1cm4gbWFyc2hhbGxMb2NhdGlvbkltcGwocm9sZSwgZ3By
QXJncywgZ3BBcmd1bWVudENvdW50LCBzdGFja09mZnNldCk7CiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkYzMjoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjY0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IGY3Y2UwZmIzZmZjYzQ0NDMzOTNjYTc4NWIzMWRiNWE3
OTY5NDQzYzAuLjU5NWE1M2NiY2FiOWI5NjAxZjNlODI2ODVmNTZlODQ5ZDYzNDEzMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTc5LDYgKzc5LDkgQEAgaW5s
aW5lIGJvb2wgaXNWYWx1ZVR5cGUoVHlwZSB0eXBlKQogCiBpbmxpbmUgYm9vbCBpc1N1YnR5cGUo
VHlwZSBzdWIsIFR5cGUgcGFyZW50KQogeworICAgIGlmIChzdWIuaXNOdWxsYWJsZSgpICYmICFw
YXJlbnQuaXNOdWxsYWJsZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoc3Vi
LmlzVHlwZUlkeCgpICYmIHBhcmVudC5pc0Z1bmNyZWYoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKQEAgLTkwLDYgKzkzLDIzIEBAIGlubGluZSBib29sIGlzUmVmVHlwZShUeXBlIHR5cGUpCiAg
ICAgcmV0dXJuIHR5cGUuaXNGdW5jcmVmKCkgfHwgdHlwZS5pc0V4dGVybnJlZigpIHx8IHR5cGUu
aXNUeXBlSWR4KCk7CiB9CiAKK2lubGluZSBib29sIGlzVmFsaWRIZWFwVHlwZUtpbmQoVHlwZUtp
bmQga2luZCkKK3sKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFR5cGVLaW5kOjpGdW5j
cmVmOgorICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKworaW5saW5lIGJvb2wgaXNEZWZhdWx0YWJsZVR5cGUoVHlwZSB0eXBlKQoreworICAgIHJl
dHVybiAhaXNSZWZUeXBlKHR5cGUpIHx8IHR5cGUuaXNOdWxsYWJsZSgpOworfQorCiBlbnVtIGNs
YXNzIEV4dGVybmFsS2luZCA6IHVpbnQ4X3QgewogICAgIC8vIEZJWE1FIGF1dG8tZ2VuZXJhdGUg
dGhpcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTIzMQogICAg
IEZ1bmN0aW9uID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmgKaW5kZXggYjA1Nzc5MWZiOGYxMzY1ZWM2ZTZmZDNhOWM1ZDY2OTUyNTgwNzc0
NC4uMzcwNmU1YjBmMzg2NGMyZThiZDM3NGZmNjIwNTJkZTJmZWZmMzM4YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTI0Myw3ICsy
NDMsOCBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpIC0+IFJlc3VsdAog
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihudW1iZXJPZkxvY2Fs
cyksICJjYW4ndCBnZXQgRnVuY3Rpb24ncyBudW1iZXIgb2YgbG9jYWxzIGluIGdyb3VwICIsIGkp
OwogICAgICAgICB0b3RhbE51bWJlck9mTG9jYWxzICs9IG51bWJlck9mTG9jYWxzOwogICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKHRvdGFsTnVtYmVyT2ZMb2NhbHMgPiBtYXhGdW5jdGlvbkxv
Y2FscywgIkZ1bmN0aW9uJ3MgbnVtYmVyIG9mIGxvY2FscyBpcyB0b28gYmlnICIsIHRvdGFsTnVt
YmVyT2ZMb2NhbHMsICIgbWF4aW11bSAiLCBtYXhGdW5jdGlvbkxvY2Fscyk7Ci0gICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKHR5cGVPZkxvY2FsKSwgImNhbid0IGdl
dCBGdW5jdGlvbiBsb2NhbCdzIHR5cGUgaW4gZ3JvdXAgIiwgaSk7CisgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1faW5mbywgdHlwZU9mTG9jYWwpLCAiY2FuJ3Qg
Z2V0IEZ1bmN0aW9uIGxvY2FsJ3MgdHlwZSBpbiBncm91cCAiLCBpKTsKKyAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighaXNEZWZhdWx0YWJsZVR5cGUodHlwZU9mTG9jYWwpLCAiRnVuY3Rpb24g
bG9jYWxzIG11c3QgaGF2ZSBhIGRlZmF1bHRhYmxlIHR5cGUiKTsKIAogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFtX2xvY2Fscy50cnlSZXNlcnZlQ2FwYWNpdHkodG90YWxOdW1iZXJPZkxv
Y2FscyksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBmdW5jdGlvbidzICIsIHRv
dGFsTnVtYmVyT2ZMb2NhbHMsICIgbG9jYWxzIik7CiAgICAgICAgIGZvciAodWludDMyX3QgaSA9
IDA7IGkgPCBudW1iZXJPZkxvY2FsczsgKytpKQpAQCAtNjQ0LDcgKzY0NSw3IEBAIGF1dG8gRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlQW5ub3RhdGVkU2VsZWN0SW1tZWRpYXRlcyhBbm5v
dGF0ZWRTZWxlY3RJbW1lCiAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihzaXplT2ZBbm5vdGF0aW9u
VmVjdG9yICE9IDEsICJzZWxlY3QgaW52YWxpZCByZXN1bHQgYXJpdHkgZm9yIik7CiAKICAgICBU
eXBlIHRhcmdldFR5cGU7Ci0gICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUo
dGFyZ2V0VHlwZSksICJzZWxlY3QgY2FuJ3QgcGFyc2UgYW5ub3RhdGlvbnMiKTsKKyAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZShtX2luZm8sIHRhcmdldFR5cGUpLCAic2Vs
ZWN0IGNhbid0IHBhcnNlIGFubm90YXRpb25zIik7CiAKICAgICByZXN1bHQuc2l6ZU9mQW5ub3Rh
dGlvblZlY3RvciA9IHNpemVPZkFubm90YXRpb25WZWN0b3I7CiAgICAgcmVzdWx0LnRhcmdldFR5
cGUgPSB0YXJnZXRUeXBlOwpAQCAtNjk5LDcgKzcwMCw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8
Q29udGV4dD46OmNoZWNrQnJhbmNoVGFyZ2V0KGNvbnN0IENvbnRyb2xUeXBlJiB0YXJnZXQpIC0+
IFBhCiAKICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSB0
YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dGFyZ2V0LmJyYW5jaFRhcmdldEFyaXR5KCk7ICsraSkKLSAgICAgICAgV0FTTV9WQUxJREFUT1Jf
RkFJTF9JRighaXNTdWJ0eXBlKHRhcmdldC5icmFuY2hUYXJnZXRUeXBlKGkpLCBtX2V4cHJlc3Np
b25TdGFja1tvZmZzZXQgKyBpXS50eXBlKCkpLCAiYnJhbmNoJ3Mgc3RhY2sgdHlwZSBpcyBub3Qg
YSBibG9jaydzIHR5cGUgYnJhbmNoIHRhcmdldCB0eXBlLiBTdGFjayB2YWx1ZSBoYXMgdHlwZSIs
IG1fZXhwcmVzc2lvblN0YWNrW29mZnNldCArIGldLnR5cGUoKS5raW5kLCAiIGJ1dCBicmFuY2gg
dGFyZ2V0IGV4cGVjdHMgYSB2YWx1ZSBvZiAiLCB0YXJnZXQuYnJhbmNoVGFyZ2V0VHlwZShpKS5r
aW5kLCAiIGF0IGluZGV4ICIsIGkpOworICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFp
c1N1YnR5cGUobV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLCB0YXJnZXQuYnJh
bmNoVGFyZ2V0VHlwZShpKSksICJicmFuY2gncyBzdGFjayB0eXBlIGlzIG5vdCBhIGJsb2NrJ3Mg
dHlwZSBicmFuY2ggdGFyZ2V0IHR5cGUuIFN0YWNrIHZhbHVlIGhhcyB0eXBlICIsIG1fZXhwcmVz
c2lvblN0YWNrW29mZnNldCArIGldLnR5cGUoKS5raW5kLCAiIGJ1dCBicmFuY2ggdGFyZ2V0IGV4
cGVjdHMgYSB2YWx1ZSBvZiAiLCB0YXJnZXQuYnJhbmNoVGFyZ2V0VHlwZShpKS5raW5kLCAiIGF0
IGluZGV4ICIsIGkpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEwNzksNyArMTA4MCw3IEBA
IEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgIGNhc2UgUmVm
TnVsbDogewogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseVJlZmVyZW5jZXMoKSwgInJlZmVyZW5jZXMgYXJlIG5vdCBlbmFibGVkIik7CiAgICAgICAg
IFR5cGUgdHlwZU9mTnVsbDsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZU
eXBlKHR5cGVPZk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUi
KTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1faW5mbywgdHlw
ZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOwogICAg
ICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQodHlwZU9mTnVsbCwgbV9j
b250ZXh0LmFkZENvbnN0YW50KHR5cGVPZk51bGwsIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSkp
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xMTA5LDcgKzExMTAsNyBAQCBGT1Jf
RUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpKSB7CiAgICAgICAg
ICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5mby5zaWduYXR1cmVJbmRl
eEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOwotICAgICAgICAgICAgbV9leHByZXNzaW9u
U3RhY2suY29uc3RydWN0QW5kQXBwZW5kKFR5cGUge1R5cGVLaW5kOjpUeXBlSWR4LCBzaWduYXR1
cmVJbmRleH0sIHJlc3VsdCk7CisgICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1
Y3RBbmRBcHBlbmQoVHlwZSB7VHlwZUtpbmQ6OlR5cGVJZHgsIE51bGxhYmxlOjpObywgc2lnbmF0
dXJlSW5kZXh9LCByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtR2xvYmFsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9iYWwuY3BwCmluZGV4IDliZTFmZmU4
MjQ0YTVmNzFlZjEzZmM3ZDNkYTgxNjJlZTJiZTI5OTcuLjU5ZGE5NzdjM2NhNmZhNGNhMzU3ZTBj
ZjVkZWE0ZDU2NmJiMGM5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21HbG9iYWwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21HbG9i
YWwuY3BwCkBAIC00OCw2ICs0OCw3IEBAIEpTVmFsdWUgR2xvYmFsOjpnZXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKHB1cmlmeU5h
TihiaXR3aXNlX2Nhc3Q8ZG91YmxlPihtX3ZhbHVlLm1fcHJpbWl0aXZlKSkpOwogICAgIGNhc2Ug
VHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgIGNh
c2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLm1fZXh0ZXJucmVm
LmdldCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAt
ODYsMTUgKzg3LDM1IEBAIHZvaWQgR2xvYmFsOjpzZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBhcmd1bWVudCkKICAgICB9CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJu
cmVmOiB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb3duZXIpOworICAgICAgICBpZiAoIW1f
dHlwZS5pc051bGxhYmxlKCkgJiYgYXJndW1lbnQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJs
eVJ1bnRpbWVFcnJvcihnbG9iYWxPYmplY3QsIHZtLCAiTm9uLW51bGwgRXh0ZXJucmVmIGNhbm5v
dCBiZSBudWxsIikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAgIG1f
dmFsdWUubV9leHRlcm5yZWYuc2V0KG1fb3duZXItPnZtKCksIG1fb3duZXIsIGFyZ3VtZW50KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAg
Y2FzZSBUeXBlS2luZDo6RnVuY3JlZjogewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX293bmVy
KTsKLSAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBhcmd1bWVudCkg
JiYgIWFyZ3VtZW50LmlzTnVsbCgpKSB7CisgICAgICAgIGJvb2wgaXNOdWxsYWJsZSA9IG1fdHlw
ZS5pc051bGxhYmxlKCk7CisgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlv
biA9IG51bGxwdHI7CisgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3Jh
cHBlckZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1
bmN0aW9uKHZtLCBhcmd1bWVudCwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9uKSAm
JiAoIWlzTnVsbGFibGUgfHwgIWFyZ3VtZW50LmlzTnVsbCgpKSkgewogICAgICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5
UnVudGltZUVycm9yKGdsb2JhbE9iamVjdCwgdm0sICJGdW5jcmVmIG11c3QgYmUgYW4gZXhwb3J0
ZWQgd2FzbSBmdW5jdGlvbiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAg
ICAgICBpZiAobV90eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OlR5cGVJZHggJiYgKHdhc21GdW5jdGlv
biB8fCB3YXNtV3JhcHBlckZ1bmN0aW9uKSkgeworICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJl
SW5kZXggcGFyYW1JbmRleCA9IG1fdHlwZS5pbmRleDsKKyAgICAgICAgICAgIFdhc206OlNpZ25h
dHVyZUluZGV4IGFyZ0luZGV4OworICAgICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikKKyAgICAg
ICAgICAgICAgICBhcmdJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhcmdJbmRleCA9IHdhc21XcmFwcGVyRnVu
Y3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICBpZiAocGFyYW1JbmRleCAhPSBh
cmdJbmRleCkgeworICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihnbG9iYWxPYmplY3Qs
IHZtLCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRjaCB0aGUgcmVmZXJlbmNlIHR5cGUi
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgICAgIG1fdmFsdWUubV9leHRlcm5yZWYuc2V0KG1fb3duZXItPnZtKCksIG1fb3duZXIsIGFy
Z3VtZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKaW5kZXggMjBjNDMwMDI2YWE1NTE1YjA5
N2JmNzBjZDllZmRmMGNjYTNjNTk0NS4uYjRmNGNhNzY0NTlhNWNjOTg3ZDU2NTNhYTVhNTFhYTMx
YzEzNTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwCkBAIC01NTcsNiArNTU3LDggQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2Fs
bEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgor
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfTsKQEAgLTYxMyw2ICs2MTUsOCBAQCBhdXRv
IExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJl
JiBzaWduYXR1cmUpIC0+IExMSQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC02
NDEsNiArNjQ1LDggQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2Fs
bGVyKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBMTEkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICBjYXNlIFR5cGVL
aW5kOjpSZWY6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjk3LDYgKzcwMyw4IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNh
bGxJbmZvcm1hdGlvbkZvckNhbGxlZShjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gVmVj
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoK
KyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc0Niw2ICs3NTQsOCBAQCBhdXRv
IExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUp
IC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5cGVL
aW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5
cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCmluZGV4IDI4Njg2YjUzZDRjOWNiZjJlNDg3
YTg4NzI1NWI2MWE3ODIxOTkwODQuLmExNjNjNDYzMjc5YjkwYWFhZjkxYjA2MTY0YTY1NmMxMGJm
YzA5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKQEAgLTg0LDgg
Kzg0LDggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlVmFy
SW50NjQoaW50NjRfdCYpOwogCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
cGFyc2VCbG9ja1NpZ25hdHVyZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYsIEJsb2NrU2lnbmF0
dXJlJik7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VWYWx1ZVR5cGUoVHlwZSYp
OwotICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlUmVmVHlwZShUeXBlJik7CisgICAg
Ym9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3Jt
YXRpb24mLCBUeXBlJik7CisgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VSZWZUeXBl
KGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgVHlwZSYpOwogICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIHBhcnNlRXh0ZXJuYWxLaW5kKEV4dGVybmFsS2luZCYpOwogCiAgICAgc2l6ZV90IG1f
b2Zmc2V0ID0gMDsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBBTFdBWVNfSU5MSU5FIHR5cGVuYW1lIFBh
cnNlcjxTdWNjZXNzVHlwZT46OlBhcnRpYWxSZXN1bHQgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cAog
ewogICAgIGludDhfdCB0eXBlS2luZDsKICAgICBpZiAocGVla0ludDcodHlwZUtpbmQpICYmIGlz
VmFsaWRUeXBlS2luZCh0eXBlS2luZCkpIHsKLSAgICAgICAgVHlwZSB0eXBlID0ge3N0YXRpY19j
YXN0PFR5cGVLaW5kPih0eXBlS2luZCksIDB9OworICAgICAgICBUeXBlIHR5cGUgPSB7c3RhdGlj
X2Nhc3Q8VHlwZUtpbmQ+KHR5cGVLaW5kKSwgTnVsbGFibGU6OlllcywgMH07CiAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIShpc1ZhbHVlVHlwZSh0eXBlKSB8fCB0eXBlLmlzVm9pZCgpKSwg
InJlc3VsdCB0eXBlIG9mIGJsb2NrOiAiLCBtYWtlU3RyaW5nKHR5cGUua2luZCksICIgaXMgbm90
IGEgdmFsdWUgdHlwZSBvciBWb2lkIik7CiAgICAgICAgIHJlc3VsdCA9IG1fc2lnbmF0dXJlSW5m
b3JtYXRpb24udGh1bmtGb3IodHlwZSk7CiAgICAgICAgIG1fb2Zmc2V0Kys7CkBAIC0yOTYsMjIg
KzI5Niw1MCBAQCBBTFdBWVNfSU5MSU5FIHR5cGVuYW1lIFBhcnNlcjxTdWNjZXNzVHlwZT46OlBh
cnRpYWxSZXN1bHQgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdWNjZXNzVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
YXJzZVZhbHVlVHlwZShUeXBlJiByZXN1bHQpCitBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1
Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IFR5cGUmIHJlc3VsdCkKIHsKICAgICBpbnQ4X3Qga2luZDsKICAgICBpZiAoIXBhcnNlSW50Nyhr
aW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFR5cGUgdHlwZSA9IHtzdGF0aWNfY2Fz
dDxUeXBlS2luZD4oa2luZCksIDB9OwotICAgIGlmICghaXNWYWxpZFR5cGVLaW5kKGtpbmQpIHx8
ICFpc1ZhbHVlVHlwZSh0eXBlKSkKKyAgICBpZiAoIWlzVmFsaWRUeXBlS2luZChraW5kKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVHlwZUtpbmQgdHlwZUtpbmQgPSBzdGF0aWNfY2Fz
dDxUeXBlS2luZD4oa2luZCk7CisgICAgYm9vbCBpc051bGxhYmxlID0gdHJ1ZTsKKyAgICBTaWdu
YXR1cmVJbmRleCBzaWdJbmRleCA9IDA7CisgICAgaWYgKHR5cGVLaW5kID09IFR5cGVLaW5kOjpS
ZWYgfHwgdHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJlZk51bGwpIHsKKyAgICAgICAgaWYgKCFPcHRp
b25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKKyAgICAgICAgaXNO
dWxsYWJsZSA9IHR5cGVLaW5kID09IFR5cGVLaW5kOjpSZWZOdWxsOworCisgICAgICAgIGlmICgh
cGFyc2VWYXJJbnQzMihoZWFwVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGlmIChoZWFwVHlwZSA8IDApIHsKKyAgICAgICAgICAgIFR5cGVLaW5kIGhlYXBLaW5kID0g
c3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KGhlYXBUeXBlKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxp
ZEhlYXBUeXBlS2luZChoZWFwS2luZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgdHlwZUtpbmQgPSBoZWFwS2luZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlR5cGVJZHg7CisgICAgICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkgPj0gaW5mby51c2VkU2lnbmF0dXJlcy5zaXplKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc2lnSW5kZXggPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGluZm8udXNlZFNpZ25hdHVyZXNbaGVhcFR5cGVdLmdl
dCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFR5cGUgdHlwZSA9IHsgdHlwZUtpbmQsIHN0
YXRpY19jYXN0PE51bGxhYmxlPihpc051bGxhYmxlKSwgc2lnSW5kZXggfTsKKyAgICBpZiAoIWlz
VmFsdWVUeXBlKHR5cGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmVzdWx0ID0gdHlw
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+
Ci1BTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VSZWZUeXBlKFR5
cGUmIHJlc3VsdCkKK0FMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJz
ZVJlZlR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFR5cGUmIHJlc3VsdCkKIHsK
LSAgICBjb25zdCBib29sIHBhcnNlZCA9IHBhcnNlVmFsdWVUeXBlKHJlc3VsdCk7CisgICAgY29u
c3QgYm9vbCBwYXJzZWQgPSBwYXJzZVZhbHVlVHlwZShpbmZvLCByZXN1bHQpOwogICAgIHJldHVy
biBwYXJzZWQgJiYgaXNSZWZUeXBlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAppbmRleCA2NjJhMWFmOTUzOTQ4MjVl
ZTA5NTU2MTE2NzBjOTExNjNiZDIxN2ExLi42NWVmNjlmNmYxYzM2MTFlZDAxZjcyODY3NjFjODFl
MTFiYjJjNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2Vj
dGlvblBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VU
eXBlKCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBhcmd1bWVudENvdW50OyArK2kpIHsKICAgICAgICAgICAgIFR5cGUgYXJndW1lbnRUeXBlOwot
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUoYXJndW1lbnRU
eXBlKSwgImNhbid0IGdldCAiLCBpLCAidGggYXJndW1lbnQgVHlwZSIpOworICAgICAgICAgICAg
V0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBhcmd1bWVudFR5cGUp
LCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBhcmd1bWVudCBUeXBlIik7CiAgICAgICAgICAgICBhcmd1
bWVudHMuYXBwZW5kKGFyZ3VtZW50VHlwZSk7CiAgICAgICAgIH0KIApAQCAtNzIsNyArNzIsNyBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlVHlwZSgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmV0dXJuVHlwZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGFy
Z3VtZW50Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0
aW9uJ3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgcmV0dXJuQ291bnQ7ICsraSkgewogICAgICAgICAgICAgVHlwZSB2YWx1ZTsKLSAgICAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKHZhbHVlKSwgImNhbid0
IGdldCAiLCBpLCAidGggVHlwZSdzIHJldHVybiB2YWx1ZSIpOworICAgICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCB2YWx1ZSksICJjYW4ndCBnZXQg
IiwgaSwgInRoIFR5cGUncyByZXR1cm4gdmFsdWUiKTsKICAgICAgICAgICAgIHJldHVyblR5cGVz
LmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIH0KIApAQCAtNDgzLDcgKzQ4Myw3IEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNl
IDB4MDU6IHsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdl
YkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKICAg
ICAgICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0
aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9p
bmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CiAg
ICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVm
dHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAg
ICAgdWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUwNyw3ICs1MDcsNyBAQCBhdXRvIFNlY3Rpb25Q
YXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKGlu
aXRFeHByKSk7CiAKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKLSAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShyZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5
cGUgaW4gZWxlbSBzZWN0aW9uIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxl
bSBzZWN0aW9uIik7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlz
RnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYi
KTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKQEAgLTUyNSw3ICs1MjUsNyBA
QCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVm
ZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUgbm90IGVuYWJsZWQiKTsKIAogICAgICAgICAgICAg
VHlwZSByZWZUeXBlOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZU
eXBlKHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5
cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKICAgICAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGluIGVs
ZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOwogCiAgICAgICAgICAgICB1aW50MzJf
dCBpbmRleENvdW50OwpAQCAtNjA1LDcgKzYwNSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFy
c2VJbml0RXhwcih1aW50OF90JiBvcGNvZGUsIHVpbnQ2NF90JiBiaXRzT3JJbXBvcnROdW1iZXIs
CiAKICAgICBjYXNlIFJlZk51bGw6IHsKICAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOwotICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVs
bCB0eXBlIG11c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOworICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUg
bXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7CiAgICAgICAgIHJlc3VsdFR5cGUgPSB0eXBlT2ZO
dWxsOwogICAgICAgICBiaXRzT3JJbXBvcnROdW1iZXIgPSBKU1ZhbHVlOjplbmNvZGUoanNOdWxs
KCkpOwogICAgICAgICBicmVhazsKQEAgLTYxNiw3ICs2MTYsMTIgQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0X3QmIGJpdHNPckltcG9y
dE51bWJlciwKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIoaW5k
ZXgpLCAiY2FuJ3QgZ2V0IHJlZi5mdW5jIGluZGV4Iik7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoaW5kZXggPj0gbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpLCAicmVmLmZ1bmMgaW5kZXgi
LCBpbmRleCwgIiBleGNlZWRzIHRoZSBudW1iZXIgb2YgZnVuY3Rpb25zICIsIG1faW5mby0+ZnVu
Y3Rpb25zLnNpemUoKSk7CiAKLSAgICAgICAgcmVzdWx0VHlwZSA9IFR5cGVzOjpGdW5jcmVmOwor
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNl
cygpKSB7CisgICAgICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCA9IG1faW5m
by0+c2lnbmF0dXJlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGluZGV4KTsKKyAgICAgICAg
ICAgIHJlc3VsdFR5cGUgPSB7IFR5cGVLaW5kOjpUeXBlSWR4LCBOdWxsYWJsZTo6Tm8sIHNpZ25h
dHVyZUluZGV4IH07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVzdWx0VHlwZSA9IFR5
cGVzOjpGdW5jcmVmOworCiAgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9IGluZGV4OwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC02OTEsNyArNjk2LDcgQEAgYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZUVsZW1lbnRTZWdtZW50VmVjdG9yT2ZFeHByZXNzaW9ucyhWZWN0b3I8dWludDMyX3Q+
JiByZXMKICAgICAgICAgICAgIG1faW5mby0+YWRkRGVjbGFyZWRGdW5jdGlvbihmdW5jdGlvbklu
ZGV4KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFR5cGUgdHlwZU9mTnVsbDsKLSAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZSh0eXBlT2ZOdWxsKSwg
InJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIGZ1bmMgdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAg
ICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHR5cGVP
Zk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgZnVuYyB0eXBlIGluIGVsZW0gc2VjdGlv
biIpOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighdHlwZU9mTnVsbC5pc0Z1bmNy
ZWYoKSwgInJlZi5udWxsIGV4dGVybiBpcyBmb3JiaWRkZW4gaW4gZWxlbWVudCBzZWN0aW9uJ3Ms
ICIsIGVsZW1lbnROdW0sICJ0aCBlbGVtZW50J3MgIiwgaW5kZXgsICJ0aCBpbmRleCIpOwogICAg
ICAgICAgICAgZnVuY3Rpb25JbmRleCA9IEVsZW1lbnQ6Om51bGxGdW5jSW5kZXg7CiAgICAgICAg
IH0KQEAgLTcyNyw3ICs3MzIsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4
cHJGb3JEYXRhU2VjdGlvbihzdGQ6Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaQogYXV0byBTZWN0
aW9uUGFyc2VyOjpwYXJzZUdsb2JhbFR5cGUoR2xvYmFsSW5mb3JtYXRpb24mIGdsb2JhbCkgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIHVpbnQ4X3QgbXV0YWJpbGl0eTsKLSAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZShnbG9iYWwudHlwZSksICJjYW4ndCBnZXQgR2xvYmFs
J3MgdmFsdWUgdHlwZSIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBl
KG1faW5mbywgZ2xvYmFsLnR5cGUpLCAiY2FuJ3QgZ2V0IEdsb2JhbCdzIHZhbHVlIHR5cGUiKTsK
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVVJbnQ4KG11dGFiaWxpdHkpLCAiY2FuJ3Qg
Z2V0IEdsb2JhbCB0eXBlJ3MgbXV0YWJpbGl0eSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
bXV0YWJpbGl0eSAhPSAweDAgJiYgbXV0YWJpbGl0eSAhPSAweDEsICJpbnZhbGlkIEdsb2JhbCdz
IG11dGFiaWxpdHk6IDB4IiwgaGV4KG11dGFiaWxpdHksIDIsIExvd2VyY2FzZSkpOwogICAgIGds
b2JhbC5tdXRhYmlsaXR5ID0gc3RhdGljX2Nhc3Q8R2xvYmFsSW5mb3JtYXRpb246Ok11dGFiaWxp
dHk+KG11dGFiaWxpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVNpZ25hdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0
dXJlLmNwcAppbmRleCA2YjIwZDA4OTQ1NDIwNjc5ZTc2MjdlZTBjOGRjMTliZGM5ODY3Yjg4Li45
Y2E2OGY1ZTAwYjIwZThhMjg5MzAyYTg5ZDA5ODM3ZGIwNWUzOTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcApAQCAtNzAsMTAgKzcwLDEyIEBAIHN0
YXRpYyB1bnNpZ25lZCBjb21wdXRlSGFzaChzaXplX3QgcmV0dXJuQ291bnQsIGNvbnN0IFR5cGUq
IHJldHVyblR5cGVzLCBzaXplX3QKICAgICB1bnNpZ25lZCBhY2N1bXVsYXRvciA9IDB4YTFiY2Vk
ZDh1OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpIHsK
ICAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6
OkludEhhc2g8dWludDhfdD46Omhhc2goc3RhdGljX2Nhc3Q8dWludDhfdD4oYXJndW1lbnRUeXBl
c1tpXS5raW5kKSkpOworICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2goYWNj
dW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50OF90Pjo6aGFzaChzdGF0aWNfY2FzdDx1aW50OF90
Pihhcmd1bWVudFR5cGVzW2ldLm51bGxhYmxlKSkpOwogICAgICAgICBhY2N1bXVsYXRvciA9IFdU
Rjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2go
YXJndW1lbnRUeXBlc1tpXS5pbmRleCkpOwogICAgIH0KICAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgcmV0dXJuQ291bnQ7ICsraSkgewogICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFp
ckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50OF90Pjo6aGFzaChzdGF0aWNf
Y2FzdDx1aW50OF90PihyZXR1cm5UeXBlc1tpXS5raW5kKSkpOworICAgICAgICBhY2N1bXVsYXRv
ciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50OF90Pjo6
aGFzaChzdGF0aWNfY2FzdDx1aW50OF90PihyZXR1cm5UeXBlc1tpXS5udWxsYWJsZSkpKTsKICAg
ICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6Oklu
dEhhc2g8dW5zaWduZWQ+OjpoYXNoKHJldHVyblR5cGVzW2ldLmluZGV4KSk7CiAgICAgfQogICAg
IHJldHVybiBhY2N1bXVsYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQppbmRleCA4NTJkNzQ1N2EzOTNlYjRjOTIyODRlZTQ1
MjE3MDZmNzFlNzdjZDBmLi44NWUxOWNlNTgxNmVmZWE3NjM0NWRkNzZiM2E5ZGJmZTIyOGVlMzRm
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNI
ZWFkZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3Bz
SGVhZGVyLnB5CkBAIC0yMTIsMTUgKzIxMiwyMSBAQCBlbnVtIGNsYXNzIFR5cGVLaW5kIDogaW50
OF90IHsKIH07CiAjdW5kZWYgQ1JFQVRFX0VOVU1fVkFMVUUKIAorZW51bSBjbGFzcyBOdWxsYWJs
ZSA6IGJvb2wgeworICBObyA9IGZhbHNlLAorICBZZXMgPSB0cnVlLAorfTsKKwogdXNpbmcgU2ln
bmF0dXJlSW5kZXggPSB1aW50cHRyX3Q7CiAKIHN0cnVjdCBUeXBlIHsKICAgICBUeXBlS2luZCBr
aW5kOworICAgIE51bGxhYmxlIG51bGxhYmxlOwogICAgIFNpZ25hdHVyZUluZGV4IGluZGV4Owog
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGUmIG90aGVyKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG90aGVyLmtpbmQgPT0ga2luZCAmJiBvdGhlci5pbmRleCA9PSBpbmRleDsK
KyAgICAgICAgcmV0dXJuIG90aGVyLmtpbmQgPT0ga2luZCAmJiBvdGhlci5udWxsYWJsZSA9PSBu
dWxsYWJsZSAmJiBvdGhlci5pbmRleCA9PSBpbmRleDsKICAgICB9CiAKICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVHlwZSYgb3RoZXIpIGNvbnN0CkBAIC0yMjgsNiArMjM0LDExIEBAIHN0cnVj
dCBUeXBlIHsKICAgICAgICAgcmV0dXJuICEob3RoZXIgPT0gKnRoaXMpOwogICAgIH0KIAorICAg
IGJvb2wgaXNOdWxsYWJsZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Ym9vbD4obnVsbGFibGUpOworICAgIH0KKwogICAgICNkZWZpbmUgQ1JFQVRFX1BSRURJQ0FU
RShuYW1lLCAuLi4pIGJvb2wgaXMgIyMgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGtpbmQgPT0gVHlw
ZUtpbmQ6Om5hbWU7IH0KICAgICBGT1JfRUFDSF9XQVNNX1RZUEUoQ1JFQVRFX1BSRURJQ0FURSkK
ICAgICAjdW5kZWYgQ1JFQVRFX1BSRURJQ0FURQpAQCAtMjM1LDcgKzI0Niw3IEBAIHN0cnVjdCBU
eXBlIHsKIAogbmFtZXNwYWNlIFR5cGVzCiB7Ci0jZGVmaW5lIENSRUFURV9DT05TVEFOVChuYW1l
LCBpZCwgLi4uKSBjb25zdGV4cHIgVHlwZSBuYW1lID0gVHlwZXtUeXBlS2luZDo6bmFtZSwgMHV9
OworI2RlZmluZSBDUkVBVEVfQ09OU1RBTlQobmFtZSwgaWQsIC4uLikgY29uc3RleHByIFR5cGUg
bmFtZSA9IFR5cGV7VHlwZUtpbmQ6Om5hbWUsIE51bGxhYmxlOjpZZXMsIDB1fTsKIEZPUl9FQUNI
X1dBU01fVFlQRShDUkVBVEVfQ09OU1RBTlQpCiAjdW5kZWYgQ1JFQVRFX0NPTlNUQU5UCiB9IC8v
IG5hbWVzcGFjZSBUeXBlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2FzbVRvSlMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMu
Y3BwCmluZGV4IDQ5ZTZmNDkwMDczMWJmMTZhNjBkNGQ2OTcwYTBjMGI2YzAyMWY1MmUuLmY2N2Yy
NDJhNzg5MTNhZTVjMDJhYTU2OGU5OWFjNjVjZGJiODBmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTEwNCw2ICsxMDQsOCBAQCBFeHBlY3RlZDxN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdh
c21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgc3dpdGNoIChhcmdUeXBlLmtpbmQpIHsKICAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6VHlw
ZUlkeDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKQEAgLTE3Nyw2ICsx
NzksOCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwg
QmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgc3dpdGNoIChhcmdU
eXBlLmtpbmQpIHsKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVs
bDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgogICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVy
bnJlZjoKQEAgLTI3OCw2ICsyODIsOCBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAg
ICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKDApLmtpbmQpIHsKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKKyAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAg
ICAgICAgLy8gRm9yIHRoZSBKYXZhU2NyaXB0IGVtYmVkZGluZywgaW1wb3J0cyB3aXRoIHRoZXNl
IHR5cGVzIGluIHRoZWlyIHNpZ25hdHVyZSByZXR1cm4gYXJlIGEgV2ViQXNzZW1ibHkuTW9kdWxl
IHZhbGlkYXRpb24gZXJyb3IuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDMwMTUwMDkwYzYxNWU4NWM2
YmZlZTc3NDA4YWYwMGIwOTMxNWJkNjIuLjNhYjNjM2Q1Y2I1YzkwMDliZWMyYjZkODBkNDQ0Yzgw
YzE0M2VhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC04NSwxMSArODUsMjYgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5k
OjpUeXBlSWR4OgogICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGdW5jcmVmOiB7Ci0gICAg
ICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGFyZykgJiYgIWFyZy5p
c051bGwoKSkKKyAgICAgICAgICAgIGJvb2wgaXNOdWxsYWJsZSA9IHNpZ25hdHVyZS5hcmd1bWVu
dChhcmdJbmRleCkuaXNOdWxsYWJsZSgpOworICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlv
biogd2FzbUZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlm
ICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgYXJnLCB3YXNtRnVuY3Rpb24sIHdhc21X
cmFwcGVyRnVuY3Rpb24pICYmICghaXNOdWxsYWJsZSB8fCAhYXJnLmlzTnVsbCgpKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0
LCB2bSwgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikpKTsKKyAg
ICAgICAgICAgIGlmIChzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpLmtpbmQgPT0gV2FzbTo6
VHlwZUtpbmQ6OlR5cGVJZHggJiYgKHdhc21GdW5jdGlvbiB8fCB3YXNtV3JhcHBlckZ1bmN0aW9u
KSkgeworICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHBhcmFtSW5kZXggPSBz
aWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpLmluZGV4OworICAgICAgICAgICAgICAgIFdhc206
OlNpZ25hdHVyZUluZGV4IGFyZ0luZGV4OworICAgICAgICAgICAgICAgIGlmICh3YXNtRnVuY3Rp
b24pCisgICAgICAgICAgICAgICAgICAgIGFyZ0luZGV4ID0gd2FzbUZ1bmN0aW9uLT5zaWduYXR1
cmVJbmRleCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYXJn
SW5kZXggPSB3YXNtV3JhcHBlckZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOworICAgICAgICAg
ICAgICAgIGlmIChwYXJhbUluZGV4ICE9IGFyZ0luZGV4KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgIkFyZ3Vt
ZW50IGZ1bmN0aW9uIGRpZCBub3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSB0eXBlIikpKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2Fz
bTo6VHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAgICAgICAgIGlmICghc2lnbmF0dXJlLmFyZ3Vt
ZW50KGFyZ0luZGV4KS5pc051bGxhYmxlKCkgJiYgYXJnLmlzTnVsbCgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihnbG9iYWxPYmplY3QsIHZtLCAi
Tm9uLW51bGwgRXh0ZXJucmVmIGNhbm5vdCBiZSBudWxsIikpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJNjQ6CiAgICAgICAgICAgICBhcmcgPSBK
U1ZhbHVlOjpkZWNvZGUoYml0d2lzZV9jYXN0PHVpbnQ2NF90PihhcmcudG9CaWdJbnQ2NChnbG9i
YWxPYmplY3QpKSk7CkBAIC0xMDIsNiArMTE3LDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpWb2lkOgog
ICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGdW5jOgorICAgICAgICBjYXNlIFdhc206OlR5
cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpSZWY6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjc3LDEw
ICsyOTQsMTMgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYkFzc2Vt
Ymx5RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KCkKICAgICAgICAgICAgICAgICBqaXQu
emVyb0V4dGVuZDMyVG9Xb3JkKHNjcmF0Y2hHUFIsIHdhc21DYWxsSW5mby5wYXJhbXNbaV0uZ3By
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBXYXNtOjpU
eXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVuY3JlZjog
ewogICAgICAgICAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSBXQVNNIGV4cG9ydGVkIGZ1bmN0aW9u
LgogICAgICAgICAgICAgaml0LmxvYWQ2NChqc1BhcmFtLCBzY3JhdGNoR1BSKTsKICAgICAgICAg
ICAgIGF1dG8gaXNOdWxsID0gaml0LmJyYW5jaElmTnVsbChzY3JhdGNoR1BSKTsKKyAgICAgICAg
ICAgIGlmICghdHlwZS5pc051bGxhYmxlKCkpCisgICAgICAgICAgICAgICAgc2xvd1BhdGguYXBw
ZW5kKGlzTnVsbCk7CiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJyYW5jaElmTm90
Q2VsbChzY3JhdGNoR1BSKSk7CiAKICAgICAgICAgICAgIHN0YWNrTGltaXRHUFJJc0Nsb2JiZXJl
ZCA9IHRydWU7CkBAIC0yOTQsMTUgKzMxNCwyOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNF
bnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQog
ICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uOjppbmZvKCkpKSk7CiAKICAgICAgICAgICAgIGlzV2FzbUZ1bmN0
aW9uLmxpbmsoJmppdCk7Ci0gICAgICAgICAgICBpc051bGwubGluaygmaml0KTsKKyAgICAgICAg
ICAgIGlmICh0eXBlLmtpbmQgPT0gV2FzbTo6VHlwZUtpbmQ6OlR5cGVJZHgpIHsKKyAgICAgICAg
ICAgICAgICBqaXQubG9hZDY0KGpzUGFyYW0sIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXZWJBc3NlbWJs
eUZ1bmN0aW9uQmFzZTo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCgpKSwgc2NyYXRjaEdQUik7Cisg
ICAgICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJz
OjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHR5cGUu
aW5kZXgpKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0eXBlLmlzTnVsbGFi
bGUoKSkKKyAgICAgICAgICAgICAgICBpc051bGwubGluaygmaml0KTsKICAgICAgICAgICAgIEZB
TExUSFJPVUdIOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkV4dGVy
bnJlZjogewogICAgICAgICAgICAgaWYgKGlzU3RhY2spIHsKICAgICAgICAgICAgICAgICBqaXQu
bG9hZDY0KGpzUGFyYW0sIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgICAgIGlmICghdHlwZS5p
c051bGxhYmxlKCkpCisgICAgICAgICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChqaXQuYnJh
bmNoSWZOdWxsKHNjcmF0Y2hHUFIpKTsKICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3Jh
dGNoR1BSLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KHdhc21DYWxsSW5mby5wYXJhbXNbaV0ub2Zm
c2V0RnJvbVNQKCkpKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGppdC5s
b2FkNjQoanNQYXJhbSwgd2FzbUNhbGxJbmZvLnBhcmFtc1tpXS5ncHIoKSk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gZXh0ZXJuR1BSID0gd2FzbUNhbGxJbmZv
LnBhcmFtc1tpXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZDY0KGpzUGFyYW0sIGV4
dGVybkdQUik7CisgICAgICAgICAgICAgICAgaWYgKCF0eXBlLmlzTnVsbGFibGUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgc2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hJZk51bGwoZXh0ZXJuR1BS
KSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIFdhc206OlR5cGVLaW5kOjpGMzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaAppbmRleCA5ZDcwNzc3NGNk
YmU3YWY3MDA4YzQ1Nzg4MzU5N2ZkMTQ1MDE3MDMzLi5iYTdjYjE3NjVhMjZlMGJmM2VhMDdmZGJh
ODk5ZjcyMWFhODc0ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkluc3RhbmNlKCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLCBtX2luc3RhbmNlKTsgfQogCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpZ25hdHVyZUluZGV4KCkgeyByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLCBtX2ltcG9ydGFibGVGdW5jdGlv
bikgKyBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZlNpZ25hdHVyZUluZGV4
KCk7IH0KKwogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0
aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLCBt
X2ltcG9ydGFibGVGdW5jdGlvbikgKyBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpvZmZz
ZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKTsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKaW5kZXggNTVmOWQ4MmFkZDJhMjRlNTllOTQ0ZWYzZjY4OTk5YjYxMzY1NGE2ZC4uZGI0
MDkyYWQ2OTQ4MmY3YTA5ZDNiZTFmNzUyMzQyMmQ5ZDVhZjEzZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNw
cApAQCAtMjQ3LDE2ICsyNDcsMzUgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlu
a0ltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGkKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+bXV0YWJpbGl0eSgpICE9IFdh
c206Okdsb2JhbEluZm9ybWF0aW9uOjpJbW11dGFibGUpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgIm11
c3QgYmUgYSBzYW1lIG11dGFiaWxpdHkiKSkpOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG1vZHVsZUluZm9ybWF0aW9uLmdsb2JhbHNbaW1wb3J0LmtpbmRJbmRleF0udHlwZS5raW5kKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OlR5cGVJZHg6CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6IHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgaXNOdWxsYWJsZSA9IGdsb2JhbC50eXBlLmlzTnVsbGFibGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9
IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgICAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbiogd2FzbVdyYXBwZXJGdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSA9IGdsb2JhbFZhbHVlLT5nbG9iYWwoKS0+Z2V0KGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9u
KHZtLCB2YWx1ZSkgJiYgIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxP
YmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAi
bXVzdCBiZSBhIHdhc20gZXhwb3J0ZWQgZnVuY3Rpb24gb3IgbnVsbCIpKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlLCB3
YXNtRnVuY3Rpb24sIHdhc21XcmFwcGVyRnVuY3Rpb24pICYmICghaXNOdWxsYWJsZSB8fCAhdmFs
dWUuaXNOdWxsKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
bXNnID0gaXNOdWxsYWJsZSA/ICJtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5jdGlvbiBvciBu
dWxsIiA6ICJtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5jdGlvbiI7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vy
cm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVk
IGdsb2JhbCIsIG1zZykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChnbG9iYWwudHlwZS5raW5kID09IFdhc206OlR5cGVLaW5kOjpUeXBl
SWR4ICYmICh3YXNtRnVuY3Rpb24gfHwgd2FzbVdyYXBwZXJGdW5jdGlvbikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0gZ2xv
YmFsLnR5cGUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0
dXJlSW5kZXggYXJnSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhc21G
dW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnSW5kZXggPSB3YXNt
RnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdJbmRleCA9IHdhc21XcmFw
cGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9i
YWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwi
LCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRjaCB0aGUgcmVmZXJlbmNlIHR5cGUiKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbV9p
bnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsdWUgPSBnbG9iYWxWYWx1ZS0+Z2xvYmFsKCktPmdldChnbG9i
YWxPYmplY3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZ2xvYmFsLnR5cGUu
aXNOdWxsYWJsZSgpICYmIHZhbHVlLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxP
YmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAi
bm9uLW51bGwgZXh0ZXJucmVmIGNhbm5vdCBiZSBudWxsIikpKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGltcG9ydC5raW5kSW5kZXgs
IHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpJMzI6CkBAIC0yODMsMTIgKzMwMiwzMSBAQCB2b2lk
IFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCogaQogCiAgICAgICAgICAgICAgICAgICAgIC8vIGlpaS4gQXBwZW5k
IFRvV2ViQXNzZW1ibHlWYWx1ZSh2KSB0byBpbXBvcnRzLgogICAgICAgICAgICAgICAgICAgICBz
d2l0Y2ggKGdsb2JhbFR5cGUua2luZCkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206
OlR5cGVLaW5kOjpGdW5jcmVmOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1dlYkFz
c2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSkgJiYgIXZhbHVlLmlzTnVsbCgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3NlbWJs
eUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQsICJp
bXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIHdhc20gZXhwb3J0ZWQgZnVuY3Rpb24gb3IgbnVs
bCIpKSk7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OlR5cGVJZHg6
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNOdWxsYWJsZSA9IGdsb2JhbFR5cGUuaXNOdWxs
YWJsZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2Fz
bUZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFdlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbih2bSwgdmFsdWUs
IHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikgJiYgKCFpc051bGxhYmxlIHx8ICF2
YWx1ZS5pc051bGwoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBtc2cgPSBpc051bGxhYmxlID8gIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIG9y
IG51bGwiIDogIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1bmN0aW9uIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5r
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0
ZWQgZ2xvYmFsIiwgbXNnKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGdsb2JhbFR5cGUua2luZCA9PSBXYXNtOjpUeXBlS2luZDo6VHlw
ZUlkeCAmJiAod2FzbUZ1bmN0aW9uIHx8IHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggcGFyYW1JbmRleCA9IGds
b2JhbC50eXBlLmluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25h
dHVyZUluZGV4IGFyZ0luZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3YXNt
RnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ0luZGV4ID0gd2Fz
bUZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnSW5kZXggPSB3YXNtV3Jh
cHBlckZ1bmN0aW9uLT5zaWduYXR1cmVJbmRleCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwYXJhbUluZGV4ICE9IGFyZ0luZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xv
YmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFs
IiwgIkFyZ3VtZW50IGZ1bmN0aW9uIGRpZCBub3QgbWF0Y2ggdGhlIHJlZmVyZW5jZSB0eXBlIikp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0R2xvYmFsKGltcG9ydC5raW5kSW5kZXgsIHZhbHVlKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghZ2xvYmFsVHlwZS5pc051bGxhYmxlKCkgJiYgdmFsdWUu
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihj
cmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxN
ZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgbm9uLW51bGwgdmFs
dWUiKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5z
ZXRHbG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoK
QEAgLTQ5MCw2ICs1MjgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1w
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogaQogICAgICAgICAgICAg
c3dpdGNoIChnbG9iYWwudHlwZS5raW5kKSB7CiAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVL
aW5kOjpFeHRlcm5yZWY6CiAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpGdW5jcmVm
OgorICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAg
IGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtp
bmQ6Okk2NDoKICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkYzMjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCA3OTQwOTJiNzZkZDcwZjQ3MjQzN2Y3NjljYTQ3
YjQ2NDVmZmNiODAxLi40ZjhkZDllM2QyMTM0MzUwMDAwMDZlMjQxNDZiMDE5NGM5YWM4OGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCkBAIC0xMyw2ICsxMyw4IEBACiAgICAg
ICAgICJmNjQiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgIC00LCAiYjN0
eXBlIjogIkIzOjpEb3VibGUiIH0sCiAgICAgICAgICJmdW5jcmVmIjogICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgLTE2LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKICAgICAgICAg
ImV4dGVybnJlZiI6IHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTcsICJiM3R5cGUi
OiAiQjM6OkludDY0IiB9LAorICAgICAgICAicmVmX251bGwiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3
IiwgInZhbHVlIjogIC0yMCwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCisgICAgICAgICJyZWYi
OiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIxLCAiYjN0eXBlIjogIkIz
OjpJbnQ2NCIgfSwKICAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjogICAg
ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAiYjN0eXBlIjogIkIzOjpWb2lk
IiB9LAogICAgICAgICAidHlwZV9pZHgiOiAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjog
LTEyOCwgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzI1ZTgyNzU0MDM3YTY5ZGI1ZDFiZWVjNDFh
YmM3MzkxNDgxMjRiZS4uZWEwYTI1ODA2MWI1N2ZmMWE0NzFlODQ4MGRmYTE3ODMxYjk5NzcwYyAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAyMS0wNS0yNyAgQXN1bXUgVGFraWthd2EgIDxhc3VtdUBpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZv
ciAocmVmIG51bGw/ICR0KSB0eXBlIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyOTYKKworICAgICAgICBBZGRzIGFkZGl0aW9u
YWwgdGVzdHMgZm9yIHVzZXMgb2YgYChyZWYgJHQpYCBhbmQgYChyZWYgbnVsbCAkdClgCisgICAg
ICAgIHR5cGVzLCBpbmNsdWRpbmcgd2l0aCBub24tbnVsbCBleHRlcm4vZnVuY3JlZnMuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2Z1bmN0
aW9uLXJlZmVyZW5jZXMvcmVmX3R5cGVzLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6Cisg
ICAgICAgIChhc3luYyB0ZXN0UmVmVHlwZUxvY2FsKToKKyAgICAgICAgKGFzeW5jIHRlc3ROb25O
dWxsUmVmVHlwZUxvY2FsKToKKyAgICAgICAgKGFzeW5jIHRlc3RSZWZUeXBlSW5TaWduYXR1cmUp
OgorICAgICAgICAoYXN5bmMgdGVzdFJlZlR5cGVQYXJhbUNoZWNrKToKKyAgICAgICAgKGFzeW5j
IHRlc3RSZWZHbG9iYWxDaGVjayk6CisgICAgICAgIChhc3luYyB0ZXN0RXh0ZXJuRnVuY3JlZk5v
bk51bGxDaGVjayk6CisgICAgICAgIChhc3luYyB0ZXN0RXh0ZXJucmVmQ29tcGF0aWJpbGl0eSk6
CisgICAgICAgIChhc3luYyB0ZXN0Tm9uTnVsbEV4dGVybnJlZkluY29tcGF0aWJsZSk6CisgICAg
ICAgIChhc3luYyB0ZXN0RnVuY3JlZkNvbXBhdGliaWxpdHkpOgorICAgICAgICAoYXN5bmMgdGVz
dE5vbk51bGxGdW5jcmVmSW5jb21wYXRpYmxlKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoK
KwogMjAyMS0wNi0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NTc2CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9yZWZfdHlwZXMuanMgYi9KU1Rl
c3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9yZWZfdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Jh
ZjljMmM5OTFjYWIxMTU0MTc2NTY4YTA5MWNlODQxOWZlM2JlOQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzL3JlZl90eXBlcy5qcwpAQCAtMCwwICsx
LDMxNiBAQAorLy9AIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBlZEZ1
bmN0aW9uUmVmZXJlbmNlcz10cnVlIikKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3Nl
cnQuanMiOworaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMi
OworCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVy
ID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4
QXJyYXkoYnVmZmVyKTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkg
eworICAgIHZpZXdbaV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcg
V2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3RSZWZU
eXBlTG9jYWwoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoZnVuYyAocGFy
YW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAgKiAgIChmdW5jIChyZXN1bHQgKHJlZiBudWxsIDAp
KSAobG9jYWwgKHJlZiBudWxsIDApKQorICAgKiAgICAgKGxvY2FsLmdldCAwKSkpCisgICAqLwor
ICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoCisgICAgbW9kdWxlKAorICAgICAgIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg2MFx4MDFceDdmXHgwMVx4N2Zc
eDYwXHgwMFx4MDFceDZjXHgwMFx4MDNceDAyXHgwMVx4MDFceDBhXHgwOVx4MDFceDA3XHgwMVx4
MDFceDZjXHgwMFx4MjBceDAwXHgwYiIKKyAgICApCisgICk7Cit9CisKK2FzeW5jIGZ1bmN0aW9u
IHRlc3ROb25OdWxsUmVmVHlwZUxvY2FsKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAg
KHR5cGUgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICogICAoZnVuYyAobG9j
YWwgKHJlZiAwKSkpKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAg
bW9kdWxlKAorICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgw
OVx4MDJceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDBh
XHgwN1x4MDFceDA1XHgwMVx4MDFceDZiXHgwMFx4MGIiCisgICAgICApLAorICAgIFdlYkFzc2Vt
Ymx5LkNvbXBpbGVFcnJvciwKKyAgICAiRnVuY3Rpb24gbG9jYWxzIG11c3QgaGF2ZSBhIGRlZmF1
bHRhYmxlIHR5cGUiCisgICk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3RSZWZUeXBlSW5TaWdu
YXR1cmUoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAoZWxlbSBkZWNsYXJlIGZ1bmNy
ZWYgKHJlZi5mdW5jICRmKSkKKyAgICogICAodHlwZSAkdDEgKGZ1bmMgKHBhcmFtIGkzMikgKHJl
c3VsdCBpMzIpKSkKKyAgICogICAodHlwZSAkdDIgKGZ1bmMgKHBhcmFtKSAocmVzdWx0IChyZWYg
JHQxKSkpKQorICAgKiAgIChmdW5jICRmICh0eXBlICR0MSkgKGkzMi5jb25zdCAxKSkKKyAgICog
ICAoZnVuYyAkZyAodHlwZSAkdDIpIChyZWYuZnVuYyAkZikpKQorICAgKi8KKyAgbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKAorICAgIG1vZHVsZSgKKyAgICAgICJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4MDBceDAx
XHg2Ylx4MDBceDAzXHgwM1x4MDJceDAwXHgwMVx4MDlceDA1XHgwMVx4MDNceDAwXHgwMVx4MDBc
eDBhXHgwYlx4MDJceDA0XHgwMFx4NDFceDAxXHgwYlx4MDRceDAwXHhkMlx4MDBceDBiXHgwMFx4
MGVceDA0XHg2ZVx4NjFceDZkXHg2NVx4MDFceDA3XHgwMlx4MDBceDAxXHg2Nlx4MDFceDAxXHg2
NyIKKyAgICApCisgICk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3RSZWZUeXBlUGFyYW1DaGVj
aygpIHsKKyAgY29uc3Qgd2F0MSA9IGAKKyAgICAobW9kdWxlCisgICAgICAoZnVuYyAoZXhwb3J0
ICJmIikgKHBhcmFtIGY2NCkgKHJlc3VsdCBmNjQpCisgICAgICAgIChsb2NhbC5nZXQgMCkpKQor
ICAgIGA7CisKKyAgY29uc3QgaW5zdGFuY2UxID0gYXdhaXQgaW5zdGFudGlhdGUod2F0MSk7CisK
KyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlICR0MSAoZnVuYyAocGFyYW0gaTMyKSAo
cmVzdWx0IGkzMikpKQorICAgKiAgICh0eXBlICR0MiAoZnVuYyAocGFyYW0gKHJlZiAkdDEpKSAo
cmVzdWx0KSkpCisgICAqICAgKGZ1bmMgKGV4cG9ydCAiZiIpICh0eXBlICR0MikpKQorICAgKi8K
KyAgY29uc3QgbTIgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4MGJceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMVx4NmJceDAwXHgwMFx4
MDNceDAyXHgwMVx4MDFceDA3XHgwNVx4MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4MDRceDAxXHgw
Mlx4MDBceDBiIgorICApOworICBjb25zdCBpbnN0YW5jZTIgPSBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobTIpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkdDEgKGZ1bmMg
KHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICogICAodHlwZSAkdDIgKGZ1bmMgKHBhcmFt
IChyZWYgbnVsbCAkdDEpKSAocmVzdWx0KSkpCisgICAqICAgKGZ1bmMgKGV4cG9ydCAiZiIpICh0
eXBlICR0MikpKQorICAgKi8KKyAgY29uc3QgbTMgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYw
XHgwMVx4NmNceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDA3XHgwNVx4MDFceDAxXHg2Nlx4MDBc
eDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiIgorICApOworICBjb25zdCBpbnN0YW5jZTMgPSBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTMpOworCisgIGZvciAobGV0IGk9MDsgaTwxMDAwOyAr
K2kpIHsKKyAgICAvLyBUcmlnZ2VyIHRoZSBpYyBwYXRoCisgICAgYXNzZXJ0LnRocm93cygKKyAg
ICAgICgpID0+IGluc3RhbmNlMi5leHBvcnRzLmYobnVsbCksCisgICAgICBXZWJBc3NlbWJseS5S
dW50aW1lRXJyb3IsCisgICAgICAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVu
Y3Rpb24iCisgICAgKTsKKyAgICBhc3NlcnQudGhyb3dzKAorICAgICAgKCkgPT4gaW5zdGFuY2Uy
LmV4cG9ydHMuZihpbnN0YW5jZTEuZXhwb3J0cy5mKSwKKyAgICAgIFdlYkFzc2VtYmx5LlJ1bnRp
bWVFcnJvciwKKyAgICAgICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZl
cmVuY2UgdHlwZSIKKyAgICApOworICAgIGluc3RhbmNlMy5leHBvcnRzLmYobnVsbCk7CisgIH0K
K30KKworYXN5bmMgZnVuY3Rpb24gdGVzdFJlZkdsb2JhbENoZWNrKCkgeworICBjb25zdCB3YXQg
PSBgCisgICAgKG1vZHVsZQorICAgICAgKGdsb2JhbCAoZXhwb3J0ICJnIikgZnVuY3JlZiAocmVm
Lm51bGwgZnVuYykpCisgICAgICAoZnVuYyAoZXhwb3J0ICJmIikgKHBhcmFtIGY2NCkgKHJlc3Vs
dCBmNjQpCisgICAgICAgIChsb2NhbC5nZXQgMCkpKQorICAgIGA7CisKKyAgY29uc3QgcHJvdmlk
ZXJJbnN0YW5jZSA9IGF3YWl0IGluc3RhbnRpYXRlKAorICAgIHdhdCwKKyAgICB7fSwKKyAgICB7
IHJlZmVyZW5jZV90eXBlczogdHJ1ZSB9CisgICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAg
KiAgIChnbG9iYWwgKGV4cG9ydCAiZyIpIChtdXQgKHJlZiBmdW5jKSkgKHJlZi5mdW5jICRmKSkK
KyAgICogICAoZnVuYyAkZikpCisgICAqLworICBjb25zdCBtMSA9IG1vZHVsZSgKKyAgICAiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNFx4MDFceDYwXHgwMFx4MDBceDAz
XHgwMlx4MDFceDAwXHgwNlx4MDdceDAxXHg2Ylx4NzBceDAxXHhkMlx4MDBceDBiXHgwN1x4MDVc
eDAxXHgwMVx4NjdceDAzXHgwMFx4MGFceDA0XHgwMVx4MDJceDAwXHgwYlx4MDBceDBiXHgwNFx4
NmVceDYxXHg2ZFx4NjVceDAxXHgwNFx4MDFceDAwXHgwMVx4NjYiCisgICk7CisgIGNvbnN0IGlu
c3RhbmNlMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtMSk7CisgIGFzc2VydC50aHJvd3Mo
CisgICAgKCkgPT4gKGluc3RhbmNlMS5leHBvcnRzLmcudmFsdWUgPSBudWxsKSwKKyAgICBXZWJB
c3NlbWJseS5SdW50aW1lRXJyb3IsCisgICAgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3
YXNtIGZ1bmN0aW9uIgorICApOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAo
ZnVuYykpCisgICAqICAgKGdsb2JhbCAoZXhwb3J0ICJnIikgKG11dCAocmVmIDApKSAocmVmLmZ1
bmMgJGYpKQorICAgKiAgIChmdW5jICRmICh0eXBlIDApKSkKKyAgICovCisgIGNvbnN0IG0yID0g
bW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA0XHgw
MVx4NjBceDAwXHgwMFx4MDNceDAyXHgwMVx4MDBceDA2XHgwN1x4MDFceDZiXHgwMFx4MDFceGQy
XHgwMFx4MGJceDA3XHgwNVx4MDFceDAxXHg2N1x4MDNceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBc
eDBiXHgwMFx4MGJceDA0XHg2ZVx4NjFceDZkXHg2NVx4MDFceDA0XHgwMVx4MDBceDAxXHg2NiIK
KyAgKTsKKyAgY29uc3QgaW5zdGFuY2UyID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0yKTsK
KyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PiAoaW5zdGFuY2UyLmV4cG9ydHMuZy52YWx1ZSA9
IG51bGwpLAorICAgIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAiRnVuY3JlZiBtdXN0
IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24iCisgICk7CisgIGFzc2VydC50aHJvd3MoCisg
ICAgKCkgPT4gKGluc3RhbmNlMi5leHBvcnRzLmcudmFsdWUgPSBwcm92aWRlckluc3RhbmNlLmV4
cG9ydHMuZiksCisgICAgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICJBcmd1bWVudCBm
dW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZlcmVuY2UgdHlwZSIKKyAgKTsKKworICAvKgor
ICAgKiAobW9kdWxlCisgICAqICAgKGltcG9ydCAibSIgImciIChnbG9iYWwgKHJlZiBmdW5jKSkp
KQorICAgKi8KKyAgY29uc3QgbTMgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMlx4MDlceDAxXHgwMVx4NmRceDAxXHg2N1x4MDNceDZiXHg3MFx4MDAi
CisgICk7CisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4KKyAgICAgIG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtMywgeyBtOiB7IGc6IHByb3ZpZGVySW5zdGFuY2UuZXhwb3J0cy5nIH0gfSks
CisgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICJpbXBvcnRlZCBnbG9iYWwgbTpnIG11
c3QgYmUgYSBzYW1lIHR5cGUiCisgICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0
eXBlIChmdW5jKSkKKyAgICogICAoaW1wb3J0ICJtIiAiZyIgKGdsb2JhbCAocmVmIDApKSkpCisg
ICAqLworICBjb25zdCBtNCA9IG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHgwNFx4MDFceDYwXHgwMFx4MDBceDAyXHgwOVx4MDFceDAxXHg2ZFx4MDFc
eDY3XHgwM1x4NmJceDAwXHgwMCIKKyAgKTsKKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9Pgor
ICAgICAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG00LCB7IG06IHsgZzogcHJvdmlkZXJJbnN0
YW5jZS5leHBvcnRzLmcgfSB9KSwKKyAgICBXZWJBc3NlbWJseS5MaW5rRXJyb3IsCisgICAgImlt
cG9ydGVkIGdsb2JhbCBtOmcgbXVzdCBiZSBhIHNhbWUgdHlwZSIKKyAgKTsKKworICAvKgorICAg
KiAobW9kdWxlCisgICAqICAgKGltcG9ydCAibSIgImciIChnbG9iYWwgKHJlZiBleHRlcm4pKSkp
CisgICAqLworICBjb25zdCBtNSA9IG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAyXHgwOVx4MDFceDAxXHg2ZFx4MDFceDY3XHgwM1x4NmJceDZmXHgwMCIK
KyAgKTsKKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFu
Y2UobTUsIHsgbTogeyBnOiBudWxsIH0gfSksCisgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAor
ICAgICJpbXBvcnRlZCBnbG9iYWwgbTpnIG11c3QgYmUgYSBub24tbnVsbCB2YWx1ZSIKKyAgKTsK
KworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKGdsb2JhbCAkZyAoaW1wb3J0ICJtIiAiZyIp
IChtdXQgKHJlZiBleHRlcm4pKSkKKyAgICogICAoZnVuYyAoZ2xvYmFsLnNldCAkZyAocmVmLm51
bGwgZXh0ZXJuKSkpKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PiB7CisgICAg
ICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eDA0XHgwMVx4NjBceDAwXHgwMFx4MDJceDA5XHgwMVx4MDFceDZkXHgwMVx4NjdceDAzXHg2Ylx4
NmZceDAxXHgwM1x4MDJceDAxXHgwMFx4MGFceDA4XHgwMVx4MDZceDAwXHhkMFx4NmZceDI0XHgw
MFx4MGIiCisgICAgICApCisgICAgfSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisg
ICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHZhbGlkYXRlOiBzZXRfZ2xvYmFsIDAgd2l0
aCB0eXBlIEV4dGVybnJlZiIKKyAgKTsKK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVybkZ1
bmNyZWZOb25OdWxsQ2hlY2soKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAk
dCAoZnVuYyAocGFyYW0gKHJlZiBleHRlcm4pKSAocmVzdWx0KSkpCisgICAqICAgKGZ1bmMgKGV4
cG9ydCAiZiIpICh0eXBlICR0KSkpCisgICAqLworICBjb25zdCBtMSA9IG1vZHVsZSgKKyAgICAi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNlx4MDFceDYwXHgwMVx4NmJc
eDZmXHgwMFx4MDNceDAyXHgwMVx4MDBceDA3XHgwNVx4MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4
MDRceDAxXHgwMlx4MDBceDBiIgorICApOworICBjb25zdCBpbnN0YW5jZTEgPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobTEpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAk
dCAoZnVuYyAocGFyYW0gKHJlZiBmdW5jKSkgKHJlc3VsdCkpKQorICAgKiAgIChmdW5jIChleHBv
cnQgImYiKSAodHlwZSAkdCkpKQorICAgKi8KKyAgY29uc3QgbTIgPSBtb2R1bGUoCisgICAgIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MDZceDAxXHg2MFx4MDFceDZiXHg3
MFx4MDBceDAzXHgwMlx4MDFceDAwXHgwN1x4MDVceDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDA0
XHgwMVx4MDJceDAwXHgwYiIKKyAgKTsKKyAgY29uc3QgaW5zdGFuY2UyID0gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG0yKTsKKworICBmb3IgKGxldCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAg
Ly8gVHJpZ2dlciB0aGUgaWMgcGF0aAorICAgIGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9PiBp
bnN0YW5jZTEuZXhwb3J0cy5mKG51bGwpLAorICAgICAgV2ViQXNzZW1ibHkuUnVudGltZUVycm9y
LAorICAgICAgIk5vbi1udWxsIEV4dGVybnJlZiBjYW5ub3QgYmUgbnVsbCIKKyAgICApOworICAg
IGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9PiBpbnN0YW5jZTIuZXhwb3J0cy5mKG51bGwpLAor
ICAgICAgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICAgIkZ1bmNyZWYgbXVzdCBiZSBh
biBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIgorICAgICk7CisgIH0KK30KKworLy8gRW5zdXJlIHR3
byB3YXlzIG9mIHdyaXRpbmcgZXh0ZXJucmVmIGFyZSBlcXVpdmFsZW50LgorYXN5bmMgZnVuY3Rp
b24gdGVzdEV4dGVybnJlZkNvbXBhdGliaWxpdHkoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAg
ICogICAodHlwZSAkdCAoZnVuYyAocGFyYW0gZXh0ZXJucmVmKSAocmVzdWx0IChyZWYgbnVsbCBl
eHRlcm4pKSkpCisgICAqICAgKGZ1bmMgJGYgKHR5cGUgJHQpIChsb2NhbC5nZXQgMCkpKQorICAg
Ki8KKyAgbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eDA3XHgwMVx4NjBceDAxXHg2Zlx4MDFceDZjXHg2Zlx4MDNceDAyXHgwMVx4MDBceDBhXHgwNlx4
MDFceDA0XHgwMFx4MjBceDAwXHgwYlx4MDBceDBiXHgwNFx4NmVceDYxXHg2ZFx4NjVceDAxXHgw
NFx4MDFceDAwXHgwMVx4NjYiCisgICk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3ROb25OdWxs
RXh0ZXJucmVmSW5jb21wYXRpYmxlKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5
cGUgJHQgKGZ1bmMgKHBhcmFtIGV4dGVybnJlZikgKHJlc3VsdCAocmVmIGV4dGVybikpKSkKKyAg
ICogICAoZnVuYyAkZiAodHlwZSAkdCkgKGxvY2FsLmdldCAwKSkpCisgICAqLworICBhc3NlcnQu
dGhyb3dzKAorICAgICgpID0+CisgICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA3XHgwMVx4NjBceDAxXHg2Zlx4MDFceDZiXHg2Zlx4
MDNceDAyXHgwMVx4MDBceDBhXHgwNlx4MDFceDA0XHgwMFx4MjBceDAwXHgwYlx4MDBceDBiXHgw
NFx4NmVceDYxXHg2ZFx4NjVceDAxXHgwNFx4MDFceDAwXHgwMVx4NjYiCisgICAgICApLAorICAg
IFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAiY29udHJvbCBmbG93IHJldHVybnMgd2l0
aCB1bmV4cGVjdGVkIHR5cGUuIEV4dGVybnJlZiIKKyAgKTsKK30KKworLy8gRW5zdXJlIHR3byB3
YXlzIG9mIHdyaXRpbmcgZnVuY3JlZiBhcmUgZXF1aXZhbGVudC4KK2FzeW5jIGZ1bmN0aW9uIHRl
c3RGdW5jcmVmQ29tcGF0aWJpbGl0eSgpIHsKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0
eXBlICR0IChmdW5jIChwYXJhbSBmdW5jcmVmKSAocmVzdWx0IChyZWYgbnVsbCBmdW5jKSkpKQor
ICAgKiAgIChmdW5jICRmICh0eXBlICR0KSAobG9jYWwuZ2V0IDApKSkKKyAgICovCisgIG1vZHVs
ZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwN1x4MDFceDYw
XHgwMVx4NzBceDAxXHg2Y1x4NzBceDAzXHgwMlx4MDFceDAwXHgwYVx4MDZceDAxXHgwNFx4MDBc
eDIwXHgwMFx4MGJceDAwXHgwYlx4MDRceDZlXHg2MVx4NmRceDY1XHgwMVx4MDRceDAxXHgwMFx4
MDFceDY2IgorICApOworfQorCithc3luYyBmdW5jdGlvbiB0ZXN0Tm9uTnVsbEZ1bmNyZWZJbmNv
bXBhdGlibGUoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkdCAoZnVuYyAo
cGFyYW0gZnVuY3JlZikgKHJlc3VsdCAocmVmIGZ1bmMpKSkpCisgICAqICAgKGZ1bmMgJGYgKHR5
cGUgJHQpIChsb2NhbC5nZXQgMCkpKQorICAgKi8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9
PgorICAgICAgbW9kdWxlKAorICAgICAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHgwN1x4MDFceDYwXHgwMVx4NzBceDAxXHg2Ylx4NzBceDAzXHgwMlx4MDFceDAwXHgw
YVx4MDZceDAxXHgwNFx4MDBceDIwXHgwMFx4MGJceDAwXHgwYlx4MDRceDZlXHg2MVx4NmRceDY1
XHgwMVx4MDRceDAxXHgwMFx4MDFceDY2IgorICAgICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21w
aWxlRXJyb3IsCisgICAgImNvbnRyb2wgZmxvdyByZXR1cm5zIHdpdGggdW5leHBlY3RlZCB0eXBl
LiBGdW5jcmVmIgorICApOworfQorCithc3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZUeXBlTG9jYWwo
KSk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3ROb25OdWxsUmVmVHlwZUxvY2FsKCkpOworYXNzZXJ0
LmFzeW5jVGVzdCh0ZXN0UmVmVHlwZUluU2lnbmF0dXJlKCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0
ZXN0UmVmVHlwZVBhcmFtQ2hlY2soKSk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZHbG9iYWxD
aGVjaygpKTsKK2Fzc2VydC5hc3luY1Rlc3QodGVzdEV4dGVybkZ1bmNyZWZOb25OdWxsQ2hlY2so
KSk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RFeHRlcm5yZWZDb21wYXRpYmlsaXR5KCkpOworYXNz
ZXJ0LmFzeW5jVGVzdCh0ZXN0Tm9uTnVsbEV4dGVybnJlZkluY29tcGF0aWJsZSgpKTsKK2Fzc2Vy
dC5hc3luY1Rlc3QodGVzdEZ1bmNyZWZDb21wYXRpYmlsaXR5KCkpOworYXNzZXJ0LmFzeW5jVGVz
dCh0ZXN0Tm9uTnVsbEZ1bmNyZWZJbmNvbXBhdGlibGUoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA3OTQwOTJiNzZk
ZDcwZjQ3MjQzN2Y3NjljYTQ3YjQ2NDVmZmNiODAxLi40ZjhkZDllM2QyMTM0MzUwMDAwMDZlMjQx
NDZiMDE5NGM5YWM4OGYxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBi
L0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTEzLDYgKzEzLDggQEAKICAgICAgICAgImY2NCI6
ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6
OkRvdWJsZSIgfSwKICAgICAgICAgImZ1bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2
YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVm
IjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50
NjQiIH0sCisgICAgICAgICJyZWZfbnVsbCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUi
OiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfSwKKyAgICAgICAgInJlZiI6ICAgICAgIHsg
InR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9
LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0z
MiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUi
OiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAg
ICAgICJ0eXBlX2lkeCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAtMTI4LCAiYjN0
eXBlIjogIkIzOjpJbnQ2NCIgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432202</attachid>
            <date>2021-06-24 12:25:03 -0700</date>
            <delta_ts>2021-06-24 19:23:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226296-20210624122503.patch</filename>
            <type>text/plain</type>
            <size>56480</size>
            <attacher name="Asumu Takikawa">asumu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZDdhMGU4ZGU2YjdkODRkODJjNmViMDZlMWQ3ZTA4MWJhOGZjMTE4Li44MDVhOGI3OWE4ODUwODVk
NzIwOTU2OGZiNWY5NjRhN2Y5Yjg5NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAyMS0wNi0xNCAgQXN1bXUgVGFraWthd2EgIDxhc3VtdUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBzdXBwb3J0IGZvciAo
cmVmIG51bGw/ICR0KSB0eXBlIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYyOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIHRoZSBgcmVmYCB0eXBlIGNvbnN0cnVjdG9yIGZy
b20gdGhlIHR5cGVkIGZ1bmN0aW9uIHJlZmVyZW5jZXMgcHJvcG9zYWw6CisKKyAgICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZnVuY3Rpb24tcmVmZXJlbmNlcy9ibG9iL21h
c3Rlci9wcm9wb3NhbHMvZnVuY3Rpb24tcmVmZXJlbmNlcy9PdmVydmlldy5tZAorCisgICAgICAg
IEl0J3MgYWxzbyByZXF1aXJlZCBmb3IgdGhlIHR5cGUgaW1wb3J0cyBhbmQgR0MgcHJvcG9zYWxz
IGFzIHdlbGwuIFJlZiB0eXBlcyByZXByZXNlbnQKKyAgICAgICAgcmVmZXJlbmNlcyB0byBhbnkg
aGVhcCB0eXBlIChpbmNsdWRpbmcgZXhpc3RpbmcgZnVuY3JlZiBhbmQgZXh0ZXJucmVmKSB3aXRo
IGEgc3BlY2lmaWVkCisgICAgICAgIG51bGxhYmlsaXR5LgorCisgICAgICAgIFRoaXMgcmVxdWly
ZXMgYSBuZXcgaXNOdWxsYWJsZSBmbGFnIGluIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uLiBUaGlz
IGZsYWcgYWxzbyBlbmFibGVzCisgICAgICAgIG5vbi1udWxsIGV4dGVybnJlZiBhbmQgZnVuY3Jl
ZnMsIGFuZCBoZW5jZSB0aGlzIGNvbW1pdCBhbHNvIGFkZHMgdGhlIG5lY2Vzc2FyeSBjaGVja3MK
KyAgICAgICAgYXQgV2FzbS9KUyBib3VuZGFyaWVzLgorCisgICAgICAgIE5vbi1udWxsIHJlZmVy
ZW5jZSB0eXBlcyBhbHNvIGdlbmVyYWxseSBjYW5ub3QgYmUgdXNlZCBhcyBmdW5jdGlvbiBsb2Nh
bHMuCisKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpnVHlwZUlkeCk6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjp0bXBGb3JUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJH
ZW5lcmF0b3I6OmVtaXRDQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9y
Ojptb3ZlT3BGb3JWYWx1ZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRv
cjo6QWlySVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6
YWRkTG9jYWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ29uc3Rh
bnQpOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkUmVmRnVuYyk6Cisg
ICAgICAgICogd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6V2FzbUNhbGxpbmdDb252ZW50aW9uOjptYXJzaGFsbExvY2F0aW9uIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6SlNDYWxsaW5nQ29udmVudGlvbjo6bWFyc2hhbGxMb2NhdGlvbiBjb25z
dCk6CisgICAgICAgICogd2FzbS9XYXNtRm9ybWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206Omlz
U3VidHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OmlzVmFsaWRIZWFwVHlwZUtpbmQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjppc0RlZmF1bHRhYmxlVHlwZSk6CisgICAgICAgICogd2FzbS9XYXNt
RnVuY3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4
dD46OnBhcnNlQW5ub3RhdGVkU2VsZWN0SW1tZWRpYXRlcyk6CisgICAgICAgIChKU0M6Oldhc206
OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpjaGVja0JyYW5jaFRhcmdldCk6CisgICAgICAgIChK
U0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAg
ICAgICAqIHdhc20vV2FzbUdsb2JhbC5jcHA6CisgICAgICAgIChKU0M6Oldhc206Okdsb2JhbDo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6R2xvYmFsOjpzZXQpOgorICAgICAgICAq
IHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRH
ZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcik6CisgICAgICAgIChKU0M6Oldhc206
OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUpOgorICAgICAgICAoSlND
OjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkQXJndW1lbnRzKToKKyAgICAgICAgKiB3YXNtL1dh
c21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFy
c2VCbG9ja1NpZ25hdHVyZSk6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlw
ZT46OnBhcnNlVmFsdWVUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NU
eXBlPjo6cGFyc2VSZWZUeXBlKToKKyAgICAgICAgKiB3YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VJbml0RXhwcik6CisgICAgICAgIChKU0M6Oldh
c206OlNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudFNlZ21lbnRWZWN0b3JPZkV4cHJlc3Npb25z
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6U2VjdGlvblBhcnNlcjo6cGFyc2VHbG9iYWxUeXBlKToK
KyAgICAgICAgKiB3YXNtL1dhc21TaWduYXR1cmUuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpj
b21wdXRlSGFzaCk6CisgICAgICAgICogd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHk6Cisg
ICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondhc21U
b0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseUZ1bmN0aW9uOjpqc0NhbGxFbnRyeXBvaW50U2xvdyk6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0
aW9uQmFzZTo6b2Zmc2V0T2ZTaWduYXR1cmVJbmRleCk6CisgICAgICAgICogd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rSW1wbCk6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMDYt
MjQgIFhhbiBMw7NwZXogIDx4YW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1l
bnQgcmV0dXJuRWFybHlGcm9tSW5maW5pdGVMb29wc0ZvckZ1enppbmcgZm9yIDMyYml0cwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKaW5k
ZXggOGY0NWIxYWQxZWVkNGJlMTFkOGFmMTE4NDcwOTBiN2Y0MmI3Y2MwZS4uYWYzYTMwMmE5NTk3
NmFjMjY2YzFhMmQ3ZGExZTA2ZTI3OTBkYTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC00MTMsNiArNDEzLDcgQEAgcHJp
dmF0ZToKICAgICBUeXBlZFRtcCBnNjQoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCBUeXBl
czo6STY0IH07IH0KICAgICBUeXBlZFRtcCBnRXh0ZXJucmVmKCkgeyByZXR1cm4geyBuZXdUbXAo
QjM6OkdQKSwgVHlwZXM6OkV4dGVybnJlZiB9OyB9CiAgICAgVHlwZWRUbXAgZ0Z1bmNyZWYoKSB7
IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCBUeXBlczo6RnVuY3JlZiB9OyB9CisgICAgVHlwZWRU
bXAgZ1R5cGVJZHgoVHlwZSB0eXBlKSB7IHJldHVybiB7IG5ld1RtcChCMzo6R1ApLCB0eXBlIH07
IH0KICAgICBUeXBlZFRtcCBmMzIoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6RlApLCBUeXBlczo6
RjMyIH07IH0KICAgICBUeXBlZFRtcCBmNjQoKSB7IHJldHVybiB7IG5ld1RtcChCMzo6RlApLCBU
eXBlczo6RjY0IH07IH0KIApAQCAtNDI1LDYgKzQyNiw4IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm4gZzY0KCk7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAg
ICAgICByZXR1cm4gZ0Z1bmNyZWYoKTsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoK
KyAgICAgICAgICAgIHJldHVybiBnVHlwZUlkeCh0eXBlKTsKICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6RXh0ZXJucmVmOgogICAgICAgICAgICAgcmV0dXJuIGdFeHRlcm5yZWYoKTsKICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6RjMyOgpAQCAtNjAxLDYgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRl
cm5yZWY6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAgICAgICByZXN1bHRUeXBlID0gQjM6
OkludDY0OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6RjMyOgpAQCAtNjUwLDYgKzY1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpGdW5jcmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4OgogICAg
ICAgICAgICAgcmV0dXJuIE1vdmU7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkYzMjoKICAgICAg
ICAgICAgIHJldHVybiBNb3ZlRmxvYXQ7CkBAIC05MDcsNiArOTEyLDcgQEAgQWlySVJHZW5lcmF0
b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJv
Y2VkdXJlJiBwcm8KICAgICAgICAgY2FzZSBUeXBlS2luZDo6STY0OgogICAgICAgICBjYXNlIFR5
cGVLaW5kOjpFeHRlcm5yZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgYXJn
LCBtX2xvY2Fsc1tpXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6RjMyOgpAQCAtMTAwOSw2ICsxMDE1LDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkTG9j
YWwoVHlwZSB0eXBlLCB1aW50MzJfdCBjb3VudCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBz
d2l0Y2ggKHR5cGUua2luZCkgewogICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CiAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlR5
cGVJZHg6CiAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjppbW0oSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKSksIGxvY2FsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR5
cGVLaW5kOjpJMzI6CkBAIC0xMDQ0LDYgKzEwNTEsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRDb25zdGFudChCYXNpY0Jsb2NrKiBibG9jaywgVHlwZSB0eXBlLCB1aW50NjRfdCB2YWx1ZSkg
LQogICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6
CiAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoKKyAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4
OgogICAgICAgICBhcHBlbmQoYmxvY2ssIE1vdmUsIEFyZzo6YmlnSW1tKHZhbHVlKSwgcmVzdWx0
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgpAQCAtMTA4OCw3ICsx
MDk2LDExIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlw
ZSB2YWx1ZSwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZFJlZkZ1bmModWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRp
YWxSZXN1bHQKIHsKICAgICAvLyBGSVhNRTogRW1pdCB0aGlzIGlubGluZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5ODUwNj4uCi0gICAgcmVzdWx0ID0gdG1wRm9y
VHlwZShUeXBlczo6RnVuY3JlZik7CisgICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlw
ZWRGdW5jdGlvblJlZmVyZW5jZXMoKSkgeworICAgICAgICBTaWduYXR1cmVJbmRleCBzaWduYXR1
cmVJbmRleCA9IG1faW5mby5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5k
ZXgpOworICAgICAgICByZXN1bHQgPSB0bXBGb3JUeXBlKFR5cGUgeyBUeXBlS2luZDo6VHlwZUlk
eCwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleCB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cmVzdWx0ID0gdG1wRm9yVHlwZShUeXBlczo6RnVuY3JlZik7CiAgICAgZW1pdENDYWxsKCZvcGVy
YXRpb25XYXNtUmVmRnVuYywgcmVzdWx0LCBpbnN0YW5jZVZhbHVlKCksIGFkZENvbnN0YW50KFR5
cGVzOjpJMzIsIGluZGV4KSk7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA4ODBlNDQ2YmRj
OGJkMGU4ZTlhZWU5ZjkwMzYwMzk1MzQ0OGE1ZjViLi42YzAyNmUwOGE0MDllOTk1ZDQzMThkZmIx
ODA0NjI2ZDBmYWQxNzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtMTA3LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6Okk2NDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuY3JlZjoK
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5k
OjpUeXBlSWR4OgogICAgICAgICAgICAgcmV0dXJuIG1hcnNoYWxsTG9jYXRpb25JbXBsKHJvbGUs
IGdwckFyZ3MsIGdwQXJndW1lbnRDb3VudCwgc3RhY2tPZmZzZXQpOwogICAgICAgICBjYXNlIFR5
cGVLaW5kOjpGMzI6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKQEAgLTE5NSw2ICsxOTYs
NyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpJNjQ6CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkZ1bmNyZWY6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkV4dGVybnJlZjoKKyAg
ICAgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgICAgIHJldHVybiBtYXJzaGFs
bExvY2F0aW9uSW1wbChyb2xlLCBncHJBcmdzLCBncEFyZ3VtZW50Q291bnQsIHN0YWNrT2Zmc2V0
KTsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
NjQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggZjdjZTBmYjNm
ZmNjNDQ0MzM5M2NhNzg1YjMxZGI1YTc5Njk0NDNjMC4uNTk1YTUzY2JjYWI5Yjk2MDFmM2U4MjY4
NWY1NmU4NDlkNjM0MTMzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQu
aApAQCAtNzksNiArNzksOSBAQCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5cGUpCiAK
IGlubGluZSBib29sIGlzU3VidHlwZShUeXBlIHN1YiwgVHlwZSBwYXJlbnQpCiB7CisgICAgaWYg
KHN1Yi5pc051bGxhYmxlKCkgJiYgIXBhcmVudC5pc051bGxhYmxlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKwogICAgIGlmIChzdWIuaXNUeXBlSWR4KCkgJiYgcGFyZW50LmlzRnVuY3JlZigp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtOTAsNiArOTMsMjMgQEAgaW5saW5lIGJvb2wg
aXNSZWZUeXBlKFR5cGUgdHlwZSkKICAgICByZXR1cm4gdHlwZS5pc0Z1bmNyZWYoKSB8fCB0eXBl
LmlzRXh0ZXJucmVmKCkgfHwgdHlwZS5pc1R5cGVJZHgoKTsKIH0KIAoraW5saW5lIGJvb2wgaXNW
YWxpZEhlYXBUeXBlS2luZChUeXBlS2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgewor
ICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVm
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBpc0RlZmF1bHRhYmxlVHlw
ZShUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuICFpc1JlZlR5cGUodHlwZSkgfHwgdHlwZS5pc051
bGxhYmxlKCk7Cit9CisKIGVudW0gY2xhc3MgRXh0ZXJuYWxLaW5kIDogdWludDhfdCB7CiAgICAg
Ly8gRklYTUUgYXV0by1nZW5lcmF0ZSB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1MjMxCiAgICAgRnVuY3Rpb24gPSAwLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBiMDU3NzkxZmI4ZjEzNjVl
YzZlNmZkM2E5YzVkNjY5NTI1ODA3NzQ0Li4zNzA2ZTViMGYzODY0YzJlOGJkMzc0ZmY2MjA1MmRl
MmZlZmYzMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rp
b25QYXJzZXIuaApAQCAtMjQzLDcgKzI0Myw4IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4
dD46OnBhcnNlKCkgLT4gUmVzdWx0CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNl
VmFyVUludDMyKG51bWJlck9mTG9jYWxzKSwgImNhbid0IGdldCBGdW5jdGlvbidzIG51bWJlciBv
ZiBsb2NhbHMgaW4gZ3JvdXAgIiwgaSk7CiAgICAgICAgIHRvdGFsTnVtYmVyT2ZMb2NhbHMgKz0g
bnVtYmVyT2ZMb2NhbHM7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodG90YWxOdW1iZXJP
ZkxvY2FscyA+IG1heEZ1bmN0aW9uTG9jYWxzLCAiRnVuY3Rpb24ncyBudW1iZXIgb2YgbG9jYWxz
IGlzIHRvbyBiaWcgIiwgdG90YWxOdW1iZXJPZkxvY2FscywgIiBtYXhpbXVtICIsIG1heEZ1bmN0
aW9uTG9jYWxzKTsKLSAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUo
dHlwZU9mTG9jYWwpLCAiY2FuJ3QgZ2V0IEZ1bmN0aW9uIGxvY2FsJ3MgdHlwZSBpbiBncm91cCAi
LCBpKTsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZv
LCB0eXBlT2ZMb2NhbCksICJjYW4ndCBnZXQgRnVuY3Rpb24gbG9jYWwncyB0eXBlIGluIGdyb3Vw
ICIsIGkpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFpc0RlZmF1bHRhYmxlVHlwZSh0
eXBlT2ZMb2NhbCksICJGdW5jdGlvbiBsb2NhbHMgbXVzdCBoYXZlIGEgZGVmYXVsdGFibGUgdHlw
ZSIpOwogCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1fbG9jYWxzLnRyeVJlc2VydmVD
YXBhY2l0eSh0b3RhbE51bWJlck9mTG9jYWxzKSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1v
cnkgZm9yIGZ1bmN0aW9uJ3MgIiwgdG90YWxOdW1iZXJPZkxvY2FscywgIiBsb2NhbHMiKTsKICAg
ICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG51bWJlck9mTG9jYWxzOyArK2kpCkBAIC02
NDQsNyArNjQ1LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VBbm5vdGF0
ZWRTZWxlY3RJbW1lZGlhdGVzKEFubm90YXRlZFNlbGVjdEltbWUKICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKHNpemVPZkFubm90YXRpb25WZWN0b3IgIT0gMSwgInNlbGVjdCBpbnZhbGlkIHJlc3Vs
dCBhcml0eSBmb3IiKTsKIAogICAgIFR5cGUgdGFyZ2V0VHlwZTsKLSAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZVZhbHVlVHlwZSh0YXJnZXRUeXBlKSwgInNlbGVjdCBjYW4ndCBwYXJzZSBh
bm5vdGF0aW9ucyIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKG1f
aW5mbywgdGFyZ2V0VHlwZSksICJzZWxlY3QgY2FuJ3QgcGFyc2UgYW5ub3RhdGlvbnMiKTsKIAog
ICAgIHJlc3VsdC5zaXplT2ZBbm5vdGF0aW9uVmVjdG9yID0gc2l6ZU9mQW5ub3RhdGlvblZlY3Rv
cjsKICAgICByZXN1bHQudGFyZ2V0VHlwZSA9IHRhcmdldFR5cGU7CkBAIC02OTksNyArNzAwLDcg
QEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6Y2hlY2tCcmFuY2hUYXJnZXQoY29uc3Qg
Q29udHJvbFR5cGUmIHRhcmdldCkgLT4gUGEKIAogICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZXhw
cmVzc2lvblN0YWNrLnNpemUoKSAtIHRhcmdldC5icmFuY2hUYXJnZXRBcml0eSgpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YXJnZXQuYnJhbmNoVGFyZ2V0QXJpdHkoKTsgKytpKQot
ICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1N1YnR5cGUodGFyZ2V0LmJyYW5jaFRh
cmdldFR5cGUoaSksIG1fZXhwcmVzc2lvblN0YWNrW29mZnNldCArIGldLnR5cGUoKSksICJicmFu
Y2gncyBzdGFjayB0eXBlIGlzIG5vdCBhIGJsb2NrJ3MgdHlwZSBicmFuY2ggdGFyZ2V0IHR5cGUu
IFN0YWNrIHZhbHVlIGhhcyB0eXBlIiwgbV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlw
ZSgpLmtpbmQsICIgYnV0IGJyYW5jaCB0YXJnZXQgZXhwZWN0cyBhIHZhbHVlIG9mICIsIHRhcmdl
dC5icmFuY2hUYXJnZXRUeXBlKGkpLmtpbmQsICIgYXQgaW5kZXggIiwgaSk7CisgICAgICAgIFdB
U01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzU3VidHlwZShtX2V4cHJlc3Npb25TdGFja1tvZmZzZXQg
KyBpXS50eXBlKCksIHRhcmdldC5icmFuY2hUYXJnZXRUeXBlKGkpKSwgImJyYW5jaCdzIHN0YWNr
IHR5cGUgaXMgbm90IGEgYmxvY2sncyB0eXBlIGJyYW5jaCB0YXJnZXQgdHlwZS4gU3RhY2sgdmFs
dWUgaGFzIHR5cGUgIiwgbV9leHByZXNzaW9uU3RhY2tbb2Zmc2V0ICsgaV0udHlwZSgpLmtpbmQs
ICIgYnV0IGJyYW5jaCB0YXJnZXQgZXhwZWN0cyBhIHZhbHVlIG9mICIsIHRhcmdldC5icmFuY2hU
YXJnZXRUeXBlKGkpLmtpbmQsICIgYXQgaW5kZXggIiwgaSk7CiAKICAgICByZXR1cm4geyB9Owog
fQpAQCAtMTA3OSw3ICsxMDgwLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpCiAgICAgY2FzZSBSZWZOdWxsOiB7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5UmVmZXJlbmNlcygpLCAicmVmZXJlbmNlcyBhcmUg
bm90IGVuYWJsZWQiKTsKICAgICAgICAgVHlwZSB0eXBlT2ZOdWxsOwotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUodHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11
c3QgYmUgYSByZWZlcmVuY2UgdHlwZSIpOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVJlZlR5cGUobV9pbmZvLCB0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBh
IHJlZmVyZW5jZSB0eXBlIik7CiAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFu
ZEFwcGVuZCh0eXBlT2ZOdWxsLCBtX2NvbnRleHQuYWRkQ29uc3RhbnQodHlwZU9mTnVsbCwgSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KQEAg
LTExMDksNyArMTExMCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogCiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25S
ZWZlcmVuY2VzKCkpIHsKICAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
ID0gbV9pbmZvLnNpZ25hdHVyZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7Ci0g
ICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoVHlwZSB7VHlw
ZUtpbmQ6OlR5cGVJZHgsIHNpZ25hdHVyZUluZGV4fSwgcmVzdWx0KTsKKyAgICAgICAgICAgIG1f
ZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChUeXBlIHtUeXBlS2luZDo6VHlwZUlk
eCwgTnVsbGFibGU6Ok5vLCBzaWduYXR1cmVJbmRleH0sIHJlc3VsdCk7CiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21HbG9iYWwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUds
b2JhbC5jcHAKaW5kZXggOWJlMWZmZTgyNDRhNWY3MWVmMTNmYzdkM2RhODE2MmVlMmJlMjk5Ny4u
NTlkYTk3N2MzY2E2ZmE0Y2EzNTdlMGNmNWRlYTRkNTY2YmIwYzk0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUdsb2JhbC5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAgSlNWYWx1ZSBH
bG9iYWw6OmdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBy
ZXR1cm4ganNOdW1iZXIocHVyaWZ5TmFOKGJpdHdpc2VfY2FzdDxkb3VibGU+KG1fdmFsdWUubV9w
cmltaXRpdmUpKSk7CiAgICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgogICAgIGNhc2UgVHlw
ZUtpbmQ6OkZ1bmNyZWY6CisgICAgY2FzZSBUeXBlS2luZDo6VHlwZUlkeDoKICAgICAgICAgcmV0
dXJuIG1fdmFsdWUubV9leHRlcm5yZWYuZ2V0KCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC04NiwxNSArODcsMzUgQEAgdm9pZCBHbG9iYWw6OnNldChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFyZ3VtZW50KQogICAgIH0KICAg
ICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9v
d25lcik7CisgICAgICAgIGlmICghbV90eXBlLmlzTnVsbGFibGUoKSAmJiBhcmd1bWVudC5pc051
bGwoKSkgeworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yKGdsb2JhbE9iamVjdCwgdm0sICJO
b24tbnVsbCBFeHRlcm5yZWYgY2Fubm90IGJlIG51bGwiKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KICAgICAgICAgbV92YWx1ZS5tX2V4dGVybnJlZi5zZXQobV9vd25lci0+dm0o
KSwgbV9vd25lciwgYXJndW1lbnQpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBU
eXBlS2luZDo6VHlwZUlkeDoKICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOiB7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG1fb3duZXIpOwotICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0
RnVuY3Rpb24odm0sIGFyZ3VtZW50KSAmJiAhYXJndW1lbnQuaXNOdWxsKCkpIHsKKyAgICAgICAg
Ym9vbCBpc051bGxhYmxlID0gbV90eXBlLmlzTnVsbGFibGUoKTsKKyAgICAgICAgV2ViQXNzZW1i
bHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb24gPSBudWxscHRyOworICAgICAgICBp
ZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIGFyZ3VtZW50LCB3YXNtRnVuY3Rpb24s
IHdhc21XcmFwcGVyRnVuY3Rpb24pICYmICghaXNOdWxsYWJsZSB8fCAhYXJndW1lbnQuaXNOdWxs
KCkpKSB7CiAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIGNyZWF0ZUpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgIkZ1
bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIikpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGlmIChtX3R5cGUua2luZCA9PSBUeXBlS2luZDo6
VHlwZUlkeCAmJiAod2FzbUZ1bmN0aW9uIHx8IHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7CisgICAg
ICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBwYXJhbUluZGV4ID0gbV90eXBlLmluZGV4Owor
ICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggYXJnSW5kZXg7CisgICAgICAgICAgICBp
ZiAod2FzbUZ1bmN0aW9uKQorICAgICAgICAgICAgICAgIGFyZ0luZGV4ID0gd2FzbUZ1bmN0aW9u
LT5zaWduYXR1cmVJbmRleCgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFy
Z0luZGV4ID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAgICAg
ICAgIGlmIChwYXJhbUluZGV4ICE9IGFyZ0luZGV4KSB7CisgICAgICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVu
dGltZUVycm9yKGdsb2JhbE9iamVjdCwgdm0sICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1h
dGNoIHRoZSByZWZlcmVuY2UgdHlwZSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgbV92YWx1ZS5tX2V4dGVybnJlZi5zZXQobV9v
d25lci0+dm0oKSwgbV9vd25lciwgYXJndW1lbnQpOwogICAgICAgICBicmVhazsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApp
bmRleCA5ODdhNjE4ZDhhZjU3MGZlMDQyMzAxYjk2YTM2ZjFjNzhiOTEzMmE2Li5mYzA3ODFmMzUz
NTg4ZGZhNTJlMWI0MTUyYzkwMjBjODFjOTA3YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTU2Miw2ICs1NjIsOCBAQCBh
dXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0
dXJlJiBzaWduYXR1cmUpIC0+IExMSQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9OwpA
QCAtNjE4LDYgKzYyMCw4IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZv
ckNhbGxlcihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gTExJCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6RnVuYzoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKKyAgICAgICAgY2FzZSBU
eXBlS2luZDo6UmVmOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTY0Niw2ICs2NTAsOCBAQCBhdXRvIExMSW50R2VuZXJhdG9y
OjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUpIC0+
IExMSQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51
bGw6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03MDIsNiArNzA4LDggQEAg
YXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IFNpZ25h
dHVyZSYgc2lnbmF0dXJlKSAtPiBWZWMKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgorICAgICAgICBj
YXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpA
QCAtNzUxLDYgKzc1OSw4IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmM6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5k
ZXggMjg2ODZiNTNkNGM5Y2JmMmU0ODdhODg3MjU1YjYxYTc4MjE5OTA4NC4uYTE2M2M0NjMyNzli
OTBhYWFmOTFiMDYxNjRhNjU2YzEwYmZjMDkwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21QYXJzZXIuaApAQCAtODQsOCArODQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBXQVJO
X1VOVVNFRF9SRVRVUk4gcGFyc2VWYXJJbnQ2NChpbnQ2NF90Jik7CiAKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUJsb2NrU2lnbmF0dXJlKGNvbnN0IE1vZHVsZUlu
Zm9ybWF0aW9uJiwgQmxvY2tTaWduYXR1cmUmKTsKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBwYXJzZVZhbHVlVHlwZShUeXBlJik7Ci0gICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFy
c2VSZWZUeXBlKFR5cGUmKTsKKyAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVZhbHVl
VHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYsIFR5cGUmKTsKKyAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZVJlZlR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mLCBUeXBlJik7
CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VFeHRlcm5hbEtpbmQoRXh0ZXJuYWxL
aW5kJik7CiAKICAgICBzaXplX3QgbV9vZmZzZXQgPSAwOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIEFM
V0FZU19JTkxJTkUgdHlwZW5hbWUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJlc3VsdCBQ
YXJzZXI8U3VjY2Vzc1R5cGU+OjpwCiB7CiAgICAgaW50OF90IHR5cGVLaW5kOwogICAgIGlmIChw
ZWVrSW50Nyh0eXBlS2luZCkgJiYgaXNWYWxpZFR5cGVLaW5kKHR5cGVLaW5kKSkgewotICAgICAg
ICBUeXBlIHR5cGUgPSB7c3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KHR5cGVLaW5kKSwgMH07CisgICAg
ICAgIFR5cGUgdHlwZSA9IHtzdGF0aWNfY2FzdDxUeXBlS2luZD4odHlwZUtpbmQpLCBOdWxsYWJs
ZTo6WWVzLCAwfTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighKGlzVmFsdWVUeXBlKHR5
cGUpIHx8IHR5cGUuaXNWb2lkKCkpLCAicmVzdWx0IHR5cGUgb2YgYmxvY2s6ICIsIG1ha2VTdHJp
bmcodHlwZS5raW5kKSwgIiBpcyBub3QgYSB2YWx1ZSB0eXBlIG9yIFZvaWQiKTsKICAgICAgICAg
cmVzdWx0ID0gbV9zaWduYXR1cmVJbmZvcm1hdGlvbi50aHVua0Zvcih0eXBlKTsKICAgICAgICAg
bV9vZmZzZXQrKzsKQEAgLTI5NiwyMiArMjk2LDUwIEBAIEFMV0FZU19JTkxJTkUgdHlwZW5hbWUg
UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFydGlhbFJlc3VsdCBQYXJzZXI8U3VjY2Vzc1R5cGU+Ojpw
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgotQUxXQVlTX0lOTElORSBib29s
IFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlVmFsdWVUeXBlKFR5cGUmIHJlc3VsdCkKK0FMV0FZ
U19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZShjb25zdCBN
b2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgVHlwZSYgcmVzdWx0KQogewogICAgIGludDhfdCBraW5k
OwogICAgIGlmICghcGFyc2VJbnQ3KGtpbmQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
VHlwZSB0eXBlID0ge3N0YXRpY19jYXN0PFR5cGVLaW5kPihraW5kKSwgMH07Ci0gICAgaWYgKCFp
c1ZhbGlkVHlwZUtpbmQoa2luZCkgfHwgIWlzVmFsdWVUeXBlKHR5cGUpKQorICAgIGlmICghaXNW
YWxpZFR5cGVLaW5kKGtpbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBUeXBlS2lu
ZCB0eXBlS2luZCA9IHN0YXRpY19jYXN0PFR5cGVLaW5kPihraW5kKTsKKyAgICBib29sIGlzTnVs
bGFibGUgPSB0cnVlOworICAgIFNpZ25hdHVyZUluZGV4IHNpZ0luZGV4ID0gMDsKKyAgICBpZiAo
dHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJlZiB8fCB0eXBlS2luZCA9PSBUeXBlS2luZDo6UmVmTnVs
bCkgeworICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJl
ZmVyZW5jZXMoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpbnQzMl90
IGhlYXBUeXBlOworICAgICAgICBpc051bGxhYmxlID0gdHlwZUtpbmQgPT0gVHlwZUtpbmQ6OlJl
Zk51bGw7CisKKyAgICAgICAgaWYgKCFwYXJzZVZhckludDMyKGhlYXBUeXBlKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGhlYXBUeXBlIDwgMCkgeworICAgICAgICAg
ICAgVHlwZUtpbmQgaGVhcEtpbmQgPSBzdGF0aWNfY2FzdDxUeXBlS2luZD4oaGVhcFR5cGUpOwor
ICAgICAgICAgICAgaWYgKCFpc1ZhbGlkSGVhcFR5cGVLaW5kKGhlYXBLaW5kKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0eXBlS2luZCA9IGhlYXBLaW5kOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdHlwZUtpbmQgPSBUeXBlS2luZDo6VHlwZUlk
eDsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZv
LnVzZWRTaWduYXR1cmVzLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBzaWdJbmRleCA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQoaW5mby51c2Vk
U2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgVHlw
ZSB0eXBlID0geyB0eXBlS2luZCwgc3RhdGljX2Nhc3Q8TnVsbGFibGU+KGlzTnVsbGFibGUpLCBz
aWdJbmRleCB9OworICAgIGlmICghaXNWYWx1ZVR5cGUodHlwZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICByZXN1bHQgPSB0eXBlOwogICAgIHJldHVybiB0cnVlOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdWNjZXNzVHlwZT4KLUFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8U3VjY2Vz
c1R5cGU+OjpwYXJzZVJlZlR5cGUoVHlwZSYgcmVzdWx0KQorQUxXQVlTX0lOTElORSBib29sIFBh
cnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlUmVmVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYg
aW5mbywgVHlwZSYgcmVzdWx0KQogewotICAgIGNvbnN0IGJvb2wgcGFyc2VkID0gcGFyc2VWYWx1
ZVR5cGUocmVzdWx0KTsKKyAgICBjb25zdCBib29sIHBhcnNlZCA9IHBhcnNlVmFsdWVUeXBlKGlu
Zm8sIHJlc3VsdCk7CiAgICAgcmV0dXJuIHBhcnNlZCAmJiBpc1JlZlR5cGUocmVzdWx0KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3Bw
CmluZGV4IDY2MmExYWY5NTM5NDgyNWVlMDk1NTYxMTY3MGM5MTE2M2JkMjE3YTEuLjY1ZWY2OWY2
ZjFjMzYxMWVkMDFmNzI4Njc2MWM4MWUxMWJiMmM1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYXV0
byBTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgewogICAgICAgICAg
ICAgVHlwZSBhcmd1bWVudFR5cGU7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVZhbHVlVHlwZShhcmd1bWVudFR5cGUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBhcmd1bWVu
dCBUeXBlIik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlw
ZShtX2luZm8sIGFyZ3VtZW50VHlwZSksICJjYW4ndCBnZXQgIiwgaSwgInRoIGFyZ3VtZW50IFR5
cGUiKTsKICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoYXJndW1lbnRUeXBlKTsKICAgICAg
ICAgfQogCkBAIC03Miw3ICs3Miw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VUeXBlKCkg
LT4gUGFydGlhbFJlc3VsdAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZXR1cm5UeXBl
cy50cnlSZXNlcnZlQ2FwYWNpdHkoYXJndW1lbnRDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91
Z2ggbWVtb3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXR1cm5Db3VudDsgKytpKSB7CiAgICAgICAg
ICAgICBUeXBlIHZhbHVlOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VW
YWx1ZVR5cGUodmFsdWUpLCAiY2FuJ3QgZ2V0ICIsIGksICJ0aCBUeXBlJ3MgcmV0dXJuIHZhbHVl
Iik7CisgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhbHVlVHlwZShtX2lu
Zm8sIHZhbHVlKSwgImNhbid0IGdldCAiLCBpLCAidGggVHlwZSdzIHJldHVybiB2YWx1ZSIpOwog
ICAgICAgICAgICAgcmV0dXJuVHlwZXMuYXBwZW5kKHZhbHVlKTsKICAgICAgICAgfQogCkBAIC00
ODMsNyArNDgzLDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0
aWFsUmVzdWx0CiAgICAgICAgIGNhc2UgMHgwNTogewogICAgICAgICAgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2Vz
IGFyZSBub3QgZW5hYmxlZCIpOwogICAgICAgICAgICAgVHlwZSByZWZUeXBlOwotICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHJlZlR5cGUpLCAiY2FuJ3QgcGFy
c2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlw
ZSBpbiBlbGVtIHNlY3Rpb24iKTsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJl
ZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUg
ZnVuY3JlZiIpOwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OwpAQCAtNTA3LDcg
KzUwNyw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJl
c3VsdAogICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUkzMkluaXRF
eHByRm9yRWxlbWVudFNlY3Rpb24oaW5pdEV4cHIpKTsKIAogICAgICAgICAgICAgVHlwZSByZWZU
eXBlOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKHJlZlR5
cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKKyAgICAgICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUpLCAiY2Fu
J3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKICAgICAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGluIGVsZW1lbnQgc2Vj
dGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENv
dW50OwpAQCAtNTI1LDcgKzUyNSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50
KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlSZWZlcmVuY2VzKCksICJyZWZlcmVuY2VzIGFyZSBub3QgZW5h
YmxlZCIpOwogCiAgICAgICAgICAgICBUeXBlIHJlZlR5cGU7Ci0gICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUocmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBl
IGluIGVsZW0gc2VjdGlvbiIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VSZWZUeXBlKG1faW5mbywgcmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0g
c2VjdGlvbiIpOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmVmVHlwZS5pc0Z1
bmNyZWYoKSwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7
CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CkBAIC02MDUsNyArNjA1LDcgQEAg
YXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUluaXRFeHByKHVpbnQ4X3QmIG9wY29kZSwgdWludDY0
X3QmIGJpdHNPckltcG9ydE51bWJlciwKIAogICAgIGNhc2UgUmVmTnVsbDogewogICAgICAgICBU
eXBlIHR5cGVPZk51bGw7Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlw
ZSh0eXBlT2ZOdWxsKSwgInJlZi5udWxsIHR5cGUgbXVzdCBiZSBhIHJlZmVyZW5jZSB0eXBlIik7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHR5cGVP
Zk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgcmVmZXJlbmNlIHR5cGUiKTsKICAgICAg
ICAgcmVzdWx0VHlwZSA9IHR5cGVPZk51bGw7CiAgICAgICAgIGJpdHNPckltcG9ydE51bWJlciA9
IEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjE2LDcgKzYx
NiwxMiBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSW5pdEV4cHIodWludDhfdCYgb3Bjb2Rl
LCB1aW50NjRfdCYgYml0c09ySW1wb3J0TnVtYmVyLAogICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZVZhclVJbnQzMihpbmRleCksICJjYW4ndCBnZXQgcmVmLmZ1bmMgaW5kZXgiKTsK
ICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihpbmRleCA+PSBtX2luZm8tPmZ1bmN0aW9ucy5z
aXplKCksICJyZWYuZnVuYyBpbmRleCIsIGluZGV4LCAiIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBm
dW5jdGlvbnMgIiwgbV9pbmZvLT5mdW5jdGlvbnMuc2l6ZSgpKTsKIAotICAgICAgICByZXN1bHRU
eXBlID0gVHlwZXM6OkZ1bmNyZWY7CisgICAgICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJs
eVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCkpIHsKKyAgICAgICAgICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4ID0gbV9pbmZvLT5zaWduYXR1cmVJbmRleEZyb21GdW5jdGlvbkluZGV4
U3BhY2UoaW5kZXgpOworICAgICAgICAgICAgcmVzdWx0VHlwZSA9IHsgVHlwZUtpbmQ6OlR5cGVJ
ZHgsIE51bGxhYmxlOjpObywgc2lnbmF0dXJlSW5kZXggfTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICByZXN1bHRUeXBlID0gVHlwZXM6OkZ1bmNyZWY7CisKICAgICAgICAgYml0c09ySW1w
b3J0TnVtYmVyID0gaW5kZXg7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTY5MSw3ICs2OTYs
NyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudFNlZ21lbnRWZWN0b3JPZkV4cHJl
c3Npb25zKFZlY3Rvcjx1aW50MzJfdD4mIHJlcwogICAgICAgICAgICAgbV9pbmZvLT5hZGREZWNs
YXJlZEZ1bmN0aW9uKGZ1bmN0aW9uSW5kZXgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgVHlwZSB0eXBlT2ZOdWxsOwotICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VSZWZUeXBlKHR5cGVPZk51bGwpLCAicmVmLm51bGwgdHlwZSBtdXN0IGJlIGEgZnVuYyB0eXBl
IGluIGVsZW0gc2VjdGlvbiIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VSZWZUeXBlKG1faW5mbywgdHlwZU9mTnVsbCksICJyZWYubnVsbCB0eXBlIG11c3QgYmUgYSBm
dW5jIHR5cGUgaW4gZWxlbSBzZWN0aW9uIik7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCF0eXBlT2ZOdWxsLmlzRnVuY3JlZigpLCAicmVmLm51bGwgZXh0ZXJuIGlzIGZvcmJpZGRl
biBpbiBlbGVtZW50IHNlY3Rpb24ncywgIiwgZWxlbWVudE51bSwgInRoIGVsZW1lbnQncyAiLCBp
bmRleCwgInRoIGluZGV4Iik7CiAgICAgICAgICAgICBmdW5jdGlvbkluZGV4ID0gRWxlbWVudDo6
bnVsbEZ1bmNJbmRleDsKICAgICAgICAgfQpAQCAtNzI3LDcgKzczMiw3IEBAIGF1dG8gU2VjdGlv
blBhcnNlcjo6cGFyc2VJMzJJbml0RXhwckZvckRhdGFTZWN0aW9uKHN0ZDo6b3B0aW9uYWw8STMy
SW5pdEV4cHI+JiBpCiBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlR2xvYmFsVHlwZShHbG9iYWxJ
bmZvcm1hdGlvbiYgZ2xvYmFsKSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgdWludDhfdCBtdXRh
YmlsaXR5OwotICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFsdWVUeXBlKGdsb2JhbC50
eXBlKSwgImNhbid0IGdldCBHbG9iYWwncyB2YWx1ZSB0eXBlIik7CisgICAgV0FTTV9QQVJTRVJf
RkFJTF9JRighcGFyc2VWYWx1ZVR5cGUobV9pbmZvLCBnbG9iYWwudHlwZSksICJjYW4ndCBnZXQg
R2xvYmFsJ3MgdmFsdWUgdHlwZSIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVUlu
dDgobXV0YWJpbGl0eSksICJjYW4ndCBnZXQgR2xvYmFsIHR5cGUncyBtdXRhYmlsaXR5Iik7CiAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtdXRhYmlsaXR5ICE9IDB4MCAmJiBtdXRhYmlsaXR5ICE9
IDB4MSwgImludmFsaWQgR2xvYmFsJ3MgbXV0YWJpbGl0eTogMHgiLCBoZXgobXV0YWJpbGl0eSwg
MiwgTG93ZXJjYXNlKSk7CiAgICAgZ2xvYmFsLm11dGFiaWxpdHkgPSBzdGF0aWNfY2FzdDxHbG9i
YWxJbmZvcm1hdGlvbjo6TXV0YWJpbGl0eT4obXV0YWJpbGl0eSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2lnbmF0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3BwCmluZGV4IDZiMjBkMDg5NDU0MjA2NzllNzYy
N2VlMGM4ZGMxOWJkYzk4NjdiODguLjljYTY4ZjVlMDBiMjBlOGEyODkzMDJhODlkMDk4MzdkYjA1
ZTM5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1
cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TaWduYXR1cmUuY3Bw
CkBAIC03MCwxMCArNzAsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVIYXNoKHNpemVfdCBy
ZXR1cm5Db3VudCwgY29uc3QgVHlwZSogcmV0dXJuVHlwZXMsIHNpemVfdAogICAgIHVuc2lnbmVk
IGFjY3VtdWxhdG9yID0gMHhhMWJjZWRkOHU7CiAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8
IGFyZ3VtZW50Q291bnQ7ICsraSkgewogICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpcklu
dEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50OF90Pjo6aGFzaChzdGF0aWNfY2Fz
dDx1aW50OF90Pihhcmd1bWVudFR5cGVzW2ldLmtpbmQpKSk7CisgICAgICAgIGFjY3VtdWxhdG9y
ID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPHVpbnQ4X3Q+Ojpo
YXNoKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGFyZ3VtZW50VHlwZXNbaV0ubnVsbGFibGUpKSk7CiAg
ICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJ
bnRIYXNoPHVuc2lnbmVkPjo6aGFzaChhcmd1bWVudFR5cGVzW2ldLmluZGV4KSk7CiAgICAgfQog
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCByZXR1cm5Db3VudDsgKytpKSB7CiAgICAgICAg
IGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNo
PHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJldHVyblR5cGVzW2ldLmtpbmQp
KSk7CisgICAgICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwg
V1RGOjpJbnRIYXNoPHVpbnQ4X3Q+OjpoYXNoKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJldHVyblR5
cGVzW2ldLm51bGxhYmxlKSkpOwogICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhh
c2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1bnNpZ25lZD46Omhhc2gocmV0dXJuVHlwZXNb
aV0uaW5kZXgpKTsKICAgICB9CiAgICAgcmV0dXJuIGFjY3VtdWxhdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vZ2VuZXJhdGVXYXNtT3BzSGVhZGVyLnB5CmluZGV4IDg1
MmQ3NDU3YTM5M2ViNGM5MjI4NGVlNDUyMTcwNmY3MWU3N2NkMGYuLjg1ZTE5Y2U1ODE2ZWZlYTc2
MzQ1ZGQ3NmIzYTlkYmZlMjI4ZWUzNGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2dlbmVyYXRlV2FzbU9wc0hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9nZW5lcmF0ZVdhc21PcHNIZWFkZXIucHkKQEAgLTIxMiwxNSArMjEyLDIxIEBAIGVu
dW0gY2xhc3MgVHlwZUtpbmQgOiBpbnQ4X3QgewogfTsKICN1bmRlZiBDUkVBVEVfRU5VTV9WQUxV
RQogCitlbnVtIGNsYXNzIE51bGxhYmxlIDogYm9vbCB7CisgIE5vID0gZmFsc2UsCisgIFllcyA9
IHRydWUsCit9OworCiB1c2luZyBTaWduYXR1cmVJbmRleCA9IHVpbnRwdHJfdDsKIAogc3RydWN0
IFR5cGUgewogICAgIFR5cGVLaW5kIGtpbmQ7CisgICAgTnVsbGFibGUgbnVsbGFibGU7CiAgICAg
U2lnbmF0dXJlSW5kZXggaW5kZXg7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSYg
b3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3RoZXIua2luZCA9PSBraW5kICYm
IG90aGVyLmluZGV4ID09IGluZGV4OworICAgICAgICByZXR1cm4gb3RoZXIua2luZCA9PSBraW5k
ICYmIG90aGVyLm51bGxhYmxlID09IG51bGxhYmxlICYmIG90aGVyLmluZGV4ID09IGluZGV4Owog
ICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUeXBlJiBvdGhlcikgY29uc3QKQEAg
LTIyOCw2ICsyMzQsMTEgQEAgc3RydWN0IFR5cGUgewogICAgICAgICByZXR1cm4gIShvdGhlciA9
PSAqdGhpcyk7CiAgICAgfQogCisgICAgYm9vbCBpc051bGxhYmxlKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihudWxsYWJsZSk7CisgICAgfQorCiAgICAg
I2RlZmluZSBDUkVBVEVfUFJFRElDQVRFKG5hbWUsIC4uLikgYm9vbCBpcyAjIyBuYW1lKCkgY29u
c3QgeyByZXR1cm4ga2luZCA9PSBUeXBlS2luZDo6bmFtZTsgfQogICAgIEZPUl9FQUNIX1dBU01f
VFlQRShDUkVBVEVfUFJFRElDQVRFKQogICAgICN1bmRlZiBDUkVBVEVfUFJFRElDQVRFCkBAIC0y
MzUsNyArMjQ2LDcgQEAgc3RydWN0IFR5cGUgewogCiBuYW1lc3BhY2UgVHlwZXMKIHsKLSNkZWZp
bmUgQ1JFQVRFX0NPTlNUQU5UKG5hbWUsIGlkLCAuLi4pIGNvbnN0ZXhwciBUeXBlIG5hbWUgPSBU
eXBle1R5cGVLaW5kOjpuYW1lLCAwdX07CisjZGVmaW5lIENSRUFURV9DT05TVEFOVChuYW1lLCBp
ZCwgLi4uKSBjb25zdGV4cHIgVHlwZSBuYW1lID0gVHlwZXtUeXBlS2luZDo6bmFtZSwgTnVsbGFi
bGU6OlllcywgMHV9OwogRk9SX0VBQ0hfV0FTTV9UWVBFKENSRUFURV9DT05TVEFOVCkKICN1bmRl
ZiBDUkVBVEVfQ09OU1RBTlQKIH0gLy8gbmFtZXNwYWNlIFR5cGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggNDllNmY0OTAwNzMxYmYxNmE2MGQ0ZDY5
NzBhMGMwYjZjMDIxZjUyZS4uZjY3ZjI0MmE3ODkxM2FlNWMwMmFhNTY4ZTk5YWM2NWNkYmI4MGZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtMTA0
LDYgKzEwNCw4IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJU
YWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBzd2l0Y2gg
KGFyZ1R5cGUua2luZCkgewogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpS
ZWZOdWxsOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRsZWQgYWJvdmUuCiAgICAgICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4OgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6
RXh0ZXJucmVmOgpAQCAtMTc3LDYgKzE3OSw4IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAg
ICAgICAgICAgICBzd2l0Y2ggKGFyZ1R5cGUua2luZCkgewogICAgICAgICAgICAgY2FzZSBUeXBl
S2luZDo6Vm9pZDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVm
OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEhhbmRs
ZWQgYWJvdmUuCiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpUeXBlSWR4OgogICAgICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6RXh0ZXJucmVmOgpAQCAtMjc4LDYgKzI4Miw4IEBAIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4g
d2FzbVRvSlMoVk0mIHZtCiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJldHVyblR5cGUoMCku
a2luZCkgewogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVL
aW5kOjpGdW5jOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgorICAgICAgICBjYXNl
IFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICAvLyBGb3IgdGhlIEphdmFTY3JpcHQgZW1iZWRk
aW5nLCBpbXBvcnRzIHdpdGggdGhlc2UgdHlwZXMgaW4gdGhlaXIgc2lnbmF0dXJlIHJldHVybiBh
cmUgYSBXZWJBc3NlbWJseS5Nb2R1bGUgdmFsaWRhdGlvbiBlcnJvci4KICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAK
aW5kZXggMzAxNTAwOTBjNjE1ZTg1YzZiZmVlNzc0MDhhZjAwYjA5MzE1YmQ2Mi4uM2FiM2MzZDVj
YjVjOTAwOWJlYzJiNmQ4MGQ0NDRjODBjMTQzZWFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTg1LDExICs4
NSwyNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OlR5cGVJZHg6CiAgICAgICAgIGNhc2UgV2FzbTo6VHlw
ZUtpbmQ6OkZ1bmNyZWY6IHsKLSAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhvc3RGdW5j
dGlvbih2bSwgYXJnKSAmJiAhYXJnLmlzTnVsbCgpKQorICAgICAgICAgICAgYm9vbCBpc051bGxh
YmxlID0gc2lnbmF0dXJlLmFyZ3VtZW50KGFyZ0luZGV4KS5pc051bGxhYmxlKCk7CisgICAgICAg
ICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBudWxscHRyOworICAgICAg
ICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rpb24gPSBu
dWxscHRyOworICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKHZtLCBh
cmcsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikgJiYgKCFpc051bGxhYmxlIHx8
ICFhcmcuaXNOdWxsKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1
bnRpbWVFcnJvcihnbG9iYWxPYmplY3QsIHZtLCAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVk
IHdhc20gZnVuY3Rpb24iKSkpOworICAgICAgICAgICAgaWYgKHNpZ25hdHVyZS5hcmd1bWVudChh
cmdJbmRleCkua2luZCA9PSBXYXNtOjpUeXBlS2luZDo6VHlwZUlkeCAmJiAod2FzbUZ1bmN0aW9u
IHx8IHdhc21XcmFwcGVyRnVuY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0
dXJlSW5kZXggcGFyYW1JbmRleCA9IHNpZ25hdHVyZS5hcmd1bWVudChhcmdJbmRleCkuaW5kZXg7
CisgICAgICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggYXJnSW5kZXg7CisgICAgICAg
ICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgYXJnSW5kZXgg
PSB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBhcmdJbmRleCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25h
dHVyZUluZGV4KCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlSlNXZWJBc3NlbWJseVJ1bnRpbWVFcnJvcihn
bG9iYWxPYmplY3QsIHZtLCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRjaCB0aGUgcmVm
ZXJlbmNlIHR5cGUiKSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOgorICAgICAgICAg
ICAgaWYgKCFzaWduYXR1cmUuYXJndW1lbnQoYXJnSW5kZXgpLmlzTnVsbGFibGUoKSAmJiBhcmcu
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVKU1dlYkFzc2VtYmx5UnVudGltZUVy
cm9yKGdsb2JhbE9iamVjdCwgdm0sICJOb24tbnVsbCBFeHRlcm5yZWYgY2Fubm90IGJlIG51bGwi
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6Okk2
NDoKICAgICAgICAgICAgIGFyZyA9IEpTVmFsdWU6OmRlY29kZShiaXR3aXNlX2Nhc3Q8dWludDY0
X3Q+KGFyZy50b0JpZ0ludDY0KGdsb2JhbE9iamVjdCkpKTsKQEAgLTEwMiw2ICsxMTcsOCBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24sIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V2FzbTo6VHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmM6
CisgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAgIGNhc2UgV2Fz
bTo6VHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CkBAIC0yNzcsMTAgKzI5NCwxMyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3co
KQogICAgICAgICAgICAgICAgIGppdC56ZXJvRXh0ZW5kMzJUb1dvcmQoc2NyYXRjaEdQUiwgd2Fz
bUNhbGxJbmZvLnBhcmFtc1tpXS5ncHIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5kOjpUeXBlSWR4OgogICAgICAgICBjYXNlIFdh
c206OlR5cGVLaW5kOjpGdW5jcmVmOiB7CiAgICAgICAgICAgICAvLyBFbnN1cmUgd2UgaGF2ZSBh
IFdBU00gZXhwb3J0ZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICBqaXQubG9hZDY0KGpzUGFyYW0s
IHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgYXV0byBpc051bGwgPSBqaXQuYnJhbmNoSWZOdWxs
KHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaWYgKCF0eXBlLmlzTnVsbGFibGUoKSkKKyAgICAg
ICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaXNOdWxsKTsKICAgICAgICAgICAgIHNsb3dQYXRo
LmFwcGVuZChqaXQuYnJhbmNoSWZOb3RDZWxsKHNjcmF0Y2hHUFIpKTsKIAogICAgICAgICAgICAg
c3RhY2tMaW1pdEdQUklzQ2xvYmJlcmVkID0gdHJ1ZTsKQEAgLTI5NCwxNSArMzE0LDI4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpq
c0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0LmJy
YW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmluZm8oKSkpKTsKIAog
ICAgICAgICAgICAgaXNXYXNtRnVuY3Rpb24ubGluaygmaml0KTsKLSAgICAgICAgICAgIGlzTnVs
bC5saW5rKCZqaXQpOworICAgICAgICAgICAgaWYgKHR5cGUua2luZCA9PSBXYXNtOjpUeXBlS2lu
ZDo6VHlwZUlkeCkgeworICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoanNQYXJhbSwgc2NyYXRj
aEdQUik7CisgICAgICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHNjcmF0Y2hHUFIsIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpvZmZzZXRPZlNpZ25hdHVyZUlu
ZGV4KCkpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0
LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIodHlwZS5pbmRleCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHR5cGUuaXNOdWxsYWJsZSgpKQorICAgICAgICAgICAgICAgIGlzTnVsbC5saW5r
KCZqaXQpOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBXYXNtOjpUeXBlS2luZDo6RXh0ZXJucmVmOiB7CiAgICAgICAgICAgICBpZiAoaXNTdGFjaykg
ewogICAgICAgICAgICAgICAgIGppdC5sb2FkNjQoanNQYXJhbSwgc2NyYXRjaEdQUik7CisgICAg
ICAgICAgICAgICAgaWYgKCF0eXBlLmlzTnVsbGFibGUoKSkKKyAgICAgICAgICAgICAgICAgICAg
c2xvd1BhdGguYXBwZW5kKGppdC5icmFuY2hJZk51bGwoc2NyYXRjaEdQUikpOwogICAgICAgICAg
ICAgICAgIGppdC5zdG9yZTY0KHNjcmF0Y2hHUFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQod2Fz
bUNhbGxJbmZvLnBhcmFtc1tpXS5vZmZzZXRGcm9tU1AoKSkpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgaml0LmxvYWQ2NChqc1BhcmFtLCB3YXNtQ2FsbEluZm8ucGFyYW1z
W2ldLmdwcigpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBl
eHRlcm5HUFIgPSB3YXNtQ2FsbEluZm8ucGFyYW1zW2ldLmdwcigpOworICAgICAgICAgICAgICAg
IGppdC5sb2FkNjQoanNQYXJhbSwgZXh0ZXJuR1BSKTsKKyAgICAgICAgICAgICAgICBpZiAoIXR5
cGUuaXNOdWxsYWJsZSgpKQorICAgICAgICAgICAgICAgICAgICBzbG93UGF0aC5hcHBlbmQoaml0
LmJyYW5jaElmTnVsbChleHRlcm5HUFIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkYzMjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25C
YXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
QmFzZS5oCmluZGV4IDlkNzA3Nzc0Y2RiZTdhZjcwMDhjNDU3ODgzNTk3ZmQxNDUwMTcwMzMuLmJh
N2NiMTc2NWEyNmUwYmYzZWEwN2ZkYmE4OTlmNzIxYWE4NzRkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaApA
QCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
SW5zdGFuY2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2ViQXNzZW1ibHlGdW5jdGlvbkJh
c2UsIG1faW5zdGFuY2UpOyB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU2lnbmF0
dXJlSW5kZXgoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2ViQXNzZW1ibHlGdW5jdGlvbkJh
c2UsIG1faW1wb3J0YWJsZUZ1bmN0aW9uKSArIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246
Om9mZnNldE9mU2lnbmF0dXJlSW5kZXgoKTsgfQorCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZz
ZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2Vi
QXNzZW1ibHlGdW5jdGlvbkJhc2UsIG1faW1wb3J0YWJsZUZ1bmN0aW9uKSArIFdhc21Ub1dhc21J
bXBvcnRhYmxlRnVuY3Rpb246Om9mZnNldE9mRW50cnlwb2ludExvYWRMb2NhdGlvbigpOyB9CiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA1NWY5ZDgyYWRkMmEyNGU1OWU5NDRl
ZjNmNjg5OTliNjEzNjU0YTZkLi5kYjQwOTJhZDY5NDgyZjdhMDlkM2JlMWY3NTIzNDIyZDlkNWFm
MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eU1vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCkBAIC0yNDcsMTYgKzI0NywzNSBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU09iamVjdCogaQogICAgICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsVmFsdWUtPmdsb2Jh
bCgpLT5tdXRhYmlsaXR5KCkgIT0gV2FzbTo6R2xvYmFsSW5mb3JtYXRpb246OkltbXV0YWJsZSkK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNXZWJBc3Nl
bWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShpbXBvcnQs
ICJpbXBvcnRlZCBnbG9iYWwiLCAibXVzdCBiZSBhIHNhbWUgbXV0YWJpbGl0eSIpKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAobW9kdWxlSW5mb3JtYXRpb24uZ2xvYmFsc1tpbXBvcnQu
a2luZEluZGV4XS50eXBlLmtpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpU
eXBlS2luZDo6RnVuY3JlZjoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2lu
ZDo6VHlwZUlkeDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6RnVu
Y3JlZjogeworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc051bGxhYmxlID0gZ2xvYmFs
LnR5cGUuaXNOdWxsYWJsZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgV2ViQXNzZW1ibHlG
dW5jdGlvbiogd2FzbUZ1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiB3YXNtV3JhcHBlckZ1bmN0aW9uID0gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZ2xvYmFsVmFsdWUtPmdsb2JhbCgp
LT5nZXQoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlz
V2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlKSAmJiAhdmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9y
dCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgd2FzbSBleHBvcnRlZCBmdW5jdGlvbiBv
ciBudWxsIikpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNXZWJBc3NlbWJseUhv
c3RGdW5jdGlvbih2bSwgdmFsdWUsIHdhc21GdW5jdGlvbiwgd2FzbVdyYXBwZXJGdW5jdGlvbikg
JiYgKCFpc051bGxhYmxlIHx8ICF2YWx1ZS5pc051bGwoKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyKiBtc2cgPSBpc051bGxhYmxlID8gIm11c3QgYmUgYSB3YXNt
IGV4cG9ydGVkIGZ1bmN0aW9uIG9yIG51bGwiIDogIm11c3QgYmUgYSB3YXNtIGV4cG9ydGVkIGZ1
bmN0aW9uIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uKGNy
ZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFsT2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1l
c3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwgbXNnKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdsb2JhbC50eXBlLmtpbmQg
PT0gV2FzbTo6VHlwZUtpbmQ6OlR5cGVJZHggJiYgKHdhc21GdW5jdGlvbiB8fCB3YXNtV3JhcHBl
ckZ1bmN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdhc206OlNpZ25hdHVy
ZUluZGV4IHBhcmFtSW5kZXggPSBnbG9iYWwudHlwZS5pbmRleDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBhcmdJbmRleDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAod2FzbUZ1bmN0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdJbmRleCA9IHdhc21GdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFyZ0luZGV4ID0gd2FzbVdyYXBwZXJGdW5jdGlvbi0+c2lnbmF0dXJlSW5kZXgoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1JbmRleCAhPSBhcmdJbmRleCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dl
YkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGlt
cG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNo
IHRoZSByZWZlcmVuY2UgdHlwZSIpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChpbXBv
cnQua2luZEluZGV4LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVL
aW5kOjpFeHRlcm5yZWY6CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGdsb2JhbFZh
bHVlLT5nbG9iYWwoKS0+Z2V0KGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFnbG9iYWwudHlwZS5pc051bGxhYmxlKCkgJiYgdmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2VwdGlvbihjcmVhdGVKU1dlYkFz
c2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9ydEZhaWxNZXNzYWdlKGltcG9y
dCwgImltcG9ydGVkIGdsb2JhbCIsICJub24tbnVsbCBleHRlcm5yZWYgY2Fubm90IGJlIG51bGwi
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRH
bG9iYWwoaW1wb3J0LmtpbmRJbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkkzMjoKQEAg
LTI4MywxMiArMzAyLDMxIEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBpCiAKICAgICAgICAgICAg
ICAgICAgICAgLy8gaWlpLiBBcHBlbmQgVG9XZWJBc3NlbWJseVZhbHVlKHYpIHRvIGltcG9ydHMu
CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2xvYmFsVHlwZS5raW5kKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlIb3N0RnVuY3Rpb24odm0sIHZhbHVlKSAmJiAh
dmFsdWUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4Y2Vw
dGlvbihjcmVhdGVKU1dlYkFzc2VtYmx5TGlua0Vycm9yKGdsb2JhbE9iamVjdCwgdm0sIGltcG9y
dEZhaWxNZXNzYWdlKGltcG9ydCwgImltcG9ydGVkIGdsb2JhbCIsICJtdXN0IGJlIGEgd2FzbSBl
eHBvcnRlZCBmdW5jdGlvbiBvciBudWxsIikpKTsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBX
YXNtOjpUeXBlS2luZDo6VHlwZUlkeDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpU
eXBlS2luZDo6RnVuY3JlZjogeworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc051bGxh
YmxlID0gZ2xvYmFsVHlwZS5pc051bGxhYmxlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJBc3NlbWJseUZ1bmN0aW9uKiB3YXNtRnVuY3Rpb24gPSBudWxscHRyOworICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qIHdhc21XcmFwcGVyRnVuY3Rp
b24gPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1dlYkFzc2VtYmx5
SG9zdEZ1bmN0aW9uKHZtLCB2YWx1ZSwgd2FzbUZ1bmN0aW9uLCB3YXNtV3JhcHBlckZ1bmN0aW9u
KSAmJiAoIWlzTnVsbGFibGUgfHwgIXZhbHVlLmlzTnVsbCgpKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG1zZyA9IGlzTnVsbGFibGUgPyAibXVzdCBiZSBhIHdh
c20gZXhwb3J0ZWQgZnVuY3Rpb24gb3IgbnVsbCIgOiAibXVzdCBiZSBhIHdhc20gZXhwb3J0ZWQg
ZnVuY3Rpb24iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24o
Y3JlYXRlSlNXZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWls
TWVzc2FnZShpbXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCBtc2cpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2xvYmFsVHlwZS5raW5k
ID09IFdhc206OlR5cGVLaW5kOjpUeXBlSWR4ICYmICh3YXNtRnVuY3Rpb24gfHwgd2FzbVdyYXBw
ZXJGdW5jdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYXNtOjpTaWduYXR1
cmVJbmRleCBwYXJhbUluZGV4ID0gZ2xvYmFsLnR5cGUuaW5kZXg7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlSW5kZXggYXJnSW5kZXg7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHdhc21GdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJnSW5kZXggPSB3YXNtRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdJbmRleCA9IHdhc21XcmFwcGVyRnVuY3Rpb24tPnNpZ25hdHVyZUluZGV4KCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtSW5kZXggIT0gYXJnSW5kZXgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGNlcHRpb24oY3JlYXRlSlNX
ZWJBc3NlbWJseUxpbmtFcnJvcihnbG9iYWxPYmplY3QsIHZtLCBpbXBvcnRGYWlsTWVzc2FnZShp
bXBvcnQsICJpbXBvcnRlZCBnbG9iYWwiLCAiQXJndW1lbnQgZnVuY3Rpb24gZGlkIG5vdCBtYXRj
aCB0aGUgcmVmZXJlbmNlIHR5cGUiKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRHbG9iYWwoaW1w
b3J0LmtpbmRJbmRleCwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBl
S2luZDo6RXh0ZXJucmVmOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxUeXBl
LmlzTnVsbGFibGUoKSAmJiB2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXhjZXB0aW9uKGNyZWF0ZUpTV2ViQXNzZW1ibHlMaW5rRXJyb3IoZ2xvYmFs
T2JqZWN0LCB2bSwgaW1wb3J0RmFpbE1lc3NhZ2UoaW1wb3J0LCAiaW1wb3J0ZWQgZ2xvYmFsIiwg
Im11c3QgYmUgYSBub24tbnVsbCB2YWx1ZSIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBt
X2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldEdsb2JhbChpbXBvcnQua2luZEluZGV4LCB2YWx1ZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBXYXNtOjpUeXBlS2luZDo6STMyOgpAQCAtNDkwLDYgKzUyOCw3IEBAIHZvaWQgV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OmxpbmtJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBpCiAgICAgICAgICAgICBzd2l0Y2ggKGdsb2JhbC50eXBlLmtpbmQpIHsKICAgICAg
ICAgICAgIGNhc2UgV2FzbTo6VHlwZUtpbmQ6OkV4dGVybnJlZjoKICAgICAgICAgICAgIGNhc2Ug
V2FzbTo6VHlwZUtpbmQ6OkZ1bmNyZWY6CisgICAgICAgICAgICBjYXNlIFdhc206OlR5cGVLaW5k
OjpUeXBlSWR4OgogICAgICAgICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STMyOgogICAgICAg
ICAgICAgY2FzZSBXYXNtOjpUeXBlS2luZDo6STY0OgogICAgICAgICAgICAgY2FzZSBXYXNtOjpU
eXBlS2luZDo6RjMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2Fz
bS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDc5NDA5
MmI3NmRkNzBmNDcyNDM3Zjc2OWNhNDdiNDY0NWZmY2I4MDEuLjRmOGRkOWUzZDIxMzQzNTAwMDAw
NmUyNDE0NmIwMTk0YzlhYzg4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24K
QEAgLTEzLDYgKzEzLDggQEAKICAgICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50
NyIsICJ2YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKICAgICAgICAgImZ1
bmNyZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAi
QjM6OkludDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3Iiwg
InZhbHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCisgICAgICAgICJyZWZfbnVs
bCI6ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJ
bnQ2NCIgfSwKKyAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1
ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAg
eyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIg
fSwKICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAt
NjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ0eXBlX2lkeCI6ICB7ICJ0eXBl
IjogInZhcmludDciLCAidmFsdWUiOiAtMTI4LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4ZmZm
M2FiNzBmOGI0MDcyMDM0NmI0NzI1MDgzNDJkZjY5ZDBmMDQ1Li44ZDU3MmU0Njg5ZmM0ZDA0NTlj
MTNmYTBmYzkwZWZiMTUyZjE3NGUxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA2LTE0ICBBc3VtdSBU
YWtpa2F3YSAgPGFzdW11QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dBU00tRnVuY3Rpb24tUmVm
ZXJlbmNlc10gQWRkIHN1cHBvcnQgZm9yIChyZWYgbnVsbD8gJHQpIHR5cGUgY29uc3RydWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjI5Ngor
CisgICAgICAgIEFkZHMgYWRkaXRpb25hbCB0ZXN0cyBmb3IgdXNlcyBvZiBgKHJlZiAkdClgIGFu
ZCBgKHJlZiBudWxsICR0KWAKKyAgICAgICAgdHlwZXMsIGluY2x1ZGluZyB3aXRoIG5vbi1udWxs
IGV4dGVybi9mdW5jcmVmcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9yZWZfdHlwZXMuanM6IEFkZGVk
LgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAgKGFzeW5jIHRlc3RSZWZUeXBlTG9jYWwpOgor
ICAgICAgICAoYXN5bmMgdGVzdE5vbk51bGxSZWZUeXBlTG9jYWwpOgorICAgICAgICAoYXN5bmMg
dGVzdFJlZlR5cGVJblNpZ25hdHVyZSk6CisgICAgICAgIChhc3luYyB0ZXN0UmVmVHlwZVBhcmFt
Q2hlY2spOgorICAgICAgICAoYXN5bmMgdGVzdFJlZkdsb2JhbENoZWNrKToKKyAgICAgICAgKGFz
eW5jIHRlc3RFeHRlcm5GdW5jcmVmTm9uTnVsbENoZWNrKToKKyAgICAgICAgKGFzeW5jIHRlc3RF
eHRlcm5yZWZDb21wYXRpYmlsaXR5KToKKyAgICAgICAgKGFzeW5jIHRlc3ROb25OdWxsRXh0ZXJu
cmVmSW5jb21wYXRpYmxlKToKKyAgICAgICAgKGFzeW5jIHRlc3RGdW5jcmVmQ29tcGF0aWJpbGl0
eSk6CisgICAgICAgIChhc3luYyB0ZXN0Tm9uTnVsbEZ1bmNyZWZJbmNvbXBhdGlibGUpOgorICAg
ICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTA2LTI0ICBNaWtoYWlsIFIuIEdhZGVsaGEg
IDxtaWtoYWlsQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5za2lwIGFyZ3VtZW50cy1wcm9wZXJ0
aWVzLW9yZGVyLmpzIG9uIE1JUFMgCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24t
cmVmZXJlbmNlcy9yZWZfdHlwZXMuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNl
cy9yZWZfdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JhZjljMmM5OTFjYWIxMTU0MTc2NTY4YTA5MWNl
ODQxOWZlM2JlOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZl
cmVuY2VzL3JlZl90eXBlcy5qcwpAQCAtMCwwICsxLDMxNiBAQAorLy9AIHJ1bldlYkFzc2VtYmx5
U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcz10cnVlIikKK2lt
cG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiOworaW1wb3J0IHsgaW5zdGFudGlh
dGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMiOworCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMs
IHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxl
bmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgZm9yIChsZXQg
aSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdbaV0gPSBieXRlcy5jaGFy
Q29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7
Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3RSZWZUeXBlTG9jYWwoKSB7CisgIC8qCisgICAqICht
b2R1bGUKKyAgICogICAodHlwZSAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAg
KiAgIChmdW5jIChyZXN1bHQgKHJlZiBudWxsIDApKSAobG9jYWwgKHJlZiBudWxsIDApKQorICAg
KiAgICAgKGxvY2FsLmdldCAwKSkpCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
CisgICAgbW9kdWxlKAorICAgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgw
MVx4MGJceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDZjXHgwMFx4MDNceDAy
XHgwMVx4MDFceDBhXHgwOVx4MDFceDA3XHgwMVx4MDFceDZjXHgwMFx4MjBceDAwXHgwYiIKKyAg
ICApCisgICk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3ROb25OdWxsUmVmVHlwZUxvY2FsKCkg
eworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgKGZ1bmMgKHBhcmFtIGkzMikgKHJl
c3VsdCBpMzIpKSkKKyAgICogICAoZnVuYyAobG9jYWwgKHJlZiAwKSkpKQorICAgKi8KKyAgYXNz
ZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAorICAgICAgICAiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwOVx4MDJceDYwXHgwMVx4N2ZceDAxXHg3Zlx4
NjBceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDBhXHgwN1x4MDFceDA1XHgwMVx4MDFceDZiXHgw
MFx4MGIiCisgICAgICApLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAiRnVu
Y3Rpb24gbG9jYWxzIG11c3QgaGF2ZSBhIGRlZmF1bHRhYmxlIHR5cGUiCisgICk7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHRlc3RSZWZUeXBlSW5TaWduYXR1cmUoKSB7CisgIC8qCisgICAqIChtb2R1
bGUKKyAgICogICAoZWxlbSBkZWNsYXJlIGZ1bmNyZWYgKHJlZi5mdW5jICRmKSkKKyAgICogICAo
dHlwZSAkdDEgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICogICAodHlwZSAk
dDIgKGZ1bmMgKHBhcmFtKSAocmVzdWx0IChyZWYgJHQxKSkpKQorICAgKiAgIChmdW5jICRmICh0
eXBlICR0MSkgKGkzMi5jb25zdCAxKSkKKyAgICogICAoZnVuYyAkZyAodHlwZSAkdDIpIChyZWYu
ZnVuYyAkZikpKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAorICAgIG1vZHVs
ZSgKKyAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBiXHgwMlx4
NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4MDBceDAxXHg2Ylx4MDBceDAzXHgwM1x4MDJceDAwXHgw
MVx4MDlceDA1XHgwMVx4MDNceDAwXHgwMVx4MDBceDBhXHgwYlx4MDJceDA0XHgwMFx4NDFceDAx
XHgwYlx4MDRceDAwXHhkMlx4MDBceDBiXHgwMFx4MGVceDA0XHg2ZVx4NjFceDZkXHg2NVx4MDFc
eDA3XHgwMlx4MDBceDAxXHg2Nlx4MDFceDAxXHg2NyIKKyAgICApCisgICk7Cit9CisKK2FzeW5j
IGZ1bmN0aW9uIHRlc3RSZWZUeXBlUGFyYW1DaGVjaygpIHsKKyAgY29uc3Qgd2F0MSA9IGAKKyAg
ICAobW9kdWxlCisgICAgICAoZnVuYyAoZXhwb3J0ICJmIikgKHBhcmFtIGY2NCkgKHJlc3VsdCBm
NjQpCisgICAgICAgIChsb2NhbC5nZXQgMCkpKQorICAgIGA7CisKKyAgY29uc3QgaW5zdGFuY2Ux
ID0gYXdhaXQgaW5zdGFudGlhdGUod2F0MSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAg
ICh0eXBlICR0MSAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKQorICAgKiAgICh0eXBl
ICR0MiAoZnVuYyAocGFyYW0gKHJlZiAkdDEpKSAocmVzdWx0KSkpCisgICAqICAgKGZ1bmMgKGV4
cG9ydCAiZiIpICh0eXBlICR0MikpKQorICAgKi8KKyAgY29uc3QgbTIgPSBtb2R1bGUoCisgICAg
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGJceDAyXHg2MFx4MDFceDdm
XHgwMVx4N2ZceDYwXHgwMVx4NmJceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDA3XHgwNVx4MDFc
eDAxXHg2Nlx4MDBceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiIgorICApOworICBjb25zdCBp
bnN0YW5jZTIgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTIpOworCisgIC8qCisgICAqICht
b2R1bGUKKyAgICogICAodHlwZSAkdDEgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkK
KyAgICogICAodHlwZSAkdDIgKGZ1bmMgKHBhcmFtIChyZWYgbnVsbCAkdDEpKSAocmVzdWx0KSkp
CisgICAqICAgKGZ1bmMgKGV4cG9ydCAiZiIpICh0eXBlICR0MikpKQorICAgKi8KKyAgY29uc3Qg
bTMgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
MGJceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMVx4NmNceDAwXHgwMFx4MDNceDAyXHgw
MVx4MDFceDA3XHgwNVx4MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBi
IgorICApOworICBjb25zdCBpbnN0YW5jZTMgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTMp
OworCisgIGZvciAobGV0IGk9MDsgaTwxMDAwOyArK2kpIHsKKyAgICAvLyBUcmlnZ2VyIHRoZSBp
YyBwYXRoCisgICAgYXNzZXJ0LnRocm93cygKKyAgICAgICgpID0+IGluc3RhbmNlMi5leHBvcnRz
LmYobnVsbCksCisgICAgICBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsCisgICAgICAiRnVuY3Jl
ZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rpb24iCisgICAgKTsKKyAgICBhc3NlcnQu
dGhyb3dzKAorICAgICAgKCkgPT4gaW5zdGFuY2UyLmV4cG9ydHMuZihpbnN0YW5jZTEuZXhwb3J0
cy5mKSwKKyAgICAgIFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKKyAgICAgICJBcmd1bWVudCBm
dW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSByZWZlcmVuY2UgdHlwZSIKKyAgICApOworICAgIGlu
c3RhbmNlMy5leHBvcnRzLmYobnVsbCk7CisgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gdGVzdFJl
Zkdsb2JhbENoZWNrKCkgeworICBjb25zdCB3YXQgPSBgCisgICAgKG1vZHVsZQorICAgICAgKGds
b2JhbCAoZXhwb3J0ICJnIikgZnVuY3JlZiAocmVmLm51bGwgZnVuYykpCisgICAgICAoZnVuYyAo
ZXhwb3J0ICJmIikgKHBhcmFtIGY2NCkgKHJlc3VsdCBmNjQpCisgICAgICAgIChsb2NhbC5nZXQg
MCkpKQorICAgIGA7CisKKyAgY29uc3QgcHJvdmlkZXJJbnN0YW5jZSA9IGF3YWl0IGluc3RhbnRp
YXRlKAorICAgIHdhdCwKKyAgICB7fSwKKyAgICB7IHJlZmVyZW5jZV90eXBlczogdHJ1ZSB9Cisg
ICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChnbG9iYWwgKGV4cG9ydCAiZyIpICht
dXQgKHJlZiBmdW5jKSkgKHJlZi5mdW5jICRmKSkKKyAgICogICAoZnVuYyAkZikpCisgICAqLwor
ICBjb25zdCBtMSA9IG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHgwNFx4MDFceDYwXHgwMFx4MDBceDAzXHgwMlx4MDFceDAwXHgwNlx4MDdceDAxXHg2
Ylx4NzBceDAxXHhkMlx4MDBceDBiXHgwN1x4MDVceDAxXHgwMVx4NjdceDAzXHgwMFx4MGFceDA0
XHgwMVx4MDJceDAwXHgwYlx4MDBceDBiXHgwNFx4NmVceDYxXHg2ZFx4NjVceDAxXHgwNFx4MDFc
eDAwXHgwMVx4NjYiCisgICk7CisgIGNvbnN0IGluc3RhbmNlMSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtMSk7CisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4gKGluc3RhbmNlMS5leHBv
cnRzLmcudmFsdWUgPSBudWxsKSwKKyAgICBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsCisgICAg
IkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIgorICApOworCisgIC8q
CisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAoZnVuYykpCisgICAqICAgKGdsb2JhbCAoZXhw
b3J0ICJnIikgKG11dCAocmVmIDApKSAocmVmLmZ1bmMgJGYpKQorICAgKiAgIChmdW5jICRmICh0
eXBlIDApKSkKKyAgICovCisgIGNvbnN0IG0yID0gbW9kdWxlKAorICAgICJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA0XHgwMVx4NjBceDAwXHgwMFx4MDNceDAyXHgwMVx4
MDBceDA2XHgwN1x4MDFceDZiXHgwMFx4MDFceGQyXHgwMFx4MGJceDA3XHgwNVx4MDFceDAxXHg2
N1x4MDNceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiXHgwMFx4MGJceDA0XHg2ZVx4NjFceDZk
XHg2NVx4MDFceDA0XHgwMVx4MDBceDAxXHg2NiIKKyAgKTsKKyAgY29uc3QgaW5zdGFuY2UyID0g
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0yKTsKKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9
PiAoaW5zdGFuY2UyLmV4cG9ydHMuZy52YWx1ZSA9IG51bGwpLAorICAgIFdlYkFzc2VtYmx5LlJ1
bnRpbWVFcnJvciwKKyAgICAiRnVuY3JlZiBtdXN0IGJlIGFuIGV4cG9ydGVkIHdhc20gZnVuY3Rp
b24iCisgICk7CisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4gKGluc3RhbmNlMi5leHBvcnRz
LmcudmFsdWUgPSBwcm92aWRlckluc3RhbmNlLmV4cG9ydHMuZiksCisgICAgV2ViQXNzZW1ibHku
UnVudGltZUVycm9yLAorICAgICJBcmd1bWVudCBmdW5jdGlvbiBkaWQgbm90IG1hdGNoIHRoZSBy
ZWZlcmVuY2UgdHlwZSIKKyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKGltcG9y
dCAibSIgImciIChnbG9iYWwgKHJlZiBmdW5jKSkpKQorICAgKi8KKyAgY29uc3QgbTMgPSBtb2R1
bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMlx4MDlceDAxXHgw
MVx4NmRceDAxXHg2N1x4MDNceDZiXHg3MFx4MDAiCisgICk7CisgIGFzc2VydC50aHJvd3MoCisg
ICAgKCkgPT4KKyAgICAgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtMywgeyBtOiB7IGc6IHBy
b3ZpZGVySW5zdGFuY2UuZXhwb3J0cy5nIH0gfSksCisgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9y
LAorICAgICJpbXBvcnRlZCBnbG9iYWwgbTpnIG11c3QgYmUgYSBzYW1lIHR5cGUiCisgICk7CisK
KyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlIChmdW5jKSkKKyAgICogICAoaW1wb3J0
ICJtIiAiZyIgKGdsb2JhbCAocmVmIDApKSkpCisgICAqLworICBjb25zdCBtNCA9IG1vZHVsZSgK
KyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwNFx4MDFceDYwXHgw
MFx4MDBceDAyXHgwOVx4MDFceDAxXHg2ZFx4MDFceDY3XHgwM1x4NmJceDAwXHgwMCIKKyAgKTsK
KyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG00LCB7IG06IHsgZzogcHJvdmlkZXJJbnN0YW5jZS5leHBvcnRzLmcgfSB9KSwKKyAgICBX
ZWJBc3NlbWJseS5MaW5rRXJyb3IsCisgICAgImltcG9ydGVkIGdsb2JhbCBtOmcgbXVzdCBiZSBh
IHNhbWUgdHlwZSIKKyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKGltcG9ydCAi
bSIgImciIChnbG9iYWwgKHJlZiBleHRlcm4pKSkpCisgICAqLworICBjb25zdCBtNSA9IG1vZHVs
ZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAyXHgwOVx4MDFceDAx
XHg2ZFx4MDFceDY3XHgwM1x4NmJceDZmXHgwMCIKKyAgKTsKKyAgYXNzZXJ0LnRocm93cygKKyAg
ICAoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTUsIHsgbTogeyBnOiBudWxsIH0gfSks
CisgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICJpbXBvcnRlZCBnbG9iYWwgbTpnIG11
c3QgYmUgYSBub24tbnVsbCB2YWx1ZSIKKyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAq
ICAgKGdsb2JhbCAkZyAoaW1wb3J0ICJtIiAiZyIpIChtdXQgKHJlZiBleHRlcm4pKSkKKyAgICog
ICAoZnVuYyAoZ2xvYmFsLnNldCAkZyAocmVmLm51bGwgZXh0ZXJuKSkpKQorICAgKi8KKyAgYXNz
ZXJ0LnRocm93cygKKyAgICAoKSA9PiB7CisgICAgICBtb2R1bGUoCisgICAgICAgICJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA0XHgwMVx4NjBceDAwXHgwMFx4MDJceDA5
XHgwMVx4MDFceDZkXHgwMVx4NjdceDAzXHg2Ylx4NmZceDAxXHgwM1x4MDJceDAxXHgwMFx4MGFc
eDA4XHgwMVx4MDZceDAwXHhkMFx4NmZceDI0XHgwMFx4MGIiCisgICAgICApCisgICAgfSwKKyAg
ICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIldlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vz
bid0IHZhbGlkYXRlOiBzZXRfZ2xvYmFsIDAgd2l0aCB0eXBlIEV4dGVybnJlZiIKKyAgKTsKK30K
KworYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVybkZ1bmNyZWZOb25OdWxsQ2hlY2soKSB7CisgIC8q
CisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkdCAoZnVuYyAocGFyYW0gKHJlZiBleHRlcm4p
KSAocmVzdWx0KSkpCisgICAqICAgKGZ1bmMgKGV4cG9ydCAiZiIpICh0eXBlICR0KSkpCisgICAq
LworICBjb25zdCBtMSA9IG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHgwNlx4MDFceDYwXHgwMVx4NmJceDZmXHgwMFx4MDNceDAyXHgwMVx4MDBceDA3
XHgwNVx4MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4MDRceDAxXHgwMlx4MDBceDBiIgorICApOwor
ICBjb25zdCBpbnN0YW5jZTEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobTEpOworCisgIC8q
CisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkdCAoZnVuYyAocGFyYW0gKHJlZiBmdW5jKSkg
KHJlc3VsdCkpKQorICAgKiAgIChmdW5jIChleHBvcnQgImYiKSAodHlwZSAkdCkpKQorICAgKi8K
KyAgY29uc3QgbTIgPSBtb2R1bGUoCisgICAgIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4MDZceDAxXHg2MFx4MDFceDZiXHg3MFx4MDBceDAzXHgwMlx4MDFceDAwXHgwN1x4
MDVceDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDA0XHgwMVx4MDJceDAwXHgwYiIKKyAgKTsKKyAg
Y29uc3QgaW5zdGFuY2UyID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0yKTsKKworICBmb3Ig
KGxldCBpPTA7IGk8MTAwMDsgKytpKSB7CisgICAgLy8gVHJpZ2dlciB0aGUgaWMgcGF0aAorICAg
IGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9PiBpbnN0YW5jZTEuZXhwb3J0cy5mKG51bGwpLAor
ICAgICAgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAorICAgICAgIk5vbi1udWxsIEV4dGVybnJl
ZiBjYW5ub3QgYmUgbnVsbCIKKyAgICApOworICAgIGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9
PiBpbnN0YW5jZTIuZXhwb3J0cy5mKG51bGwpLAorICAgICAgV2ViQXNzZW1ibHkuUnVudGltZUVy
cm9yLAorICAgICAgIkZ1bmNyZWYgbXVzdCBiZSBhbiBleHBvcnRlZCB3YXNtIGZ1bmN0aW9uIgor
ICAgICk7CisgIH0KK30KKworLy8gRW5zdXJlIHR3byB3YXlzIG9mIHdyaXRpbmcgZXh0ZXJucmVm
IGFyZSBlcXVpdmFsZW50LgorYXN5bmMgZnVuY3Rpb24gdGVzdEV4dGVybnJlZkNvbXBhdGliaWxp
dHkoKSB7CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAodHlwZSAkdCAoZnVuYyAocGFyYW0g
ZXh0ZXJucmVmKSAocmVzdWx0IChyZWYgbnVsbCBleHRlcm4pKSkpCisgICAqICAgKGZ1bmMgJGYg
KHR5cGUgJHQpIChsb2NhbC5nZXQgMCkpKQorICAgKi8KKyAgbW9kdWxlKAorICAgICJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA3XHgwMVx4NjBceDAxXHg2Zlx4MDFceDZj
XHg2Zlx4MDNceDAyXHgwMVx4MDBceDBhXHgwNlx4MDFceDA0XHgwMFx4MjBceDAwXHgwYlx4MDBc
eDBiXHgwNFx4NmVceDYxXHg2ZFx4NjVceDAxXHgwNFx4MDFceDAwXHgwMVx4NjYiCisgICk7Cit9
CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3ROb25OdWxsRXh0ZXJucmVmSW5jb21wYXRpYmxlKCkgewor
ICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHR5cGUgJHQgKGZ1bmMgKHBhcmFtIGV4dGVybnJl
ZikgKHJlc3VsdCAocmVmIGV4dGVybikpKSkKKyAgICogICAoZnVuYyAkZiAodHlwZSAkdCkgKGxv
Y2FsLmdldCAwKSkpCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+CisgICAgICBt
b2R1bGUoCisgICAgICAgICJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDA3
XHgwMVx4NjBceDAxXHg2Zlx4MDFceDZiXHg2Zlx4MDNceDAyXHgwMVx4MDBceDBhXHgwNlx4MDFc
eDA0XHgwMFx4MjBceDAwXHgwYlx4MDBceDBiXHgwNFx4NmVceDYxXHg2ZFx4NjVceDAxXHgwNFx4
MDFceDAwXHgwMVx4NjYiCisgICAgICApLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwK
KyAgICAiY29udHJvbCBmbG93IHJldHVybnMgd2l0aCB1bmV4cGVjdGVkIHR5cGUuIEV4dGVybnJl
ZiIKKyAgKTsKK30KKworLy8gRW5zdXJlIHR3byB3YXlzIG9mIHdyaXRpbmcgZnVuY3JlZiBhcmUg
ZXF1aXZhbGVudC4KK2FzeW5jIGZ1bmN0aW9uIHRlc3RGdW5jcmVmQ29tcGF0aWJpbGl0eSgpIHsK
KyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgICh0eXBlICR0IChmdW5jIChwYXJhbSBmdW5jcmVm
KSAocmVzdWx0IChyZWYgbnVsbCBmdW5jKSkpKQorICAgKiAgIChmdW5jICRmICh0eXBlICR0KSAo
bG9jYWwuZ2V0IDApKSkKKyAgICovCisgIG1vZHVsZSgKKyAgICAiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHgwN1x4MDFceDYwXHgwMVx4NzBceDAxXHg2Y1x4NzBceDAzXHgw
Mlx4MDFceDAwXHgwYVx4MDZceDAxXHgwNFx4MDBceDIwXHgwMFx4MGJceDAwXHgwYlx4MDRceDZl
XHg2MVx4NmRceDY1XHgwMVx4MDRceDAxXHgwMFx4MDFceDY2IgorICApOworfQorCithc3luYyBm
dW5jdGlvbiB0ZXN0Tm9uTnVsbEZ1bmNyZWZJbmNvbXBhdGlibGUoKSB7CisgIC8qCisgICAqICht
b2R1bGUKKyAgICogICAodHlwZSAkdCAoZnVuYyAocGFyYW0gZnVuY3JlZikgKHJlc3VsdCAocmVm
IGZ1bmMpKSkpCisgICAqICAgKGZ1bmMgJGYgKHR5cGUgJHQpIChsb2NhbC5nZXQgMCkpKQorICAg
Ki8KKyAgYXNzZXJ0LnRocm93cygKKyAgICAoKSA9PgorICAgICAgbW9kdWxlKAorICAgICAgICAi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwN1x4MDFceDYwXHgwMVx4NzBc
eDAxXHg2Ylx4NzBceDAzXHgwMlx4MDFceDAwXHgwYVx4MDZceDAxXHgwNFx4MDBceDIwXHgwMFx4
MGJceDAwXHgwYlx4MDRceDZlXHg2MVx4NmRceDY1XHgwMVx4MDRceDAxXHgwMFx4MDFceDY2Igor
ICAgICAgKSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgImNvbnRyb2wgZmxv
dyByZXR1cm5zIHdpdGggdW5leHBlY3RlZCB0eXBlLiBGdW5jcmVmIgorICApOworfQorCithc3Nl
cnQuYXN5bmNUZXN0KHRlc3RSZWZUeXBlTG9jYWwoKSk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RO
b25OdWxsUmVmVHlwZUxvY2FsKCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0UmVmVHlwZUluU2ln
bmF0dXJlKCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0UmVmVHlwZVBhcmFtQ2hlY2soKSk7Cith
c3NlcnQuYXN5bmNUZXN0KHRlc3RSZWZHbG9iYWxDaGVjaygpKTsKK2Fzc2VydC5hc3luY1Rlc3Qo
dGVzdEV4dGVybkZ1bmNyZWZOb25OdWxsQ2hlY2soKSk7Cithc3NlcnQuYXN5bmNUZXN0KHRlc3RF
eHRlcm5yZWZDb21wYXRpYmlsaXR5KCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0Tm9uTnVsbEV4
dGVybnJlZkluY29tcGF0aWJsZSgpKTsKK2Fzc2VydC5hc3luY1Rlc3QodGVzdEZ1bmNyZWZDb21w
YXRpYmlsaXR5KCkpOworYXNzZXJ0LmFzeW5jVGVzdCh0ZXN0Tm9uTnVsbEZ1bmNyZWZJbmNvbXBh
dGlibGUoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93
YXNtL3dhc20uanNvbgppbmRleCA3OTQwOTJiNzZkZDcwZjQ3MjQzN2Y3NjljYTQ3YjQ2NDVmZmNi
ODAxLi40ZjhkZDllM2QyMTM0MzUwMDAwMDZlMjQxNDZiMDE5NGM5YWM4OGYxIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAg
LTEzLDYgKzEzLDggQEAKICAgICAgICAgImY2NCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAgLTQsICJiM3R5cGUiOiAiQjM6OkRvdWJsZSIgfSwKICAgICAgICAgImZ1bmNy
ZWYiOiAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMTYsICJiM3R5cGUiOiAiQjM6
OkludDY0IiB9LAogICAgICAgICAiZXh0ZXJucmVmIjogeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZh
bHVlIjogIC0xNywgImIzdHlwZSI6ICJCMzo6SW50NjQiIH0sCisgICAgICAgICJyZWZfbnVsbCI6
ICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTIwLCAiYjN0eXBlIjogIkIzOjpJbnQ2
NCIgfSwKKyAgICAgICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6
ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAi
dHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwK
ICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNjQs
ICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ0eXBlX2lkeCI6ICB7ICJ0eXBlIjog
InZhcmludDciLCAidmFsdWUiOiAtMTI4LCAiYjN0eXBlIjogIkIzOjpJbnQ2NCIgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>