<?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>222903</bug_id>
          
          <creation_ts>2021-03-08 04:16:52 -0800</creation_ts>
          <short_desc>[WASM-Function-References] Add call_ref instruction</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="Dmitry">dbezhetskov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <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>1737026</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-03-08 04:16:52 -0800</bug_when>
    <thetext>[WASM-Function-References] Add call_ref instruction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737027</commentid>
    <comment_count>1</comment_count>
      <attachid>422554</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-03-08 04:21:09 -0800</bug_when>
    <thetext>Created attachment 422554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737031</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-08 04:38:03 -0800</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>1738350</commentid>
    <comment_count>3</comment_count>
      <attachid>422898</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-03-10 20:38:22 -0800</bug_when>
    <thetext>Created attachment 422898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738361</commentid>
    <comment_count>4</comment_count>
      <attachid>422902</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-03-10 22:58:45 -0800</bug_when>
    <thetext>Created attachment 422902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739169</commentid>
    <comment_count>5</comment_count>
      <attachid>422902</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-13 12:22:53 -0800</bug_when>
    <thetext>Comment on attachment 422902
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        Implementation is similar to the call_indirect.

Can you describe what is the difference? We need detailed information about what this does in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739313</commentid>
    <comment_count>6</comment_count>
      <attachid>423144</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-03-15 00:12:56 -0700</bug_when>
    <thetext>Created attachment 423144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739378</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-15 05:17:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/75426211&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1741944</commentid>
    <comment_count>8</comment_count>
      <attachid>423144</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-03-19 16:07:02 -0700</bug_when>
    <thetext>Comment on attachment 423144
Patch

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

The code looks good, but I think we should dedupe the code.

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:3509
&gt; +    // Do a context switch if needed.
&gt; +    {
&gt; +        auto targetInstance = g64();
&gt; +        append(Move, Arg::addr(calleeFunction, WebAssemblyFunctionBase::offsetOfInstance()), targetInstance);
&gt; +
&gt; +        BasicBlock* doContextSwitch = m_code.addBlock();
&gt; +        BasicBlock* continuation = m_code.addBlock();
&gt; +
&gt; +        append(Branch64, Arg::relCond(MacroAssembler::Equal), targetInstance, instanceValue());
&gt; +        m_currentBlock-&gt;setSuccessors(continuation, doContextSwitch);
&gt; +
&gt; +        auto* patchpoint = addPatchpoint(B3::Void);
&gt; +        patchpoint-&gt;effects.writesPinned = true;
&gt; +        // We pessimistically assume we&apos;re calling something with BoundsChecking memory.
&gt; +        // FIXME: We shouldn&apos;t have to do this: https://bugs.webkit.org/show_bug.cgi?id=172181
&gt; +        patchpoint-&gt;clobber(PinnedRegisterInfo::get().toSave(MemoryMode::BoundsChecking));
&gt; +        patchpoint-&gt;clobber(RegisterSet::macroScratchRegisters());
&gt; +        patchpoint-&gt;numGPScratchRegisters = Gigacage::isEnabled(Gigacage::Primitive) ? 1 : 0;
&gt; +
&gt; +        patchpoint-&gt;setGenerator([=] (CCallHelpers&amp; jit, const B3::StackmapGenerationParams&amp; params) {
&gt; +            AllowMacroScratchRegisterUsage allowScratch(jit);
&gt; +            GPRReg targetInstance = params[0].gpr();
&gt; +            GPRReg oldContextInstance = params[1].gpr();
&gt; +            const PinnedRegisterInfo&amp; pinnedRegs = PinnedRegisterInfo::get();
&gt; +            GPRReg baseMemory = pinnedRegs.baseMemoryPointer;
&gt; +            ASSERT(targetInstance != baseMemory);
&gt; +            jit.loadPtr(CCallHelpers::Address(oldContextInstance, Instance::offsetOfCachedStackLimit()), baseMemory);
&gt; +            jit.storePtr(baseMemory, CCallHelpers::Address(targetInstance, Instance::offsetOfCachedStackLimit()));
&gt; +            jit.storeWasmContextInstance(targetInstance);
&gt; +            // FIXME: We should support more than one memory size register
&gt; +            //   see: https://bugs.webkit.org/show_bug.cgi?id=162952
&gt; +            ASSERT(pinnedRegs.boundsCheckingSizeRegister != targetInstance);
&gt; +            GPRReg scratchOrBoundsCheckingSize = Gigacage::isEnabled(Gigacage::Primitive) ? params.gpScratch(0) : pinnedRegs.boundsCheckingSizeRegister;
&gt; +
&gt; +            jit.loadPtr(CCallHelpers::Address(targetInstance, Instance::offsetOfCachedBoundsCheckingSize()), pinnedRegs.boundsCheckingSizeRegister); // Bound checking size.
&gt; +            jit.loadPtr(CCallHelpers::Address(targetInstance, Instance::offsetOfCachedMemory()), baseMemory); // Memory::void*.
&gt; +
&gt; +            jit.cageConditionally(Gigacage::Primitive, baseMemory, pinnedRegs.boundsCheckingSizeRegister, scratchOrBoundsCheckingSize);
&gt; +        });
&gt; +
&gt; +        emitPatchpoint(doContextSwitch, patchpoint, Tmp(), targetInstance, instanceValue());
&gt; +        append(doContextSwitch, Jump);
&gt; +        doContextSwitch-&gt;setSuccessors(continuation);
&gt; +
&gt; +        m_currentBlock = continuation;
&gt; +    }
&gt; +
&gt; +    append(Move, Arg::addr(calleeCode), calleeCode);
&gt; +
&gt; +    Vector&lt;ConstrainedTmp&gt; extraArgs;
&gt; +    extraArgs.append(calleeCode);
&gt; +
&gt; +    for (unsigned i = 0; i &lt; signature.returnCount(); ++i)
&gt; +        results.append(tmpForType(signature.returnType(i)));
&gt; +
&gt; +    auto* patchpoint = emitCallPatchpoint(m_currentBlock, signature, results, args, WTFMove(extraArgs));
&gt; +
&gt; +    // We need to clobber all potential pinned registers since we might be leaving the instance.
&gt; +    // We pessimistically assume we&apos;re always calling something that is bounds checking so
&gt; +    // because the wasm-&gt;wasm thunk unconditionally overrides the size registers.
&gt; +    // FIXME: We should not have to do this, but the wasm-&gt;wasm stub assumes it can
&gt; +    // use all the pinned registers as scratch: https://bugs.webkit.org/show_bug.cgi?id=172181
&gt; +
&gt; +    patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave(MemoryMode::BoundsChecking));
&gt; +
&gt; +    patchpoint-&gt;setGenerator([=] (CCallHelpers&amp; jit, const B3::StackmapGenerationParams&amp; params) {
&gt; +        AllowMacroScratchRegisterUsage allowScratch(jit);
&gt; +        jit.call(params[params.proc().resultCount(params.value()-&gt;type())].gpr(), WasmEntryPtrTag);
&gt; +    });
&gt; +
&gt; +    // The call could have been to another WebAssembly instance, and / or could have modified our Memory.
&gt; +    restoreWebAssemblyGlobalState(RestoreCachedStackLimit::Yes, m_info.memory, currentInstance, m_currentBlock);
&gt; +
&gt; +    return { };

I think large part of this code is the same to addCallIndirect one, can you dedupe them by extracting this part?

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:2722
&gt; +    // Do a context switch if needed.
&gt; +    {
&gt; +        Value* offset = constant(pointerType(), safeCast&lt;int32_t&gt;(WebAssemblyFunctionBase::offsetOfInstance()));
&gt; +        Value* targetInstance = m_currentBlock-&gt;appendNew&lt;MemoryValue&gt;(m_proc, Load, pointerType(), origin(),
&gt; +            m_currentBlock-&gt;appendNew&lt;Value&gt;(m_proc, Add, origin(), callableFunction, offset));
&gt; +        BasicBlock* continuation = m_proc.addBlock();
&gt; +        BasicBlock* doContextSwitch = m_proc.addBlock();
&gt; +
&gt; +        Value* isSameContextInstance = m_currentBlock-&gt;appendNew&lt;Value&gt;(m_proc, Equal, origin(),
&gt; +            targetInstance, instanceValue());
&gt; +        m_currentBlock-&gt;appendNewControlValue(m_proc, B3::Branch, origin(),
&gt; +            isSameContextInstance, FrequentedBlock(continuation), FrequentedBlock(doContextSwitch));
&gt; +
&gt; +        PatchpointValue* patchpoint = doContextSwitch-&gt;appendNew&lt;PatchpointValue&gt;(m_proc, B3::Void, origin());
&gt; +        patchpoint-&gt;effects.writesPinned = true;
&gt; +        // We pessimistically assume we&apos;re calling something with BoundsChecking memory.
&gt; +        // FIXME: We shouldn&apos;t have to do this: https://bugs.webkit.org/show_bug.cgi?id=172181
&gt; +        patchpoint-&gt;clobber(PinnedRegisterInfo::get().toSave(MemoryMode::BoundsChecking));
&gt; +        patchpoint-&gt;clobber(RegisterSet::macroScratchRegisters());
&gt; +        patchpoint-&gt;append(targetInstance, ValueRep::SomeRegister);
&gt; +        patchpoint-&gt;append(instanceValue(), ValueRep::SomeRegister);
&gt; +        patchpoint-&gt;numGPScratchRegisters = Gigacage::isEnabled(Gigacage::Primitive) ? 1 : 0;
&gt; +
&gt; +        patchpoint-&gt;setGenerator([=] (CCallHelpers&amp; jit, const B3::StackmapGenerationParams&amp; params) {
&gt; +            AllowMacroScratchRegisterUsage allowScratch(jit);
&gt; +            GPRReg targetInstance = params[0].gpr();
&gt; +            GPRReg oldContextInstance = params[1].gpr();
&gt; +            const PinnedRegisterInfo&amp; pinnedRegs = PinnedRegisterInfo::get();
&gt; +            GPRReg baseMemory = pinnedRegs.baseMemoryPointer;
&gt; +            ASSERT(targetInstance != baseMemory);
&gt; +            jit.loadPtr(CCallHelpers::Address(oldContextInstance, Instance::offsetOfCachedStackLimit()), baseMemory);
&gt; +            jit.storePtr(baseMemory, CCallHelpers::Address(targetInstance, Instance::offsetOfCachedStackLimit()));
&gt; +            jit.storeWasmContextInstance(targetInstance);
&gt; +            ASSERT(pinnedRegs.boundsCheckingSizeRegister != baseMemory);
&gt; +            // FIXME: We should support more than one memory size register
&gt; +            //   see: https://bugs.webkit.org/show_bug.cgi?id=162952
&gt; +            ASSERT(pinnedRegs.boundsCheckingSizeRegister != targetInstance);
&gt; +            GPRReg scratchOrBoundsCheckingSize = Gigacage::isEnabled(Gigacage::Primitive) ? params.gpScratch(0) : pinnedRegs.boundsCheckingSizeRegister;
&gt; +
&gt; +            jit.loadPtr(CCallHelpers::Address(targetInstance, Instance::offsetOfCachedBoundsCheckingSize()), pinnedRegs.boundsCheckingSizeRegister); // Memory size.
&gt; +            jit.loadPtr(CCallHelpers::Address(targetInstance, Instance::offsetOfCachedMemory()), baseMemory); // Memory::void*.
&gt; +
&gt; +            jit.cageConditionally(Gigacage::Primitive, baseMemory, pinnedRegs.boundsCheckingSizeRegister, scratchOrBoundsCheckingSize);
&gt; +        });
&gt; +        doContextSwitch-&gt;appendNewControlValue(m_proc, Jump, origin(), continuation);
&gt; +
&gt; +        m_currentBlock = continuation;
&gt; +    }
&gt; +
&gt; +    ExpressionType calleeCode = m_currentBlock-&gt;appendNew&lt;MemoryValue&gt;(m_proc, Load, pointerType(), origin(),
&gt; +        m_currentBlock-&gt;appendNew&lt;MemoryValue&gt;(m_proc, Load, pointerType(), origin(), callableFunction,
&gt; +            safeCast&lt;int32_t&gt;(WebAssemblyFunction::offsetOfEntrypointLoadLocation())));
&gt; +
&gt; +    B3::Type returnType = toB3ResultType(&amp;signature);
&gt; +    ExpressionType callResult = createCallPatchpoint(m_currentBlock, origin(), signature, args,
&gt; +        scopedLambdaRef&lt;void(PatchpointValue*)&gt;([=] (PatchpointValue* patchpoint) -&gt; void {
&gt; +            patchpoint-&gt;effects.writesPinned = true;
&gt; +            patchpoint-&gt;effects.readsPinned = true;
&gt; +            // We need to clobber all potential pinned registers since we might be leaving the instance.
&gt; +            // We pessimistically assume we&apos;re always calling something that is bounds checking so
&gt; +            // because the wasm-&gt;wasm thunk unconditionally overrides the size registers.
&gt; +            // FIXME: We should not have to do this, but the wasm-&gt;wasm stub assumes it can
&gt; +            // use all the pinned registers as scratch: https://bugs.webkit.org/show_bug.cgi?id=172181
&gt; +            patchpoint-&gt;clobberLate(PinnedRegisterInfo::get().toSave(MemoryMode::BoundsChecking));
&gt; +
&gt; +            patchpoint-&gt;append(calleeCode, ValueRep::SomeRegister);
&gt; +            patchpoint-&gt;setGenerator([=] (CCallHelpers&amp; jit, const B3::StackmapGenerationParams&amp; params) {
&gt; +                AllowMacroScratchRegisterUsage allowScratch(jit);
&gt; +                jit.call(params[params.proc().resultCount(returnType)].gpr(), WasmEntryPtrTag);
&gt; +            });
&gt; +        }));
&gt; +
&gt; +    switch (returnType.kind()) {
&gt; +    case B3::Void: {
&gt; +        break;
&gt; +    }
&gt; +    case B3::Tuple: {
&gt; +        const Vector&lt;B3::Type&gt;&amp; tuple = m_proc.tupleForType(returnType);
&gt; +        for (unsigned i = 0; i &lt; signature.returnCount(); ++i)
&gt; +            results.append(m_currentBlock-&gt;appendNew&lt;ExtractValue&gt;(m_proc, origin(), tuple[i], callResult, i));
&gt; +        break;
&gt; +    }
&gt; +    default: {
&gt; +        results.append(callResult);
&gt; +        break;
&gt; +    }
&gt; +    }
&gt; +
&gt; +    // The call could have been to another WebAssembly instance, and / or could have modified our Memory.
&gt; +    restoreWebAssemblyGlobalState(RestoreCachedStackLimit::Yes, m_info.memory, instanceValue(), m_proc, m_currentBlock);
&gt; +
&gt; +    return { };
&gt; +}

I think large part of this is duplicate to addCallIndirect. Can you extract this and dedupe the code?

&gt; Source/JavaScriptCore/wasm/WasmFunctionParser.h:1255
&gt; +        const SignatureIndex calleeSignatureIndex = reinterpret_cast&lt;SignatureIndex&gt;(m_expressionStack.last().type().index);

We do not need to have reinterpret_cast since Type::index is SignatureIndex

&gt; Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:518
&gt; +    WebAssemblyFunction* wasmFunction = jsCast&lt;WebAssemblyFunction*&gt;(referenceAsObject);
&gt; +    Wasm::Instance* targetInstance = &amp;wasmFunction-&gt;instance()-&gt;instance();
&gt; +
&gt; +    if (targetInstance != instance)
&gt; +        targetInstance-&gt;setCachedStackLimit(instance-&gt;cachedStackLimit());
&gt; +
&gt; +    const Wasm::WasmToWasmImportableFunction&amp; function = wasmFunction-&gt;importableFunction();
&gt; +    WASM_CALL_RETURN(targetInstance, function.entrypointLoadLocation-&gt;executableAddress(), WasmEntryPtrTag);

Why don&apos;t we need to perform signature check here? If it is not necessary, can you insert ASSERT that ensures the signature is correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746458</commentid>
    <comment_count>9</comment_count>
      <attachid>425008</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-04-02 05:03:17 -0700</bug_when>
    <thetext>Created attachment 425008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746478</commentid>
    <comment_count>10</comment_count>
      <attachid>425016</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-04-02 06:57:47 -0700</bug_when>
    <thetext>Created attachment 425016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746905</commentid>
    <comment_count>11</comment_count>
      <attachid>425016</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 00:10:25 -0700</bug_when>
    <thetext>Comment on attachment 425016
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:3351
&gt; +    // Note: call indirect can call either WebAssemblyFunction or WebAssemblyWrapperFunction. Because

call-indirect =&gt; call-ref.

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:3358
&gt; +    append(Move, Arg::addr(calleeFunction, WebAssemblyFunction::offsetOfEntrypointLoadLocation()), calleeCode); // Pointer to callee code.

WebAssemblyFunction::offsetOfEntrypointLoadLocation is only valid for WebAssemblyFunction. But the above comment is mentioning to WebAssemblyWrapperFunction.
If this is WebAssemblyWrapperFunction, then WebAssemblyFunction::offsetOfEntrypointLoadLocation() is not correct? Can you check?
And can you add a test for both cases?

&gt; Source/JavaScriptCore/wasm/WasmAirIRGenerator.cpp:3405
&gt;              jit.cageConditionallyAndUntag(Gigacage::Primitive, baseMemory, pinnedRegs.boundsCheckingSizeRegister, scratch);

Let&apos;s rename newContextInstance =&gt; calleeInstance

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:912
&gt; +            AllowMacroScratchRegisterUsage allowScratch(jit);
&gt; +            GPRReg newContextInstance = params[0].gpr();
&gt; +            GPRReg oldContextInstance = params[1].gpr();
&gt; +            const PinnedRegisterInfo&amp; pinnedRegs = PinnedRegisterInfo::get();
&gt; +            GPRReg baseMemory = pinnedRegs.baseMemoryPointer;
&gt; +            ASSERT(newContextInstance != baseMemory);
&gt; +            jit.loadPtr(CCallHelpers::Address(oldContextInstance, Instance::offsetOfCachedStackLimit()), baseMemory);
&gt; +            jit.storePtr(baseMemory, CCallHelpers::Address(newContextInstance, Instance::offsetOfCachedStackLimit()));
&gt; +            jit.storeWasmContextInstance(newContextInstance);
&gt; +            ASSERT(pinnedRegs.boundsCheckingSizeRegister != baseMemory);
&gt; +            // FIXME: We should support more than one memory size register
&gt; +            //   see: https://bugs.webkit.org/show_bug.cgi?id=162952
&gt; +            ASSERT(pinnedRegs.boundsCheckingSizeRegister != newContextInstance);
&gt; +            GPRReg scratch = params.gpScratch(0);
&gt; +
&gt; +            jit.loadPtr(CCallHelpers::Address(newContextInstance, Instance::offsetOfCachedBoundsCheckingSize()), pinnedRegs.boundsCheckingSizeRegister); // Memory size.
&gt; +            jit.loadPtr(CCallHelpers::Address(newContextInstance, Instance::offsetOfCachedMemory()), baseMemory); // Memory::void*.
&gt; +
&gt; +            jit.cageConditionallyAndUntag(Gigacage::Primitive, baseMemory, pinnedRegs.boundsCheckingSizeRegister, scratch);

Rename newContextInstance =&gt; calleeInstance.

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:2641
&gt; +            safeCast&lt;int32_t&gt;(WebAssemblyFunction::offsetOfEntrypointLoadLocation())));

Ditto.

&gt; Source/JavaScriptCore/wasm/WasmFunctionParser.h:1252
&gt; +    case CallRef: {

We need feature flag (`false` currently) for this. Like,

WASM_PARSER_FAIL_IF(!Options::useWebAssemblyFunctionReferences(), &quot;function references are not enabled&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746906</commentid>
    <comment_count>12</comment_count>
      <attachid>425016</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 00:11:01 -0700</bug_when>
    <thetext>Comment on attachment 425016
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:2631
&gt; +    // WebAssemblyWrapperFunction is like calling into the embedder, we conservatively assume all call indirects

call indirect =&gt; call ref.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746907</commentid>
    <comment_count>13</comment_count>
      <attachid>425016</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-05 00:13:10 -0700</bug_when>
    <thetext>Comment on attachment 425016
Patch

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

&gt; Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:511
&gt; +    WebAssemblyFunction* wasmFunction = jsCast&lt;WebAssemblyFunction*&gt;(referenceAsObject);

Isn&apos;t it possible that we get WebAssemblyWrapperFunction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752172</commentid>
    <comment_count>14</comment_count>
      <attachid>425016</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-20 01:34:35 -0700</bug_when>
    <thetext>Comment on attachment 425016
Patch

Setting r- since it is reviewed and several issues exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755338</commentid>
    <comment_count>15</comment_count>
      <attachid>427337</attachid>
    <who name="Dmitry">dbezhetskov</who>
    <bug_when>2021-04-29 03:46:19 -0700</bug_when>
    <thetext>Created attachment 427337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756138</commentid>
    <comment_count>16</comment_count>
      <attachid>427337</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-05-03 03:35:32 -0700</bug_when>
    <thetext>Comment on attachment 427337
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756141</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-03 04:00:53 -0700</bug_when>
    <thetext>Committed r276896 (237242@main): &lt;https://commits.webkit.org/237242@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427337.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422554</attachid>
            <date>2021-03-08 04:21:09 -0800</date>
            <delta_ts>2021-03-10 20:38:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222903-20210308192108.patch</filename>
            <type>text/plain</type>
            <size>36287</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTUyN2U1YmQ5YTQyN2UyNzk2MjIxZTQwOGI3YTUyZDY1YWE5NTMyLi5jOTMxYThkNTE1ZWEzNjAy
YzAwMWQ0N2U2ZjhlZTNkMTAwZWQ5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wMy0wOCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxs
X3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbGxfcmVmIGluc3RydWN0aW9uIGZyb20gdHlwZWQg
ZnVuY3Rpb24KKyAgICAgICAgcmVmZXJlbmNlcyBwcm9wb3NhbDogaHR0cHM6Ly9naXRodWIuY29t
L1dlYkFzc2VtYmx5L2Z1bmN0aW9uLXJlZmVyZW5jZXMvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2Z1
bmN0aW9uLXJlZmVyZW5jZXMvT3ZlcnZpZXcubWQuCisgICAgICAgIEltcGxlbWVudGF0aW9uIGlz
IHNpbWlsYXIgdG8gdGhlIGNhbGxfaW5kaXJlY3QuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUxpc3QucmI6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAg
ICogcnVudGltZS9HYXRlLmg6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAg
ICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsUmVmKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
OgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRDYWxsUmVm
KToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZG9XYXNtQ2FsbFJlZik6CisgICAgICAgIChKU0M6OkxMSW50OjpXQVNNX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuaDoKKyAgICAgICAgKiB3YXNtL3dh
c20uanNvbjoKKwogMjAyMS0wMy0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzQwNDEuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4
YzliYmJhMTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4xMGZiMDdiZjhiNWQ3YWQ0YTdkNzJj
MjIwY2M2MjI3MTk2OTg1YzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0NzQsNiArMTQ3NCw4IEBAIG9wIDp3YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHMKIG9wIDp3
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3Jl
Zgorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RscwogCiBlbmRfc2VjdGlv
biA6TmF0aXZlSGVscGVycwogCkBAIC0xNjg2LDYgKzE2ODgsMjIgQEAgb3AgOmNhbGxfaW5kaXJl
Y3Rfbm9fdGxzLAogICAgICAgICB0YWJsZUluZGV4OiB1bnNpZ25lZCwKICAgICB9CiAKK29wIDpj
YWxsX3JlZiwKKyAgICBhcmdzOiB7CisgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0dWFs
UmVnaXN0ZXIsCisgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgc3Rh
Y2tPZmZzZXQ6IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQs
CisgICAgfQorCitvcCA6Y2FsbF9yZWZfbm9fdGxzLAorICAgIGFyZ3M6IHsKKyAgICAgICAgZnVu
Y3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2lnbmF0dXJlSW5kZXg6
IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQsCisgICAgICAgIG51bWJl
ck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICB9CisKIG9wIDpjdXJyZW50X21lbW9yeSwKICAg
ICBhcmdzOiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGFjYTAwZGU0ZjY1MWY5NGVh
NDhjOTRjNjg1OTllYTVkMjdlZGJjMTIuLjQ4ZTI1YzU0MWY5ZmE5ODg5MjY2YzQ3OWJhMDg2NDlh
MGM1MTJhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTM2OCw2ICszNjgsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgSQogICAgIGNh
c2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHM6CiAgICAgY2FzZSB3YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgogICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21f
Y2FsbF9pbmRpcmVjdF9ub190bHM6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxs
X3JlZjoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RsczoKICAg
ICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgfQogICAgIHJldHVybiBDYW5ub3RDb21w
aWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IDM1Yjg2MDhmOWY2ODhjMmE3MDNjNjlmMDE1NDJjOTVmOTBiZmQ1NmIu
LmY0ZGYyOGNjY2QwODA2NWQyNjYyNzY2MWU0NjM4NjAxNTVjODk5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI1
MDMsNiArMjUwMyw4IEBAIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsOgogX3dhc21fdHJhbXBv
bGluZV93YXNtX2NhbGxfbm9fdGxzOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJl
Y3Q6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHM6Citfd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9yZWY6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZf
bm9fdGxzOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfd2lkZTE2OgogX3dhc21fdHJhbXBv
bGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUxNjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxs
X2luZGlyZWN0X3dpZGUxNjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1i
bHkuYXNtCmluZGV4IDU1MTdiMjU3NzI4ZmQ1NGRmNzQzY2Q5MmM5YTI3M2NjNmNhMTdmMjkuLjRm
ZWZmN2U1MGUzOTdmYWU5Zjg5ZjM2ZWE4M2RjYjk5NDQyNDdmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtODc3LDYgKzg3NywxNCBAQCB3YXNt
T3AoY2FsbF9pbmRpcmVjdF9ub190bHMsIFdhc21DYWxsSW5kaXJlY3ROb1RscywgbWFjcm8oY3R4
KQogICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9pbmRp
cmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3
YXNtSW5zdGFuY2UgZW5kKQogZW5kKQogCit3YXNtT3AoY2FsbF9yZWYsIFdhc21DYWxsUmVmLCBt
YWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9j
YWxsX3JlZiwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKword2FzbU9wKGNhbGxfcmVm
X25vX3RscywgV2FzbUNhbGxSZWZOb1RscywgbWFjcm8oY3R4KQorICAgIHNsb3dQYXRoRm9yV2Fz
bUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9yZWZfbm9fdGxzLCBtYWNybyh0YXJnZXRJ
bnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkKK2VuZCkKKwog
d2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwgbWFjcm8oY3R4KQogICAg
IGxvYWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFuY2VdLCB0MAogICAgIGxv
YWRwIFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2F0ZS5oCmluZGV4IDQ2OTcxNWY5NjNhMjg0ZjYxZjI2MTBhODdlNWE4MDdiNTU0MmU4MDMu
LmY2YTA1YjA2NWUzMmQ4YWVjZDU2N2JmNmFiNzRhYWU2Mzg5OTc3NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKICAgICB2KHdh
c21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCiAgICAgdih3YXNtX2Nh
bGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2KHdhc21f
Y2FsbF9yZWYsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX3JlZl9u
b190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAogCiAjZWxzZQogI2RlZmluZSBKU0NfV0FT
TV9HQVRFX09QQ09ERVModikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDQ0MzhhNTY4NTIyMDAwNjhmMmE4Njc4MGI2NjBiZTVm
NDNmMmY3OTYuLmMxZjZmYTRlNTUxZGViZjMzMTZlYzAzODI5OWQwMzlmZDQ5MmFkNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApA
QCAtMzI1LDYgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0
IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJl
c3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRp
cmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CiAgICAgQjM6OlBhdGNo
cG9pbnRWYWx1ZSogV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRDYWxsUGF0Y2hwb2ludChCYXNpY0Js
b2NrKiwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgUmVzdWx0TGlzdCYgcmVzdWx0cywgY29uc3Qg
VmVjdG9yPFR5cGVkVG1wPiYgYXJncywgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiYmIGV4dHJhQXJn
cyA9IHsgfSk7CiAKQEAgLTM0MTcsNiArMzQxOCw5NyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjph
ZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWdu
YQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYo
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBFeHByZXNzaW9u
VHlwZSBjYWxsZWVGdW5jdGlvbiA9IGFyZ3MudGFrZUxhc3QoKTsKKyAgICBtX21ha2VzQ2FsbHMg
PSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwgaW5kaXJlY3QgY2FuIGNhbGwgZWl0aGVyIFdlYkFz
c2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1c2UKKyAg
ICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50byB0aGUg
ZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVjdHMKKyAg
ICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2FsY3VsYXRp
b24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51bUpTQ2Fs
bEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CisKKyAgICBh
dXRvIGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgpOworICAgIGFwcGVuZChNb3ZlLCBpbnN0YW5jZVZh
bHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2Rl
ID0gZzY0KCk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsZWVGdW5jdGlvbiwgV2Vi
QXNzZW1ibHlGdW5jdGlvbjo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCkpLCBjYWxs
ZWVDb2RlKTsgLy8gUG9pbnRlciB0byBjYWxsZWUgY29kZS4KKworICAgIC8vIERvIGEgY29udGV4
dCBzd2l0Y2ggaWYgbmVlZGVkLgorICAgIHsKKyAgICAgICAgYXV0byB0YXJnZXRJbnN0YW5jZSA9
IGc2NCgpOworICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxlZUZ1bmN0aW9uLCBX
ZWJBc3NlbWJseUZ1bmN0aW9uQmFzZTo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgdGFyZ2V0SW5zdGFu
Y2UpOworCisgICAgICAgIEJhc2ljQmxvY2sqIGRvQ29udGV4dFN3aXRjaCA9IG1fY29kZS5hZGRC
bG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX2NvZGUuYWRkQmxv
Y2soKTsKKworICAgICAgICBhcHBlbmQoQnJhbmNoNjQsIEFyZzo6cmVsQ29uZChNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwpLCB0YXJnZXRJbnN0YW5jZSwgaW5zdGFuY2VWYWx1ZSgpKTsKKyAgICAgICAg
bV9jdXJyZW50QmxvY2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uLCBkb0NvbnRleHRTd2l0
Y2gpOworCisgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQYXRjaHBvaW50KEIzOjpWb2lk
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAg
ICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5n
IHdpdGggQm91bmRzQ2hlY2tpbmcgbWVtb3J5LgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjE4MQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5m
bzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gR2lnYWNhZ2U6Omlz
RW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IDEgOiAwOworCisgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIEdQUlJlZyB0
YXJnZXRJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBvbGRD
b250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBjb25zdCBQaW5u
ZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwor
ICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2lu
dGVyOworICAgICAgICAgICAgQVNTRVJUKHRhcmdldEluc3RhbmNlICE9IGJhc2VNZW1vcnkpOwor
ICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJ
bnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9y
eSk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHRhcmdldEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0
KCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5zdGFuY2UodGFyZ2V0SW5z
dGFuY2UpOworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhh
biBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKKyAgICAgICAgICAgIC8vICAgc2VlOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgICAgICAgICBBU1NF
UlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSB0YXJnZXRJbnN0YW5j
ZSk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2ln
YWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2go
MCkgOiBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworCisgICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGFyZ2V0SW5zdGFuY2UsIEluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3Vu
ZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIEJvdW5kIGNoZWNraW5nIHNpemUuCisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGFyZ2V0SW5zdGFuY2UsIElu
c3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6
dm9pZCouCisKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJp
bWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
LCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOworICAgICAgICB9KTsKKworICAgICAgICBl
bWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9pbnQsIFRtcCgpLCB0YXJnZXRJ
bnN0YW5jZSwgaW5zdGFuY2VWYWx1ZSgpKTsKKyAgICAgICAgYXBwZW5kKGRvQ29udGV4dFN3aXRj
aCwgSnVtcCk7CisgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+c2V0U3VjY2Vzc29ycyhjb250aW51
YXRpb24pOworCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgIH0K
KworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2FsbGVlQ29kZSksIGNhbGxlZUNvZGUpOwor
CisgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBleHRyYUFyZ3M7CisgICAgZXh0cmFBcmdzLmFw
cGVuZChjYWxsZWVDb2RlKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1
cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICByZXN1bHRzLmFwcGVuZCh0bXBGb3JUeXBl
KHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpKSk7CisKKyAgICBhdXRvKiBwYXRjaHBvaW50ID0gZW1p
dENhbGxQYXRjaHBvaW50KG1fY3VycmVudEJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFyZ3Ms
IFdURk1vdmUoZXh0cmFBcmdzKSk7CisKKyAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBv
dGVudGlhbCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGlu
c3RhbmNlLgorICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgYWx3YXlzIGNh
bGxpbmcgc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nIHNvCisgICAgLy8gYmVjYXVz
ZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRoZSBzaXpl
IHJlZ2lzdGVycy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBoYXZlIHRvIGRvIHRoaXMs
IGJ1dCB0aGUgd2FzbS0+d2FzbSBzdHViIGFzc3VtZXMgaXQgY2FuCisgICAgLy8gdXNlIGFsbCB0
aGUgcGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisKKyAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5u
ZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykp
OworCisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAg
IGppdC5jYWxsKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50KHBhcmFtcy52YWx1ZSgp
LT50eXBlKCkpXS5ncHIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKKyAgICB9KTsKKworICAgIC8vIFRo
ZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBh
bmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCisgICAgcmVzdG9yZVdlYkFz
c2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6OlllcywgbV9pbmZvLm1l
bW9yeSwgY3VycmVudEluc3RhbmNlLCBtX2N1cnJlbnRCbG9jayk7CisKKyAgICByZXR1cm4geyB9
OworfQorCiB2b2lkIEFpcklSR2VuZXJhdG9yOjp1bmlmeShjb25zdCBFeHByZXNzaW9uVHlwZSBk
c3QsIGNvbnN0IEV4cHJlc3Npb25UeXBlIHNvdXJjZSkKIHsKICAgICBBU1NFUlQoaXNTdWJ0eXBl
KHNvdXJjZS50eXBlKCksIGRzdC50eXBlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA4MDA5MmQ5YzcxMzkzZDQyZTM2ZDYz
ZDY3OTBkN2JhZjRhYzU1YWQ4Li4wOTY1MzdkZTI5NGJiNTJiZTM4MTcwZDk0YzRjNjhkZjQ3OTA2
YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwCkBAIC0yODUsNiArMjg1LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxzCiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0
TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRk
Q2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiwg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKICAgICBC
Mzo6VmFsdWUqIGNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqLCBPcmlnaW4sIGNvbnN0
IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIGNvbnN0IFNjb3BlZExh
bWJkYTx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPiYgcGF0Y2hwb2ludEZ1bmN0b3IpOwogCkBAIC0y
NjE3LDYgKzI2MTgsMTA5IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVu
c2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0CiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1
bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgbV9tYWtlc0NhbGxzID0gdHJ1ZTsKKyAgICAv
LyBOb3RlOiBjYWxsIGluZGlyZWN0IGNhbiBjYWxsIGVpdGhlciBXZWJBc3NlbWJseUZ1bmN0aW9u
IG9yIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBCZWNhdXNlCisgICAgLy8gV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24gaXMgbGlrZSBjYWxsaW5nIGludG8gdGhlIGVtYmVkZGVyLCB3ZSBj
b25zZXJ2YXRpdmVseSBhc3N1bWUgYWxsIGNhbGwgaW5kaXJlY3RzCisgICAgLy8gY2FuIGJlIHRv
IHRoZSBlbWJlZGRlciBmb3Igb3VyIHN0YWNrIGNoZWNrIGNhbGN1bGF0aW9uLgorICAgIG1fbWF4
TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1KU0NhbGxBcmd1bWVudHMsIHN0
YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOworICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxhYmxlRnVuY3Rpb24gPSBhcmdzLnRha2VMYXN0KCk7CisKKyAgICAvLyBEbyBhIGNvbnRleHQg
c3dpdGNoIGlmIG5lZWRlZC4KKyAgICB7CisgICAgICAgIFZhbHVlKiBvZmZzZXQgPSBjb25zdGFu
dChwb2ludGVyVHlwZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihXZWJBc3NlbWJseUZ1bmN0aW9uQmFz
ZTo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSk7CisgICAgICAgIFZhbHVlKiB0YXJnZXRJbnN0YW5jZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgb3JpZ2luKCksCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIG9mZnNl
dCkpOworICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX3Byb2MuYWRkQmxvY2so
KTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9wcm9jLmFkZEJsb2Nr
KCk7CisKKyAgICAgICAgVmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAorICAgICAgICAg
ICAgdGFyZ2V0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CisgICAgICAgIG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBvcmlnaW4oKSwK
KyAgICAgICAgICAgIGlzU2FtZUNvbnRleHRJbnN0YW5jZSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRp
bnVhdGlvbiksIEZyZXF1ZW50ZWRCbG9jayhkb0NvbnRleHRTd2l0Y2gpKTsKKworICAgICAgICBQ
YXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBkb0NvbnRleHRTd2l0Y2gtPmFwcGVuZE5ldzxQ
YXRjaHBvaW50VmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAvLyBXZSBwZXNz
aW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5nIHdpdGggQm91bmRzQ2hl
Y2tpbmcgbWVtb3J5LgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8g
dGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZl
KE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKHRhcmdldEluc3RhbmNlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IEdp
Z2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyAxIDogMDsKKworICAgICAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAg
ICBHUFJSZWcgdGFyZ2V0SW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICBH
UFJSZWcgb2xkQ29udGV4dEluc3RhbmNlID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICAgICAg
Y29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZv
OjpnZXQoKTsKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNl
TWVtb3J5UG9pbnRlcjsKKyAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRJbnN0YW5jZSAhPSBiYXNl
TWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhv
bGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSks
IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksIENDYWxs
SGVscGVyczo6QWRkcmVzcyh0YXJnZXRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVk
U3RhY2tMaW1pdCgpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNl
KHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0No
ZWNraW5nU2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKKyAg
ICAgICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyOTUyCisgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1Np
emVSZWdpc3RlciAhPSB0YXJnZXRJbnN0YW5jZSk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRj
aE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJp
bWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5n
U2l6ZVJlZ2lzdGVyOworCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3ModGFyZ2V0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNr
aW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIE1l
bW9yeSBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHRhcmdldEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VN
ZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgorCisgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1f
cHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBjb250aW51YXRpb247CisgICAgfQorCisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVl
Q29kZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9h
ZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksCisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCks
IGNhbGxhYmxlRnVuY3Rpb24sCisgICAgICAgICAgICBzYWZlQ2FzdDxpbnQzMl90PihXZWJBc3Nl
bWJseUZ1bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSkpKTsKKworICAg
IEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlwZSgmc2lnbmF0dXJlKTsKKyAgICBF
eHByZXNzaW9uVHlwZSBjYWxsUmVzdWx0ID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQobV9jdXJyZW50
QmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCisgICAgICAgIHNjb3BlZExhbWJkYVJl
Zjx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPihbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCkgLT4gdm9pZCB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5l
ZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBp
bm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCisg
ICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGFsd2F5cyBjYWxs
aW5nIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZyBzbworICAgICAgICAgICAgLy8g
YmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRo
ZSBzaXplIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhh
dmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4KKyAg
ICAgICAgICAgIC8vIHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMgYXMgc2NyYXRjaDogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUo
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKworICAgICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAg
ICAgICAgICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5U
eXBlKV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSkpOworCisgICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkgeworICAgIGNhc2UgQjM6OlZv
aWQ6IHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQjM6OlR1cGxlOiB7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9jLnR1cGxlRm9yVHlwZShy
ZXR1cm5UeXBlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHVwbGVbaV0s
IGNhbGxSZXN1bHQsIGkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsK
KyAgICAgICAgcmVzdWx0cy5hcHBlbmQoY2FsbFJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBX
ZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVt
b3J5LgorICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFj
a0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1
cnJlbnRCbG9jayk7CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIEIzSVJHZW5lcmF0b3I6
OnVuaWZ5KGNvbnN0IEV4cHJlc3Npb25UeXBlIHBoaSwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291
cmNlKQogewogICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihtX3By
b2MsIG9yaWdpbigpLCBzb3VyY2UsIHBoaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGRmMGUxY2FmMzA1NjI0Njc3NmUwMzM5N2Qy
YWFiMWM5ZDI4ZTE1MzMuLmJjMWZlMzdmZGFmZjVjYmZmMzAwNjdiZGMyNjJiNmQ4NDYyMmMxZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
CkBAIC0xMjQ4LDYgKzEyNDgsMzYgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JF
QVRFX0NBU0UpCiAKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CisKKyAgICBjYXNlIENhbGxS
ZWY6IHsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9leHByZXNzaW9uU3RhY2su
bGFzdCgpLnR5cGUoKS5pc1R5cGVJZHgoKSwgIm5vbi1mdW5jcmVmIGNhbGxfcmVmIHZhbHVlICIs
IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkua2luZCk7CisKKyAgICAgICAgY29uc3Qg
U2lnbmF0dXJlSW5kZXggY2FsbGVlU2lnbmF0dXJlSW5kZXggPSByZWludGVycHJldF9jYXN0PFNp
Z25hdHVyZUluZGV4PihtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmluZGV4KTsKKyAg
ICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1h
dGlvbjo6Z2V0KGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50
Q291bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBj
YWxsZWUncyB2YWx1ZS4KKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50
ID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhwZWN0cyAiLCBhcmd1bWVu
dENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBo
b2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CisKKyAgICAgICAg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiBhcmdzOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFhcmdzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50ICsgMSksICJjYW4ndCBhbGxv
Y2F0ZSBlbm91Z2ggbWVtb3J5IGZvciAiLCBhcmd1bWVudENvdW50LCAiIGNhbGxfaW5kaXJlY3Qg
YXJndW1lbnRzIik7CisgICAgICAgIHNpemVfdCBmaXJzdEFyZ3VtZW50SW5kZXggPSBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCkgLSBhcmd1bWVudENvdW50OworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gZmlyc3RBcmd1bWVudEluZGV4OyBpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5h
dChpKTsKKyAgICAgICAgICAgIGlmIChpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gMSkK
KyAgICAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZy50eXBlKCkgIT0gY2Fs
bGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpLCAiYXJndW1lbnQg
dHlwZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAi
LCBleHBlY3RlZCAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJ
bmRleCkua2luZCk7CisgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOworICAg
ICAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7CisgICAgICAgIH0KKyAg
ICAgICAgbV9leHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CisKKyAg
ICAgICAgUmVzdWx0TGlzdCByZXN1bHRzOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVY
VChhZGRDYWxsUmVmKGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0cykpOworCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsg
KytpKQorICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNh
bGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKwogICAgIGNhc2UgQmxvY2s6IHsKICAgICAgICAgQmxvY2tTaWduYXR1
cmUgaW5saW5lU2lnbmF0dXJlOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUJs
b2NrU2lnbmF0dXJlKG1faW5mbywgaW5saW5lU2lnbmF0dXJlKSwgImNhbid0IGdldCBibG9jaydz
IHNpZ25hdHVyZSIpOwpAQCAtMTczOSw2ICsxNzY5LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxD
b250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAg
ICAgLy8gbm8gaW1tZWRpYXRlIGNhc2VzCiAgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AoQ1JF
QVRFX0NBU0UpCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfQ0FTRSkKKyAgICBj
YXNlIENhbGxSZWY6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIE5vcDoKICAgICBj
YXNlIFJldHVybjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwCmluZGV4IDUzN2VlNTY1MjBlZDU4NDMwMWY0ODIwNDk2MmNmMjc4NmJkYjM0
ZmQuLmNlMjliNjhmOTgxMDQ1YmNjNjM2MWIyMTIxOWY0ZDAzMWVkZjJjNmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMjUz
LDYgKzI1Myw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25h
dHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1
bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CiAKICAgICB2b2lkIGRpZEZpbmlz
aFBhcnNpbmdMb2NhbHMoKTsKQEAgLTExMDIsNiArMTEwMywyMSBAQCBhdXRvIExMSW50R2VuZXJh
dG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJl
JiBzaWduYQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENh
bGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4m
IGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBFeHBy
ZXNzaW9uVHlwZSBjYWxsZWUgPSBhcmdzLnRha2VMYXN0KCk7CisKKyAgICBMTEludENhbGxJbmZv
cm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKHNpZ25hdHVyZSk7CisgICAg
dW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVudHMsIGFyZ3MpOworICAgIGlmIChDb250
ZXh0Ojp1c2VGYXN0VExTKCkpCisgICAgICAgIFdhc21DYWxsUmVmOjplbWl0KHRoaXMsIGNhbGxl
ZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0
LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgIGVsc2UKKyAgICAgICAgV2FzbUNh
bGxSZWZOb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUo
c2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRz
KTsKKyAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CisKKyAgICByZXR1cm4geyB9Owor
fQorCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFs
dWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1
bHQgPSBwdXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMu
Y3BwCmluZGV4IGE2MWQwY2M3ZmYzMjlkYjVkNjE5NGVlNjg1YmQ1MjkxOWNiY2Q0NTkuLmY1YmZi
YzE5MzUxYmE1YTRjYTkxN2I3Nzc2NjQ1MTFiNjkyYzYwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVk
ZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5j
bHVkZSAiV2FzbUJCUVBsYW4uaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCkBAIC00MCw2ICs0
MSw3IEBACiAjaW5jbHVkZSAiV2FzbU9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0
dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgorI2luY2x1ZGUgIldlYkFz
c2VtYmx5RnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAK
QEAgLTQ5OCw2ICs1MDAsMzggQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX2luZGlyZWN0X25v
X3RscykKICAgICByZXR1cm4gZG9XYXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2Us
IGZ1bmN0aW9uSW5kZXgsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9z
aWduYXR1cmVJbmRleCk7CiB9CiAKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZG9XYXNtQ2Fs
bFJlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBKU1Zh
bHVlIHRhcmdldFJlZmVyZW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKwor
ICAgIEFTU0VSVCh0YXJnZXRSZWZlcmVuY2UuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIHJl
ZmVyZW5jZUFzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0UmVmZXJlbmNlKTsKKyAg
ICBBU1NFUlQocmVmZXJlbmNlQXNPYmplY3QtPmluaGVyaXRzPFdlYkFzc2VtYmx5RnVuY3Rpb24+
KGluc3RhbmNlLT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSkpOworCisgICAgV2ViQXNzZW1ibHlG
dW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5RnVuY3Rpb24qPihyZWZl
cmVuY2VBc09iamVjdCk7CisgICAgV2FzbTo6SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlID0gJndh
c21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKTsKKworICAgIGlmICh0YXJnZXRJbnN0
YW5jZSAhPSBpbnN0YW5jZSkKKyAgICAgICAgdGFyZ2V0SW5zdGFuY2UtPnNldENhY2hlZFN0YWNr
TGltaXQoaW5zdGFuY2UtPmNhY2hlZFN0YWNrTGltaXQoKSk7CisKKyAgICBjb25zdCBXYXNtOjpX
YXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uJiBmdW5jdGlvbiA9IHdhc21GdW5jdGlvbi0+aW1w
b3J0YWJsZUZ1bmN0aW9uKCk7CisgICAgV0FTTV9DQUxMX1JFVFVSTih0YXJnZXRJbnN0YW5jZSwg
ZnVuY3Rpb24uZW50cnlwb2ludExvYWRMb2NhdGlvbi0+ZXhlY3V0YWJsZUFkZHJlc3MoKSwgV2Fz
bUVudHJ5UHRyVGFnKTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZikKK3sKKyAg
ICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmLCBXYXNtT3Bjb2RlVHJhaXRz
PigpOworICAgIEpTVmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5zdHJ1
Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJu
IGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlKTsKK30KKworV0FT
TV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZl9ub190bHMpCit7CisgICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtQ2FsbFJlZk5vVGxzLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIEpT
VmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5zdHJ1Y3Rpb24ubV9mdW5j
dGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGxS
ZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlKTsKK30KKwogV0FTTV9TTE9XX1BBVEhf
REVDTChzZXRfZ2xvYmFsX3JlZikKIHsKICAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdh
c21TZXRHbG9iYWxSZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKaW5kZXggZjhhYWNhMDhkMzEyODg0YWYxN2JjYmJiNzdi
NzZkZWJmNDY1ZDMyYS4uNWIyYjhmMjg5NWExZTZjODJmNDA5ZjZlNWU4NmNjZGYwZmQ1MDRiMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApAQCAtNzYsNiAr
NzYsOCBAQCBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsKTsKIFdBU01fU0xPV19QQVRI
X0hJRERFTl9ERUNMKGNhbGxfbm9fdGxzKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNh
bGxfaW5kaXJlY3QpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRpcmVjdF9u
b190bHMpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9yZWYpOworV0FTTV9TTE9X
X1BBVEhfSElEREVOX0RFQ0woY2FsbF9yZWZfbm9fdGxzKTsKIFdBU01fU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNldF9nbG9iYWxfcmVmKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHNldF9n
bG9iYWxfcmVmX3BvcnRhYmxlX2JpbmRpbmcpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
bWVtb3J5X2F0b21pY193YWl0MzIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmlu
ZGV4IDJhNzI4N2Q5NjA5MDAwMTlmZGExMWNkNjc0ZjJhMDFiMmRiZjE1ODguLjc5NDA5MmI3NmRk
NzBmNDcyNDM3Zjc2OWNhNDdiNDY0NWZmY2I4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93
YXNtLmpzb24KQEAgLTg1LDYgKzg1LDcgQEAKICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJleHR0YWJsZSIsICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtd
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgi
LCAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdt
ZW50IHRvIHplcm8iLCAiZXh0ZW5kZWRPcCI6IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAg
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJu
IjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwi
XSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9u
X2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRz
IGluZGV4IiB9LAogICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5Ijog
ImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1
aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRl
c2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNp
Z25hdHVyZSIgfSwKKyAgICAgICAgImNhbGxfcmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6
ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMy
LmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNl
dCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1l
bW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJt
ZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWlu
dDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2Ny
aXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6
IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0s
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAg
ICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBlNDZk
MDBlMjQyMTA4ZTkyNGUxYTdkNDdiZWFiYTczNGIxYjQ1M2JkLi40NWUyNTUzN2E3Y2ZkMTQwZjgy
NGMxMTk5NWMwNGMxNTIwMWI4YzkzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAzLTA4ICBEbWl0cnkg
QmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dBU00tRnVu
Y3Rpb24tUmVmZXJlbmNlc10gQWRkIGNhbGxfcmVmIGluc3RydWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5MDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlciBiYXNpYyBjYWxsX3JlZiB0
ZXN0IGNhc2VzIC0gY3Jvc3MtaW5zdGFuY2UgY2FsbAorICAgICAgICBhbmQgc2FtZS1pbnN0YW5j
ZSBjYWxsLgorCisgICAgICAgICogd2FzbS55YW1sOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24t
cmVmZXJlbmNlcy9jYWxsX3JlZi5qczogQWRkZWQuCisgICAgICAgIChtb2R1bGUpOgorICAgICAg
ICAoYXN5bmMgYmFzaWNzKToKKyAgICAgICAgKGFzeW5jIGluZGlyZWN0Q2FsbCk6CisgICAgICAg
ICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMDMtMDYgIEFsZXhleSBTaHZheWthICA8c2h2YWlr
YWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvciBzaG91bGQgYmUg
aW5saW5lZCBpbiBERkcgLyBGVEwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS55YW1sIGIvSlNU
ZXN0cy93YXNtLnlhbWwKaW5kZXggZjU2NjM3ZDhjNDBmNTFmYWNhNjViM2E3NDJkODFiZGZlODYz
MTI5My4uMmFhMGU0Nzk3ZmU1MTliYmM4OTQwNmZmN2Q4ZTNlN2E4ZDllYmFmZSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlhbWwKQEAgLTMzLDYgKzMz
LDggQEAKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRz
CiAtIHBhdGg6IHdhc20vcmVmZXJlbmNlcwogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5s
ZXNzIHBhcnNlUnVuQ29tbWFuZHMKKy0gcGF0aDogd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzCisg
IGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRo
OiB3YXNtL2Z1enoKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNv
bW1hbmRzCiAtIHBhdGg6IHdhc20vbG93RXhlY3V0YWJsZU1lbW9yeQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanMgYi9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZDEzYzVmNWJmMjE1
MWEwNzdhNzlhNWE4YzM5NjFlMmJkOWZhM2MyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanMKQEAgLTAsMCArMSw1OCBAQAorLy9A
IHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJl
bmNlcz10cnVlIikKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1w
b3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMiOworCitmdW5jdGlv
biBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVy
KTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdb
aV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJ1ZmZlcik7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGJhc2ljcygpIHsKKyAgLyoKKyAg
KG1vZHVsZQorICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgJGZvbykpCisgICAg
KGZ1bmMgJGZvbyAocGFyYW0gJHggaTMyKSAocmVzdWx0IGkzMikKKyAgICAgIChpMzIuYWRkIChs
b2NhbC5nZXQgJHgpCisgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDE5KQorICAgICAgKQorICAg
ICkKKyAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIpCisgICAgICAoY2FsbF9y
ZWYgKGkzMi5jb25zdCAxMCkgKHJlZi5mdW5jICRmb28pKQorICAgICkKKyAgKQorICAqLworICBs
ZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NjBceDAxXHg3Zlx4MDFceDdmXHg2
MFx4MDBceDAxXHg3Zlx4MDNceDAzXHgwMlx4MDBceDAxXHgwN1x4MDhceDAxXHgwNFx4NmRceDYx
XHg2OVx4NmVceDAwXHgwMVx4MDlceDA1XHgwMVx4MDNceDAwXHgwMVx4MDBceDBhXHgxMVx4MDJc
eDA3XHgwMFx4MjBceDAwXHg0MVx4MTNceDZhXHgwYlx4MDdceDAwXHg0MVx4MGFceGQyXHgwMFx4
MTRceDBiIikpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDI5KTsKK30K
KworYXN5bmMgZnVuY3Rpb24gaW5kaXJlY3RDYWxsKCkgeworICBsZXQgd2F0ID0gYAorICAobW9k
dWxlCisgICAgKGZ1bmMgKGV4cG9ydCAiYmFyIikgKHBhcmFtICR4IGkzMikgKHJlc3VsdCBpMzIp
CisgICAgICAoaTMyLmFkZCAobG9jYWwuZ2V0ICR4KQorICAgICAgICAgICAgICAgKGkzMi5jb25z
dCAxOSkpCisgICAgKQorICApYDsKKyAgY29uc3QgYmFyUHJvdmlkZXIgPSBhd2FpdCBpbnN0YW50
aWF0ZSh3YXQsIHt9LCB7cmVmZXJlbmNlX3R5cGVzOiB0cnVlfSk7CisKKyAgLyoKKyAgKG1vZHVs
ZQorICAgIChpbXBvcnQgImV4cG9ydHMiICJiYXIiIChmdW5jICRiYXIgKHBhcmFtIGkzMikgKHJl
c3VsdCBpMzIpKSkKKyAgICAoZWxlbSBkZWNsYXJlIGZ1bmNyZWYgKHJlZi5mdW5jICRiYXIpKQor
ICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgIChjYWxsX3JlZiAo
aTMyLmNvbnN0IDEwKSAocmVmLmZ1bmMgJGJhcikpCisgICAgKQorICApCisgICovCisgIGxldCBp
bnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKKyAgICBtb2R1bGUoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDFceDdmXHgwMVx4N2Zc
eDYwXHgwMFx4MDFceDdmXHgwMlx4MGZceDAxXHgwN1x4NjVceDc4XHg3MFx4NmZceDcyXHg3NFx4
NzNceDAzXHg2Mlx4NjFceDcyXHgwMFx4MDBceDAzXHgwMlx4MDFceDAxXHgwN1x4MDhceDAxXHgw
NFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MDlceDA1XHgwMVx4MDNceDAwXHgwMVx4MDBceDBh
XHgwOVx4MDFceDA3XHgwMFx4NDFceDBhXHhkMlx4MDBceDE0XHgwYiIpLAorICAgIGJhclByb3Zp
ZGVyKTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigpLCAyOSk7Cit9CisKK2Fz
c2VydC5hc3luY1Rlc3QoYmFzaWNzKCkpOworYXNzZXJ0LmFzeW5jVGVzdChpbmRpcmVjdENhbGwo
KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dh
c20uanNvbgppbmRleCAyYTcyODdkOTYwOTAwMDE5ZmRhMTFjZDY3NGYyYTAxYjJkYmYxNTg4Li43
OTQwOTJiNzZkZDcwZjQ3MjQzN2Y3NjljYTQ3YjQ2NDVmZmNiODAxIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTg1LDYg
Kzg1LDcgQEAKICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJl
eHR0YWJsZSIsICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgiLCAgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdtZW50IHRvIHplcm8iLCAiZXh0
ZW5kZWRPcCI6IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29y
eSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAg
ICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAogICAgICAg
ICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFs
dWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
InRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogImNhbGwg
YSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKKyAgICAg
ICAgImNhbGxfcmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZh
bHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxs
IGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAg
IHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImkz
MiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFy
dWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAg
ImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVl
IjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJv
ZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJv
bSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnki
OiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAg
ICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZh
cnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJk
ZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422898</attachid>
            <date>2021-03-10 20:38:22 -0800</date>
            <delta_ts>2021-03-10 22:58:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222903-20210311113820.patch</filename>
            <type>text/plain</type>
            <size>36619</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTUyN2U1YmQ5YTQyN2UyNzk2MjIxZTQwOGI3YTUyZDY1YWE5NTMyLi5jOTMxYThkNTE1ZWEzNjAy
YzAwMWQ0N2U2ZjhlZTNkMTAwZWQ5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wMy0wOCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxs
X3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbGxfcmVmIGluc3RydWN0aW9uIGZyb20gdHlwZWQg
ZnVuY3Rpb24KKyAgICAgICAgcmVmZXJlbmNlcyBwcm9wb3NhbDogaHR0cHM6Ly9naXRodWIuY29t
L1dlYkFzc2VtYmx5L2Z1bmN0aW9uLXJlZmVyZW5jZXMvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2Z1
bmN0aW9uLXJlZmVyZW5jZXMvT3ZlcnZpZXcubWQuCisgICAgICAgIEltcGxlbWVudGF0aW9uIGlz
IHNpbWlsYXIgdG8gdGhlIGNhbGxfaW5kaXJlY3QuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUxpc3QucmI6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAg
ICogcnVudGltZS9HYXRlLmg6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAg
ICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsUmVmKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
OgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRDYWxsUmVm
KToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZG9XYXNtQ2FsbFJlZik6CisgICAgICAgIChKU0M6OkxMSW50OjpXQVNNX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuaDoKKyAgICAgICAgKiB3YXNtL3dh
c20uanNvbjoKKwogMjAyMS0wMy0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzQwNDEuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4
YzliYmJhMTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4xNjQxMDFmZWNlMDQyNmEwMDJmZjVh
NDdhMWMwMjRiODk0NjY0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0NzQsNiArMTQ3NCw4IEBAIG9wIDp3YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHMKIG9wIDp3
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3Jl
Zgorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RscwogCiBlbmRfc2VjdGlv
biA6TmF0aXZlSGVscGVycwogCkBAIC0xNDk1LDYgKzE0OTcsOCBAQCBvcCA6Y2FsbF9yZXR1cm5f
bG9jYXRpb24KIG9wIDpjYWxsX25vX3Rsc19yZXR1cm5fbG9jYXRpb24KIG9wIDpjYWxsX2luZGly
ZWN0X3JldHVybl9sb2NhdGlvbgogb3AgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzX3JldHVybl9sb2Nh
dGlvbgorb3AgOmNhbGxfcmVmX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfcmVmX25vX3Rsc19y
ZXR1cm5fbG9jYXRpb24KIAogIyBGSVhNRTogV2FzbSBhbmQgSlMgTExJbnQgc2hvdWxkIHNoYXJl
IGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM2NTYKQEAgLTE2ODYsNiArMTY5MCwyMiBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHMs
CiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOmNhbGxfcmVmLAor
ICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDog
dW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICB9CisK
K29wIDpjYWxsX3JlZl9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvblJlZmVy
ZW5jZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQs
CisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZTdGFja0Fy
Z3M6IHVuc2lnbmVkLAorICAgIH0KKwogb3AgOmN1cnJlbnRfbWVtb3J5LAogICAgIGFyZ3M6IHsK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYWNhMDBkZTRmNjUxZjk0ZWE0OGM5NGM2ODU5
OWVhNWQyN2VkYmMxMi4uNDhlMjVjNTQxZjlmYTk4ODkyNjZjNDc5YmEwODY0OWEwYzUxMmFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MzY4LDYgKzM2OCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSB3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX25vX3RsczoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfaW5kaXJlY3Q6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmOgorICAg
IGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzOgogICAgICAgICByZXR1
cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggMzViODYwOGY5ZjY4OGMyYTcwM2M2OWYwMTU0MmM5NWY5MGJmZDU2Yi4uZjRkZjI4Y2Nj
ZDA4MDY1ZDI2NjI3NjYxZTQ2Mzg2MDE1NWM4OTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjUwMyw2ICsyNTAz
LDggQEAgX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGw6CiBfd2FzbV90cmFtcG9saW5lX3dhc21f
Y2FsbF9ub190bHM6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKIF93YXNt
X3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3RsczoKK193YXNtX3RyYW1wb2xpbmVf
d2FzbV9jYWxsX3JlZjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHM6CiBf
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF93aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21f
Y2FsbF9ub190bHNfd2lkZTE2OgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rf
d2lkZTE2OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2Vt
Ymx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KaW5k
ZXggNTUxN2IyNTc3MjhmZDU0ZGY3NDNjZDkyYzlhMjczY2M2Y2ExN2YyOS4uNGZlZmY3ZTUwZTM5
N2ZhZTlmODlmMzZlYTgzZGNiOTk0NDI0N2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC04NzcsNiArODc3LDE0IEBAIHdhc21PcChjYWxsX2lu
ZGlyZWN0X25vX3RscywgV2FzbUNhbGxJbmRpcmVjdE5vVGxzLCBtYWNybyhjdHgpCiAgICAgc2xv
d1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rs
cywgbWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0YW5j
ZSBlbmQpCiBlbmQpCiAKK3dhc21PcChjYWxsX3JlZiwgV2FzbUNhbGxSZWYsIG1hY3JvKGN0eCkK
KyAgICBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfcmVmLCBz
dG9yZVdhc21JbnN0YW5jZVRvVExTKQorZW5kKQorCit3YXNtT3AoY2FsbF9yZWZfbm9fdGxzLCBX
YXNtQ2FsbFJlZk5vVGxzLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgs
IF9zbG93X3BhdGhfd2FzbV9jYWxsX3JlZl9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBt
b3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQorZW5kKQorCiB3YXNtT3AoY3Vy
cmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBtYWNybyhjdHgpCiAgICAgbG9hZHAgV2Fz
bTo6SW5zdGFuY2U6Om1fbWVtb3J5W3dhc21JbnN0YW5jZV0sIHQwCiAgICAgbG9hZHAgV2FzbTo6
TWVtb3J5OjptX2hhbmRsZVt0MF0sIHQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HYXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgK
aW5kZXggNDY5NzE1Zjk2M2EyODRmNjFmMjYxMGE4N2U1YTgwN2I1NTQyZTgwMy4uZjZhMDViMDY1
ZTMyZDhhZWNkNTY3YmY2YWI3NGFhZTYzODk5Nzc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dhdGUuaApAQCAtNjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB2KHdhc21f
Y2FsbF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAogICAgIHYod2FzbV9jYWxsX2lu
ZGlyZWN0LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKICAgICB2KHdhc21fY2FsbF9pbmRpcmVj
dF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX3JlZiwg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfcmVmX25vX3RscywgSlNF
bnRyeVNsb3dQYXRoUHRyVGFnKSBcCiAKICNlbHNlCiAjZGVmaW5lIEpTQ19XQVNNX0dBVEVfT1BD
T0RFUyh2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHAKaW5kZXggNDQzOGE1Njg1MjIwMDA2OGYyYTg2NzgwYjY2MGJlNWY0M2YyZjc5Ni4u
YzFmNmZhNGU1NTFkZWJmMzMxNmVjMDM4Mjk5ZDAzOWZkNDkyYWQ0YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0zMjUsNiAr
MzI1LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJl
JiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2ln
bmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4m
IGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVT
RURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25U
eXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKICAgICBCMzo6UGF0Y2hwb2ludFZhbHVl
KiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqLCBjb25z
dCBTaWduYXR1cmUmLCBjb25zdCBSZXN1bHRMaXN0JiByZXN1bHRzLCBjb25zdCBWZWN0b3I8VHlw
ZWRUbXA+JiBhcmdzLCBWZWN0b3I8Q29uc3RyYWluZWRUbXA+JiYgZXh0cmFBcmdzID0geyB9KTsK
IApAQCAtMzQxNyw2ICszNDE4LDk3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRp
cmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBTaWdu
YXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxl
ZUZ1bmN0aW9uID0gYXJncy50YWtlTGFzdCgpOworICAgIG1fbWFrZXNDYWxscyA9IHRydWU7Cisg
ICAgLy8gTm90ZTogY2FsbCBpbmRpcmVjdCBjYW4gY2FsbCBlaXRoZXIgV2ViQXNzZW1ibHlGdW5j
dGlvbiBvciBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi4gQmVjYXVzZQorICAgIC8vIFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uIGlzIGxpa2UgY2FsbGluZyBpbnRvIHRoZSBlbWJlZGRlciwg
d2UgY29uc2VydmF0aXZlbHkgYXNzdW1lIGFsbCBjYWxsIGluZGlyZWN0cworICAgIC8vIGNhbiBi
ZSB0byB0aGUgZW1iZWRkZXIgZm9yIG91ciBzdGFjayBjaGVjayBjYWxjdWxhdGlvbi4KKyAgICBt
X21heE51bUpTQ2FsbEFyZ3VtZW50cyA9IHN0ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRz
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJncy5zaXplKCkpKTsKKworICAgIGF1dG8gY3VycmVu
dEluc3RhbmNlID0gZzY0KCk7CisgICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwgY3Vy
cmVudEluc3RhbmNlKTsKKworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUgPSBnNjQoKTsK
KyAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxlZUZ1bmN0aW9uLCBXZWJBc3NlbWJseUZ1
bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSksIGNhbGxlZUNvZGUpOyAv
LyBQb2ludGVyIHRvIGNhbGxlZSBjb2RlLgorCisgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBp
ZiBuZWVkZWQuCisgICAgeworICAgICAgICBhdXRvIHRhcmdldEluc3RhbmNlID0gZzY0KCk7Cisg
ICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2FsbGVlRnVuY3Rpb24sIFdlYkFzc2VtYmx5
RnVuY3Rpb25CYXNlOjpvZmZzZXRPZkluc3RhbmNlKCkpLCB0YXJnZXRJbnN0YW5jZSk7CisKKyAg
ICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9jb2RlLmFkZEJsb2NrKCk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fY29kZS5hZGRCbG9jaygpOworCisg
ICAgICAgIGFwcGVuZChCcmFuY2g2NCwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCksIHRhcmdldEluc3RhbmNlLCBpbnN0YW5jZVZhbHVlKCkpOworICAgICAgICBtX2N1cnJlbnRC
bG9jay0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24sIGRvQ29udGV4dFN3aXRjaCk7CisKKyAg
ICAgICAgYXV0byogcGF0Y2hwb2ludCA9IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOworICAgICAg
ICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIC8vIFdl
IHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgY2FsbGluZyBzb21ldGhpbmcgd2l0aCBCb3Vu
ZHNDaGVja2luZyBtZW1vcnkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0
byBkbyB0aGlzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgx
CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50
b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBw
YXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdp
Z2FjYWdlOjpQcmltaXRpdmUpID8gMSA6IDA7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVnIHRhcmdldEluc3Rh
bmNlID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIG9sZENvbnRleHRJbnN0
YW5jZSA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVy
SW5mbyYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CisgICAgICAgICAg
ICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAg
ICAgICAgICBBU1NFUlQodGFyZ2V0SW5zdGFuY2UgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob2xkQ29udGV4dEluc3RhbmNlLCBJ
bnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAg
ICAgICAgIGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGFy
Z2V0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOworICAg
ICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZSh0YXJnZXRJbnN0YW5jZSk7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1v
cnkgc2l6ZSByZWdpc3RlcgorICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRS
ZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IHRhcmdldEluc3RhbmNlKTsKKyAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNF
bmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5l
ZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CisKKyAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0YXJnZXRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNl
dE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5n
U2l6ZVJlZ2lzdGVyKTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4KKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0YXJnZXRJbnN0YW5jZSwgSW5zdGFuY2U6Om9m
ZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KKwor
ICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJh
c2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0Y2hP
ckJvdW5kc0NoZWNraW5nU2l6ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGVtaXRQYXRjaHBv
aW50KGRvQ29udGV4dFN3aXRjaCwgcGF0Y2hwb2ludCwgVG1wKCksIHRhcmdldEluc3RhbmNlLCBp
bnN0YW5jZVZhbHVlKCkpOworICAgICAgICBhcHBlbmQoZG9Db250ZXh0U3dpdGNoLCBKdW1wKTsK
KyAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgfQorCisgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsZWVDb2RlKSwgY2FsbGVlQ29kZSk7CisKKyAgICBWZWN0
b3I8Q29uc3RyYWluZWRUbXA+IGV4dHJhQXJnczsKKyAgICBleHRyYUFyZ3MuYXBwZW5kKGNhbGxl
ZUNvZGUpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5D
b3VudCgpOyArK2kpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKHRtcEZvclR5cGUoc2lnbmF0dXJl
LnJldHVyblR5cGUoaSkpKTsKKworICAgIGF1dG8qIHBhdGNocG9pbnQgPSBlbWl0Q2FsbFBhdGNo
cG9pbnQobV9jdXJyZW50QmxvY2ssIHNpZ25hdHVyZSwgcmVzdWx0cywgYXJncywgV1RGTW92ZShl
eHRyYUFyZ3MpKTsKKworICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBp
bm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCisg
ICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSdyZSBhbHdheXMgY2FsbGluZyBzb21l
dGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcgc28KKyAgICAvLyBiZWNhdXNlIHRoZSB3YXNt
LT53YXNtIHRodW5rIHVuY29uZGl0aW9uYWxseSBvdmVycmlkZXMgdGhlIHNpemUgcmVnaXN0ZXJz
LgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhhdmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3
YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4KKyAgICAvLyB1c2UgYWxsIHRoZSBwaW5uZWQg
cmVnaXN0ZXJzIGFzIHNjcmF0Y2g6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzIxODEKKworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVy
SW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisKKyAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgaml0LmNhbGwo
cGFyYW1zW3BhcmFtcy5wcm9jKCkucmVzdWx0Q291bnQocGFyYW1zLnZhbHVlKCktPnR5cGUoKSld
LmdwcigpLCBXYXNtRW50cnlQdHJUYWcpOworICAgIH0pOworCisgICAgLy8gVGhlIGNhbGwgY291
bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9yIGNv
dWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1lbW9yeS4KKyAgICByZXN0b3JlV2ViQXNzZW1ibHlHbG9i
YWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdDo6WWVzLCBtX2luZm8ubWVtb3J5LCBjdXJy
ZW50SW5zdGFuY2UsIG1fY3VycmVudEJsb2NrKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIHZv
aWQgQWlySVJHZW5lcmF0b3I6OnVuaWZ5KGNvbnN0IEV4cHJlc3Npb25UeXBlIGRzdCwgY29uc3Qg
RXhwcmVzc2lvblR5cGUgc291cmNlKQogewogICAgIEFTU0VSVChpc1N1YnR5cGUoc291cmNlLnR5
cGUoKSwgZHN0LnR5cGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDgwMDkyZDljNzEzOTNkNDJlMzZkNjNkNjc5MGQ3YmFm
NGFjNTVhZDguLjA5NjUzN2RlMjk0YmI1MmJlMzgxNzBkOTRjNGM2OGRmNDc5MDZhMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAg
LTI4NSw2ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbHMKICAgICBQYXJ0aWFsUmVzdWx0
IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBT
aWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1
bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJl
Y3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhw
cmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIEIzOjpWYWx1ZSog
Y3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayosIE9yaWdpbiwgY29uc3QgU2lnbmF0dXJl
JiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgY29uc3QgU2NvcGVkTGFtYmRhPHZvaWQo
UGF0Y2hwb2ludFZhbHVlKik+JiBwYXRjaHBvaW50RnVuY3Rvcik7CiAKQEAgLTI2MTcsNiArMjYx
OCwxMDkgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFi
bGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXQKICAgICByZXR1cm4geyB9OwogfQogCith
dXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBh
cnRpYWxSZXN1bHQKK3sKKyAgICBtX21ha2VzQ2FsbHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNh
bGwgaW5kaXJlY3QgY2FuIGNhbGwgZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2
ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVjdHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVk
ZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2FsY3VsYXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxB
cmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVGdW5j
dGlvbiA9IGFyZ3MudGFrZUxhc3QoKTsKKworICAgIC8vIERvIGEgY29udGV4dCBzd2l0Y2ggaWYg
bmVlZGVkLgorICAgIHsKKyAgICAgICAgVmFsdWUqIG9mZnNldCA9IGNvbnN0YW50KHBvaW50ZXJU
eXBlKCksIHNhZmVDYXN0PGludDMyX3Q+KFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpvZmZzZXRP
Zkluc3RhbmNlKCkpKTsKKyAgICAgICAgVmFsdWUqIHRhcmdldEluc3RhbmNlID0gbV9jdXJyZW50
QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgp
LCBvcmlnaW4oKSwKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgb2Zmc2V0KSk7CisgICAg
ICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRCbG9jaygpOworICAgICAg
ICBCYXNpY0Jsb2NrKiBkb0NvbnRleHRTd2l0Y2ggPSBtX3Byb2MuYWRkQmxvY2soKTsKKworICAg
ICAgICBWYWx1ZSogaXNTYW1lQ29udGV4dEluc3RhbmNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCisgICAgICAgICAgICB0YXJnZXRJ
bnN0YW5jZSwgaW5zdGFuY2VWYWx1ZSgpKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEIzOjpCcmFuY2gsIG9yaWdpbigpLAorICAgICAgICAg
ICAgaXNTYW1lQ29udGV4dEluc3RhbmNlLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9uKSwg
RnJlcXVlbnRlZEJsb2NrKGRvQ29udGV4dFN3aXRjaCkpOworCisgICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IGRvQ29udGV4dFN3aXRjaC0+YXBwZW5kTmV3PFBhdGNocG9pbnRW
YWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50LT5l
ZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxs
eSBhc3N1bWUgd2UncmUgY2FsbGluZyBzb21ldGhpbmcgd2l0aCBCb3VuZHNDaGVja2luZyBtZW1v
cnkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9k
ZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQodGFyZ2V0SW5zdGFuY2UsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQoaW5zdGFuY2VWYWx1ZSgpLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gR2lnYWNhZ2U6Omlz
RW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IDEgOiAwOworCisgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIEdQUlJlZyB0
YXJnZXRJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBvbGRD
b250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBjb25zdCBQaW5u
ZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgpOwor
ICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2lu
dGVyOworICAgICAgICAgICAgQVNTRVJUKHRhcmdldEluc3RhbmNlICE9IGJhc2VNZW1vcnkpOwor
ICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJ
bnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9y
eSk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHRhcmdldEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0
KCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5zdGFuY2UodGFyZ2V0SW5z
dGFuY2UpOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXpl
UmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgorICAgICAgICAgICAg
Ly8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIK
KyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
ICE9IHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHND
aGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8g
cGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0
ZXI7CisKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0YXJn
ZXRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkp
LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUu
CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGFyZ2V0SW5z
dGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8v
IE1lbW9yeTo6dm9pZCouCisKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdh
Y2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6
ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOworICAgICAgICB9KTsKKyAg
ICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBKdW1w
LCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKKworICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNv
bnRpbnVhdGlvbjsKKyAgICB9CisKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gbV9j
dXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVy
VHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgY2FsbGFibGVG
dW5jdGlvbiwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDMyX3Q+KFdlYkFzc2VtYmx5RnVuY3Rp
b246Om9mZnNldE9mRW50cnlwb2ludExvYWRMb2NhdGlvbigpKSkpOworCisgICAgQjM6OlR5cGUg
cmV0dXJuVHlwZSA9IHRvQjNSZXN1bHRUeXBlKCZzaWduYXR1cmUpOworICAgIEV4cHJlc3Npb25U
eXBlIGNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgb3Jp
Z2luKCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0
Y2hwb2ludFZhbHVlKik+KFs9XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSAtPiB2b2lk
IHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOworICAg
ICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lz
dGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAgICAg
IC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgYWx3YXlzIGNhbGxpbmcgc29tZXRo
aW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nIHNvCisgICAgICAgICAgICAvLyBiZWNhdXNlIHRo
ZSB3YXNtLT53YXNtIHRodW5rIHVuY29uZGl0aW9uYWxseSBvdmVycmlkZXMgdGhlIHNpemUgcmVn
aXN0ZXJzLgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgaGF2ZSB0byBkbyB0
aGlzLCBidXQgdGhlIHdhc20tPndhc20gc3R1YiBhc3N1bWVzIGl0IGNhbgorICAgICAgICAgICAg
Ly8gdXNlIGFsbCB0aGUgcGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZykpOworCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoY2Fs
bGVlQ29kZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBwYXRjaHBvaW50
LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgICAgIGpp
dC5jYWxsKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50KHJldHVyblR5cGUpXS5ncHIo
KSwgV2FzbUVudHJ5UHRyVGFnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSk7CisKKyAg
ICBzd2l0Y2ggKHJldHVyblR5cGUua2luZCgpKSB7CisgICAgY2FzZSBCMzo6Vm9pZDogeworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBCMzo6VHVwbGU6IHsKKyAgICAgICAgY29uc3Qg
VmVjdG9yPEIzOjpUeXBlPiYgdHVwbGUgPSBtX3Byb2MudHVwbGVGb3JUeXBlKHJldHVyblR5cGUp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50
KCk7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8RXh0cmFjdFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0dXBsZVtpXSwgY2FsbFJlc3Vs
dCwgaSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBy
ZXN1bHRzLmFwcGVuZChjYWxsUmVzdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0K
KworICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5
IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCisgICAg
cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6Olll
cywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3VycmVudEJsb2Nr
KTsKKworICAgIHJldHVybiB7IH07Cit9CisKIHZvaWQgQjNJUkdlbmVyYXRvcjo6dW5pZnkoY29u
c3QgRXhwcmVzc2lvblR5cGUgcGhpLCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpCiB7CiAg
ICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2lu
KCksIHNvdXJjZSwgcGhpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmgKaW5kZXggZGYwZTFjYWYzMDU2MjQ2Nzc2ZTAzMzk3ZDJhYWIxYzlkMjhl
MTUzMy4uYmMxZmUzN2ZkYWZmNWNiZmYzMDA2N2JkYzI2MmI2ZDg0NjIyYzFkMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTEyNDgs
NiArMTI0OCwzNiBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkK
IAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIGNhc2UgQ2FsbFJlZjogeworICAg
ICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlw
ZSgpLmlzVHlwZUlkeCgpLCAibm9uLWZ1bmNyZWYgY2FsbF9yZWYgdmFsdWUgIiwgbV9leHByZXNz
aW9uU3RhY2subGFzdCgpLnR5cGUoKS5raW5kKTsKKworICAgICAgICBjb25zdCBTaWduYXR1cmVJ
bmRleCBjYWxsZWVTaWduYXR1cmVJbmRleCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2lnbmF0dXJlSW5k
ZXg+KG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaW5kZXgpOworICAgICAgICBjb25z
dCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpnZXQo
Y2FsbGVlU2lnbmF0dXJlSW5kZXgpOworICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNh
bGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIHZh
bHVlLgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCksICJjYWxsX3JlZiBleHBlY3RzICIsIGFyZ3VtZW50Q291bnQsICIg
YXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRzICIsIG1f
ZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKKworICAgICAgICBWZWN0b3I8RXhw
cmVzc2lvblR5cGU+IGFyZ3M7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3MudHJ5
UmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQgKyAxKSwgImNhbid0IGFsbG9jYXRlIGVub3Vn
aCBtZW1vcnkgZm9yICIsIGFyZ3VtZW50Q291bnQsICIgY2FsbF9pbmRpcmVjdCBhcmd1bWVudHMi
KTsKKyAgICAgICAgc2l6ZV90IGZpcnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNr
LnNpemUoKSAtIGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdEFy
Z3VtZW50SW5kZXg7IGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNrLmF0KGkpOworICAg
ICAgICAgICAgaWYgKGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSAxKQorICAgICAgICAg
ICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnLnR5cGUoKSAhPSBjYWxsZWVTaWduYXR1
cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCksICJhcmd1bWVudCB0eXBlIG1pc21h
dGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4cGVjdGVk
ICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KS5raW5k
KTsKKyAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7CisgICAgICAgICAgICBt
X2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgfQorICAgICAgICBtX2V4
cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKKworICAgICAgICBSZXN1
bHRMaXN0IHJlc3VsdHM7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZENhbGxS
ZWYoY2FsbGVlU2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKSk7CisKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCisgICAg
ICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoY2FsbGVlU2lnbmF0
dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworCisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCiAgICAgY2FzZSBCbG9jazogewogICAgICAgICBCbG9ja1NpZ25hdHVyZSBpbmxpbmVT
aWduYXR1cmU7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlQmxvY2tTaWduYXR1
cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1cmUpLCAiY2FuJ3QgZ2V0IGJsb2NrJ3Mgc2lnbmF0dXJl
Iik7CkBAIC0xNzM5LDYgKzE3NjksNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAvLyBubyBp
bW1lZGlhdGUgY2FzZXMKICAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChDUkVBVEVfQ0FTRSkK
ICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9DQVNFKQorICAgIGNhc2UgQ2FsbFJl
ZjoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgTm9wOgogICAgIGNhc2UgUmV0dXJu
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5j
cHAKaW5kZXggNTM3ZWU1NjUyMGVkNTg0MzAxZjQ4MjA0OTYyY2YyNzg2YmRiMzRmZC4uY2UyOWI2
OGY5ODEwNDViY2M2MzYxYjIxMjE5ZjRkMDMxZWRmMmM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC0yNTMsNiArMjUzLDcg
QEAgcHVibGljOgogICAgIC8vIENhbGxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRh
YmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYg
YXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZ0xv
Y2FscygpOwpAQCAtMTEwMiw2ICsxMTAzLDIxIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENh
bGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAg
ICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25z
dCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVz
dWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25UeXBl
IGNhbGxlZSA9IGFyZ3MudGFrZUxhc3QoKTsKKworICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGlu
Zm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoc2lnbmF0dXJlKTsKKyAgICB1bmlmeVZhbHVl
c1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAgaWYgKENvbnRleHQ6OnVzZUZh
c3RUTFMoKSkKKyAgICAgICAgV2FzbUNhbGxSZWY6OmVtaXQodGhpcywgY2FsbGVlLCBtX2NvZGVC
bG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVt
YmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAgZWxzZQorICAgICAgICBXYXNtQ2FsbFJlZk5vVGxz
OjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUp
LCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgIGlu
Zm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8g
TExJbnRHZW5lcmF0b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVz
c2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1c2go
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXgg
YTYxZDBjYzdmZjMyOWRiNWQ2MTk0ZWU2ODViZDUyOTE5Y2JjZDQ1OS4uZjViZmJjMTkzNTFiYTVh
NGNhOTE3Yjc3NzY2NDUxMWI2OTJjNjA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAKICNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJKU1dlYkFz
c2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJXYXNt
QkJRUGxhbi5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKQEAgLTQwLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJXYXNtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5j
dGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIApAQCAtNDk4LDYg
KzUwMCwzOCBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxzKQogICAg
IHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25J
bmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUlu
ZGV4KTsKIH0KIAoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dhc21DYWxsUmVmKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgdGFyZ2V0
UmVmZXJlbmNlKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworCisgICAgQVNTRVJU
KHRhcmdldFJlZmVyZW5jZS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogcmVmZXJlbmNlQXNP
YmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXRSZWZlcmVuY2UpOworICAgIEFTU0VSVChy
ZWZlcmVuY2VBc09iamVjdC0+aW5oZXJpdHM8V2ViQXNzZW1ibHlGdW5jdGlvbj4oaW5zdGFuY2Ut
Pm93bmVyPEpTT2JqZWN0PigpLT52bSgpKSk7CisKKyAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiB3
YXNtRnVuY3Rpb24gPSBqc0Nhc3Q8V2ViQXNzZW1ibHlGdW5jdGlvbio+KHJlZmVyZW5jZUFzT2Jq
ZWN0KTsKKyAgICBXYXNtOjpJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UgPSAmd2FzbUZ1bmN0aW9u
LT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpOworCisgICAgaWYgKHRhcmdldEluc3RhbmNlICE9IGlu
c3RhbmNlKQorICAgICAgICB0YXJnZXRJbnN0YW5jZS0+c2V0Q2FjaGVkU3RhY2tMaW1pdChpbnN0
YW5jZS0+Y2FjaGVkU3RhY2tMaW1pdCgpKTsKKworICAgIGNvbnN0IFdhc206Oldhc21Ub1dhc21J
bXBvcnRhYmxlRnVuY3Rpb24mIGZ1bmN0aW9uID0gd2FzbUZ1bmN0aW9uLT5pbXBvcnRhYmxlRnVu
Y3Rpb24oKTsKKyAgICBXQVNNX0NBTExfUkVUVVJOKHRhcmdldEluc3RhbmNlLCBmdW5jdGlvbi5l
bnRyeXBvaW50TG9hZExvY2F0aW9uLT5leGVjdXRhYmxlQWRkcmVzcygpLCBXYXNtRW50cnlQdHJU
YWcpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfcmVmKQoreworICAgIGF1dG8gaW5z
dHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAg
SlNWYWx1ZSByZWZlcmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1
bmN0aW9uUmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZG9XYXNtQ2Fs
bFJlZihjYWxsRnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2UpOworfQorCitXQVNNX1NMT1dfUEFU
SF9ERUNMKGNhbGxfcmVmX25vX3RscykKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFz
PFdhc21DYWxsUmVmTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgSlNWYWx1ZSByZWZl
cmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uUmVmZXJl
bmNlKS5lbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihjYWxsRnJh
bWUsIGluc3RhbmNlLCByZWZlcmVuY2UpOworfQorCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHNldF9n
bG9iYWxfcmVmKQogewogICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVNldEdsb2Jh
bFJlZiwgV2FzbU9wY29kZVRyYWl0cz4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuaAppbmRleCBmOGFhY2EwOGQzMTI4ODRhZjE3YmNiYmI3N2I3NmRlYmY0NjVk
MzJhLi41YjJiOGYyODk1YTFlNmM4MmY0MDlmNmU1ZTg2Y2NkZjBmZDUwNGIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCkBAIC03Niw2ICs3Niw4IEBAIFdB
U01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGwpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RF
Q0woY2FsbF9ub190bHMpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRpcmVj
dCk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX2luZGlyZWN0X25vX3Rscyk7CitX
QVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX3JlZik7CitXQVNNX1NMT1dfUEFUSF9ISURE
RU5fREVDTChjYWxsX3JlZl9ub190bHMpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2V0
X2dsb2JhbF9yZWYpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2V0X2dsb2JhbF9yZWZf
cG9ydGFibGVfYmluZGluZyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChtZW1vcnlfYXRv
bWljX3dhaXQzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNt
Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXggMmE3Mjg3
ZDk2MDkwMDAxOWZkYTExY2Q2NzRmMmEwMWIyZGJmMTU4OC4uNzk0MDkyYjc2ZGQ3MGY0NzI0Mzdm
NzY5Y2E0N2I0NjQ1ZmZjYjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgpA
QCAtODUsNiArODUsNyBAQAogICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVn
b3J5IjogImV4dHRhYmxlIiwgICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogInNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVy
byIsICJleHRlbmRlZE9wIjogOSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsg
ImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwi
XSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAg
ICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0s
CiAgICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAg
ICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24i
OiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9
LAorICAgICAgICAiY2FsbF9yZWYiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAg
ICAgICAidmFsdWUiOiAgMjAsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogImNhbGwgYSBmdW5jdGlvbiByZWZlcmVuY2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVy
biI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRy
Il0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIs
ICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAog
ICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJu
YW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAi
bG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZfcyI6ICAgICAgICB7ICJj
YXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogWyJpMzIiXSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5
cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU0NmQwMGUyNDIxMDhl
OTI0ZTFhN2Q0N2JlYWJhNzM0YjFiNDUzYmQuLjQ1ZTI1NTM3YTdjZmQxNDBmODI0YzExOTk1YzA0
YzE1MjAxYjhjOTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDMtMDggIERtaXRyeSBCZXpoZXRza292
ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1GdW5jdGlvbi1SZWZl
cmVuY2VzXSBBZGQgY2FsbF9yZWYgaW5zdHJ1Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyIGJhc2ljIGNhbGxfcmVmIHRlc3QgY2FzZXMg
LSBjcm9zcy1pbnN0YW5jZSBjYWxsCisgICAgICAgIGFuZCBzYW1lLWluc3RhbmNlIGNhbGwuCisK
KyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2Vz
L2NhbGxfcmVmLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgIChhc3luYyBi
YXNpY3MpOgorICAgICAgICAoYXN5bmMgaW5kaXJlY3RDYWxsKToKKyAgICAgICAgKiB3YXNtL3dh
c20uanNvbjoKKwogMjAyMS0wMy0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CiAKICAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yIHNob3VsZCBiZSBpbmxpbmVkIGlu
IERGRyAvIEZUTApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dhc20u
eWFtbAppbmRleCBmNTY2MzdkOGM0MGY1MWZhY2E2NWIzYTc0MmQ4MWJkZmU4NjMxMjkzLi4yYWEw
ZTQ3OTdmZTUxOWJiYzg5NDA2ZmY3ZDhlM2U3YThkOWViYWZlIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3dhc20ueWFtbAorKysgYi9KU1Rlc3RzL3dhc20ueWFtbApAQCAtMzMsNiArMzMsOCBAQAogICBj
bWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0aDog
d2FzbS9yZWZlcmVuY2VzCiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VS
dW5Db21tYW5kcworLSBwYXRoOiB3YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMKKyAgY21kOiBydW5X
ZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20vZnV6
egogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKIC0g
cGF0aDogd2FzbS9sb3dFeGVjdXRhYmxlTWVtb3J5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1y
ZWZlcmVuY2VzL2NhbGxfcmVmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMTNjNWY1YmYyMTUxYTA3N2E3OWE1
YThjMzk2MWUyYmQ5ZmEzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rp
b24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qcwpAQCAtMCwwICsxLDU4IEBACisvL0AgcnVuV2ViQXNz
ZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzPXRydWUi
KQoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgeyBpbnN0
YW50aWF0ZSB9IGZyb20gIi4uL3dhYnQtd3JhcHBlci5qcyI7CisKK2Z1bmN0aW9uIG1vZHVsZShi
eXRlcywgdmFsaWQgPSB0cnVlKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0
ZXMubGVuZ3RoKTsKKyAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3Ig
KGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVz
LmNoYXJDb2RlQXQoaSk7CisgIH0KKyAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVm
ZmVyKTsKK30KKworYXN5bmMgZnVuY3Rpb24gYmFzaWNzKCkgeworICAvKgorICAobW9kdWxlCisg
ICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAkZm9vKSkKKyAgICAoZnVuYyAkZm9v
IChwYXJhbSAkeCBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5hZGQgKGxvY2FsLmdldCAk
eCkKKyAgICAgICAgICAgICAgIChpMzIuY29uc3QgMTkpCisgICAgICApCisgICAgKQorICAgIChm
dW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgIChjYWxsX3JlZiAoaTMyLmNv
bnN0IDEwKSAocmVmLmZ1bmMgJGZvbykpCisgICAgKQorICApCisgICovCisgIGxldCBpbnN0YW5j
ZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFc
eDdmXHgwM1x4MDNceDAyXHgwMFx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4
MDBceDAxXHgwOVx4MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4MGFceDExXHgwMlx4MDdceDAwXHgy
MFx4MDBceDQxXHgxM1x4NmFceDBiXHgwN1x4MDBceDQxXHgwYVx4ZDJceDAwXHgxNFx4MGIiKSk7
CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMjkpOworfQorCithc3luYyBm
dW5jdGlvbiBpbmRpcmVjdENhbGwoKSB7CisgIGxldCB3YXQgPSBgCisgIChtb2R1bGUKKyAgICAo
ZnVuYyAoZXhwb3J0ICJiYXIiKSAocGFyYW0gJHggaTMyKSAocmVzdWx0IGkzMikKKyAgICAgIChp
MzIuYWRkIChsb2NhbC5nZXQgJHgpCisgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDE5KSkKKyAg
ICApCisgIClgOworICBjb25zdCBiYXJQcm92aWRlciA9IGF3YWl0IGluc3RhbnRpYXRlKHdhdCwg
e30sIHtyZWZlcmVuY2VfdHlwZXM6IHRydWV9KTsKKworICAvKgorICAobW9kdWxlCisgICAgKGlt
cG9ydCAiZXhwb3J0cyIgImJhciIgKGZ1bmMgJGJhciAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikp
KQorICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgJGJhcikpCisgICAgKGZ1bmMg
KGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAgKGNhbGxfcmVmIChpMzIuY29uc3Qg
MTApIChyZWYuZnVuYyAkYmFyKSkKKyAgICApCisgICkKKyAgKi8KKyAgbGV0IGluc3RhbmNlID0g
bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAorICAgIG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAwXHgw
MVx4N2ZceDAyXHgwZlx4MDFceDA3XHg2NVx4NzhceDcwXHg2Zlx4NzJceDc0XHg3M1x4MDNceDYy
XHg2MVx4NzJceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFc
eDY5XHg2ZVx4MDBceDAxXHgwOVx4MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4MGFceDA5XHgwMVx4
MDdceDAwXHg0MVx4MGFceGQyXHgwMFx4MTRceDBiIiksCisgICAgYmFyUHJvdmlkZXIpOworICBh
c3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDI5KTsKK30KKworYXNzZXJ0LmFzeW5j
VGVzdChiYXNpY3MoKSk7Cithc3NlcnQuYXN5bmNUZXN0KGluZGlyZWN0Q2FsbCgpKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCmlu
ZGV4IDJhNzI4N2Q5NjA5MDAwMTlmZGExMWNkNjc0ZjJhMDFiMmRiZjE1ODguLjc5NDA5MmI3NmRk
NzBmNDcyNDM3Zjc2OWNhNDdiNDY0NWZmY2I4MDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS93
YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtODUsNiArODUsNyBAQAog
ICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxlIiwg
ICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
InNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9wIjog
OSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwi
LCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxsX2lu
ZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywg
InJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0
eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5k
ZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9u
IGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAiY2FsbF9y
ZWYiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMjAs
ICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlv
biByZWZlcmVuY2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAg
ICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjog
InZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQ4
X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUsICJy
ZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsi
YWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAg
InR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIg
fSwKICAgICAgICAgImkzMi5sb2FkMTZfcyI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnki
LCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0s
IHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9u
IjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422902</attachid>
            <date>2021-03-10 22:58:45 -0800</date>
            <delta_ts>2021-03-15 00:12:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222903-20210311135843.patch</filename>
            <type>text/plain</type>
            <size>37043</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTUyN2U1YmQ5YTQyN2UyNzk2MjIxZTQwOGI3YTUyZDY1YWE5NTMyLi5jOTMxYThkNTE1ZWEzNjAy
YzAwMWQ0N2U2ZjhlZTNkMTAwZWQ5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wMy0wOCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxs
X3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbGxfcmVmIGluc3RydWN0aW9uIGZyb20gdHlwZWQg
ZnVuY3Rpb24KKyAgICAgICAgcmVmZXJlbmNlcyBwcm9wb3NhbDogaHR0cHM6Ly9naXRodWIuY29t
L1dlYkFzc2VtYmx5L2Z1bmN0aW9uLXJlZmVyZW5jZXMvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2Z1
bmN0aW9uLXJlZmVyZW5jZXMvT3ZlcnZpZXcubWQuCisgICAgICAgIEltcGxlbWVudGF0aW9uIGlz
IHNpbWlsYXIgdG8gdGhlIGNhbGxfaW5kaXJlY3QuCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUxpc3QucmI6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206CisgICAgICAg
ICogcnVudGltZS9HYXRlLmg6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KToK
KyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAg
ICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjphZGRDYWxsUmVmKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
OgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBh
cnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRDYWxsUmVm
KToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZG9XYXNtQ2FsbFJlZik6CisgICAgICAgIChKU0M6OkxMSW50OjpXQVNNX1NMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuaDoKKyAgICAgICAgKiB3YXNtL3dh
c20uanNvbjoKKwogMjAyMS0wMy0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzQwNDEuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4
YzliYmJhMTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4xNjQxMDFmZWNlMDQyNmEwMDJmZjVh
NDdhMWMwMjRiODk0NjY0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0NzQsNiArMTQ3NCw4IEBAIG9wIDp3YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHMKIG9wIDp3
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3Jl
Zgorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RscwogCiBlbmRfc2VjdGlv
biA6TmF0aXZlSGVscGVycwogCkBAIC0xNDk1LDYgKzE0OTcsOCBAQCBvcCA6Y2FsbF9yZXR1cm5f
bG9jYXRpb24KIG9wIDpjYWxsX25vX3Rsc19yZXR1cm5fbG9jYXRpb24KIG9wIDpjYWxsX2luZGly
ZWN0X3JldHVybl9sb2NhdGlvbgogb3AgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzX3JldHVybl9sb2Nh
dGlvbgorb3AgOmNhbGxfcmVmX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfcmVmX25vX3Rsc19y
ZXR1cm5fbG9jYXRpb24KIAogIyBGSVhNRTogV2FzbSBhbmQgSlMgTExJbnQgc2hvdWxkIHNoYXJl
IGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM2NTYKQEAgLTE2ODYsNiArMTY5MCwyMiBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHMs
CiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOmNhbGxfcmVmLAor
ICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDog
dW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICB9CisK
K29wIDpjYWxsX3JlZl9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvblJlZmVy
ZW5jZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQs
CisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZTdGFja0Fy
Z3M6IHVuc2lnbmVkLAorICAgIH0KKwogb3AgOmN1cnJlbnRfbWVtb3J5LAogICAgIGFyZ3M6IHsK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYWNhMDBkZTRmNjUxZjk0ZWE0OGM5NGM2ODU5
OWVhNWQyN2VkYmMxMi4uNDhlMjVjNTQxZjlmYTk4ODkyNjZjNDc5YmEwODY0OWEwYzUxMmFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MzY4LDYgKzM2OCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSB3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX25vX3RsczoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfaW5kaXJlY3Q6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmOgorICAg
IGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzOgogICAgICAgICByZXR1
cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggMzViODYwOGY5ZjY4OGMyYTcwM2M2OWYwMTU0MmM5NWY5MGJmZDU2Yi4uOTI3MjU5ZmI4
YWUzYzg0ZWViNDgyMWE1YTZlMTIyNjkwZjM2N2VkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjUwMywxNCArMjUw
MywyMCBAQCBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX25vX3RsczoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgogX3dh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfcmVmOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RsczoK
IF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUxNjoKIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX25vX3Rsc193aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVj
dF93aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lk
ZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX3dpZGUxNjoKK193YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHNfd2lkZTE2OgogX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUzMjoK
IF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUzMjoKIF93YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF9yZWZfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25v
X3Rsc193aWRlMzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDU1MTdiMjU3NzI4ZmQ1NGRmNzQzY2Q5MmM5YTI3
M2NjNmNhMTdmMjkuLjRmZWZmN2U1MGUzOTdmYWU5Zjg5ZjM2ZWE4M2RjYjk5NDQyNDdmNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtODc3LDYg
Kzg3NywxNCBAQCB3YXNtT3AoY2FsbF9pbmRpcmVjdF9ub190bHMsIFdhc21DYWxsSW5kaXJlY3RO
b1RscywgbWFjcm8oY3R4KQogICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRo
X3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRh
cmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQogZW5kKQogCit3YXNtT3AoY2FsbF9yZWYs
IFdhc21DYWxsUmVmLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9z
bG93X3BhdGhfd2FzbV9jYWxsX3JlZiwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKwor
d2FzbU9wKGNhbGxfcmVmX25vX3RscywgV2FzbUNhbGxSZWZOb1RscywgbWFjcm8oY3R4KQorICAg
IHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9yZWZfbm9fdGxz
LCBtYWNybyh0YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNl
IGVuZCkKK2VuZCkKKwogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwg
bWFjcm8oY3R4KQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFu
Y2VdLCB0MAogICAgIGxvYWRwIFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCmluZGV4IDQ2OTcxNWY5NjNhMjg0ZjYxZjI2MTBhODdl
NWE4MDdiNTU0MmU4MDMuLmY2YTA1YjA2NWUzMmQ4YWVjZDU2N2JmNmFiNzRhYWU2Mzg5OTc3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKICAgICB2KHdhc21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBc
CiAgICAgdih3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcp
IFwKKyAgICB2KHdhc21fY2FsbF9yZWYsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYo
d2FzbV9jYWxsX3JlZl9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAogCiAjZWxzZQog
I2RlZmluZSBKU0NfV0FTTV9HQVRFX09QQ09ERVModikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDQ0MzhhNTY4NTIyMDAwNjhm
MmE4Njc4MGI2NjBiZTVmNDNmMmY3OTYuLmMxZjZmYTRlNTUxZGViZjMzMTZlYzAzODI5OWQwMzlm
ZDQ5MmFkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcApAQCAtMzI1LDYgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2Fs
bGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUm
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25h
dHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7
CiAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRDYWxsUGF0
Y2hwb2ludChCYXNpY0Jsb2NrKiwgY29uc3QgU2lnbmF0dXJlJiwgY29uc3QgUmVzdWx0TGlzdCYg
cmVzdWx0cywgY29uc3QgVmVjdG9yPFR5cGVkVG1wPiYgYXJncywgVmVjdG9yPENvbnN0cmFpbmVk
VG1wPiYmIGV4dHJhQXJncyA9IHsgfSk7CiAKQEAgLTM0MTcsNiArMzQxOCw5NyBAQCBhdXRvIEFp
cklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQWlySVJHZW5lcmF0
b3I6OmFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sK
KyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVGdW5jdGlvbiA9IGFyZ3MudGFrZUxhc3QoKTsKKyAg
ICBtX21ha2VzQ2FsbHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwgaW5kaXJlY3QgY2FuIGNh
bGwgZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uIEJlY2F1c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNh
bGxpbmcgaW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2Fs
bCBpbmRpcmVjdHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sg
Y2hlY2sgY2FsY3VsYXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1h
eChtX21heE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6
ZSgpKSk7CisKKyAgICBhdXRvIGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgpOworICAgIGFwcGVuZChN
b3ZlLCBpbnN0YW5jZVZhbHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisKKyAgICBFeHByZXNzaW9u
VHlwZSBjYWxsZWVDb2RlID0gZzY0KCk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxs
ZWVGdW5jdGlvbiwgV2ViQXNzZW1ibHlGdW5jdGlvbjo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExv
Y2F0aW9uKCkpLCBjYWxsZWVDb2RlKTsgLy8gUG9pbnRlciB0byBjYWxsZWUgY29kZS4KKworICAg
IC8vIERvIGEgY29udGV4dCBzd2l0Y2ggaWYgbmVlZGVkLgorICAgIHsKKyAgICAgICAgYXV0byB0
YXJnZXRJbnN0YW5jZSA9IGc2NCgpOworICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNh
bGxlZUZ1bmN0aW9uLCBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZTo6b2Zmc2V0T2ZJbnN0YW5jZSgp
KSwgdGFyZ2V0SW5zdGFuY2UpOworCisgICAgICAgIEJhc2ljQmxvY2sqIGRvQ29udGV4dFN3aXRj
aCA9IG1fY29kZS5hZGRCbG9jaygpOworICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24g
PSBtX2NvZGUuYWRkQmxvY2soKTsKKworICAgICAgICBhcHBlbmQoQnJhbmNoNjQsIEFyZzo6cmVs
Q29uZChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwpLCB0YXJnZXRJbnN0YW5jZSwgaW5zdGFuY2VWYWx1
ZSgpKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9u
LCBkb0NvbnRleHRTd2l0Y2gpOworCisgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQYXRj
aHBvaW50KEIzOjpWb2lkKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5u
ZWQgPSB0cnVlOworICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNh
bGxpbmcgc29tZXRoaW5nIHdpdGggQm91bmRzQ2hlY2tpbmcgbWVtb3J5LgorICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBp
bm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5n
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJz
ID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IDEgOiAwOworCisg
ICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBj
b25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAg
IEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAg
ICAgICAgIEdQUlJlZyB0YXJnZXRJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAg
ICAgIEdQUlJlZyBvbGRDb250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAg
ICAgICBjb25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3Rl
ckluZm86OmdldCgpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdz
LmJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICAgICAgQVNTRVJUKHRhcmdldEluc3RhbmNlICE9
IGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKG9sZENvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1p
dCgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHRhcmdldEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWNoZWRTdGFja0xpbWl0KCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5z
dGFuY2UodGFyZ2V0SW5zdGFuY2UpOworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBz
dXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKKyAgICAgICAgICAgIC8v
ICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisg
ICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAh
PSB0YXJnZXRJbnN0YW5jZSk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hl
Y2tpbmdTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBh
cmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
OworCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGFyZ2V0
SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwg
cGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIEJvdW5kIGNoZWNraW5n
IHNpemUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGFy
Z2V0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9y
eSk7IC8vIE1lbW9yeTo6dm9pZCouCisKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxs
eShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOworICAgICAgICB9
KTsKKworICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9pbnQs
IFRtcCgpLCB0YXJnZXRJbnN0YW5jZSwgaW5zdGFuY2VWYWx1ZSgpKTsKKyAgICAgICAgYXBwZW5k
KGRvQ29udGV4dFN3aXRjaCwgSnVtcCk7CisgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+c2V0U3Vj
Y2Vzc29ycyhjb250aW51YXRpb24pOworCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGlu
dWF0aW9uOworICAgIH0KKworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2FsbGVlQ29kZSks
IGNhbGxlZUNvZGUpOworCisgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBleHRyYUFyZ3M7Cisg
ICAgZXh0cmFBcmdzLmFwcGVuZChjYWxsZWVDb2RlKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICByZXN1bHRzLmFw
cGVuZCh0bXBGb3JUeXBlKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpKSk7CisKKyAgICBhdXRvKiBw
YXRjaHBvaW50ID0gZW1pdENhbGxQYXRjaHBvaW50KG1fY3VycmVudEJsb2NrLCBzaWduYXR1cmUs
IHJlc3VsdHMsIGFyZ3MsIFdURk1vdmUoZXh0cmFBcmdzKSk7CisKKyAgICAvLyBXZSBuZWVkIHRv
IGNsb2JiZXIgYWxsIHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJl
IGxlYXZpbmcgdGhlIGluc3RhbmNlLgorICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUg
d2UncmUgYWx3YXlzIGNhbGxpbmcgc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nIHNv
CisgICAgLy8gYmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3Zl
cnJpZGVzIHRoZSBzaXplIHJlZ2lzdGVycy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBo
YXZlIHRvIGRvIHRoaXMsIGJ1dCB0aGUgd2FzbS0+d2FzbSBzdHViIGFzc3VtZXMgaXQgY2FuCisg
ICAgLy8gdXNlIGFsbCB0aGUgcGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisKKyAgICBwYXRjaHBvaW50LT5j
bG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpC
b3VuZHNDaGVja2luZykpOworCisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CisgICAgICAgIGppdC5jYWxsKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50
KHBhcmFtcy52YWx1ZSgpLT50eXBlKCkpXS5ncHIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKKyAgICB9
KTsKKworICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2Vt
Ymx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCisg
ICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6
OlllcywgbV9pbmZvLm1lbW9yeSwgY3VycmVudEluc3RhbmNlLCBtX2N1cnJlbnRCbG9jayk7CisK
KyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIEFpcklSR2VuZXJhdG9yOjp1bmlmeShjb25zdCBF
eHByZXNzaW9uVHlwZSBkc3QsIGNvbnN0IEV4cHJlc3Npb25UeXBlIHNvdXJjZSkKIHsKICAgICBB
U1NFUlQoaXNTdWJ0eXBlKHNvdXJjZS50eXBlKCksIGRzdC50eXBlKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCA4MDA5MmQ5
YzcxMzkzZDQyZTM2ZDYzZDY3OTBkN2JhZjRhYzU1YWQ4Li4wOTY1MzdkZTI5NGJiNTJiZTM4MTcw
ZDk0YzRjNjhkZjQ3OTA2YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC0yODUsNiArMjg1LDcgQEAgcHVibGljOgogICAgIC8v
IENhbGxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50
MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNp
Z25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3Vs
dHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29u
c3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYg
cmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFj
aGFibGUoKTsKICAgICBCMzo6VmFsdWUqIGNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sq
LCBPcmlnaW4sIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPiYgcGF0Y2hwb2ludEZ1
bmN0b3IpOwogCkBAIC0yNjE3LDYgKzI2MTgsMTA5IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRk
Q2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsUmVmKGNv
bnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBS
ZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgbV9tYWtlc0NhbGxz
ID0gdHJ1ZTsKKyAgICAvLyBOb3RlOiBjYWxsIGluZGlyZWN0IGNhbiBjYWxsIGVpdGhlciBXZWJB
c3NlbWJseUZ1bmN0aW9uIG9yIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBCZWNhdXNlCisg
ICAgLy8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gaXMgbGlrZSBjYWxsaW5nIGludG8gdGhl
IGVtYmVkZGVyLCB3ZSBjb25zZXJ2YXRpdmVseSBhc3N1bWUgYWxsIGNhbGwgaW5kaXJlY3RzCisg
ICAgLy8gY2FuIGJlIHRvIHRoZSBlbWJlZGRlciBmb3Igb3VyIHN0YWNrIGNoZWNrIGNhbGN1bGF0
aW9uLgorICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1KU0Nh
bGxBcmd1bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOworICAgIEV4
cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb24gPSBhcmdzLnRha2VMYXN0KCk7CisKKyAgICAv
LyBEbyBhIGNvbnRleHQgc3dpdGNoIGlmIG5lZWRlZC4KKyAgICB7CisgICAgICAgIFZhbHVlKiBv
ZmZzZXQgPSBjb25zdGFudChwb2ludGVyVHlwZSgpLCBzYWZlQ2FzdDxpbnQzMl90PihXZWJBc3Nl
bWJseUZ1bmN0aW9uQmFzZTo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSk7CisgICAgICAgIFZhbHVlKiB0
YXJnZXRJbnN0YW5jZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1f
cHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksCisgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3JpZ2luKCksIGNhbGxhYmxl
RnVuY3Rpb24sIG9mZnNldCkpOworICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBt
X3Byb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0g
bV9wcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5j
ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdp
bigpLAorICAgICAgICAgICAgdGFyZ2V0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CisgICAg
ICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJh
bmNoLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIGlzU2FtZUNvbnRleHRJbnN0YW5jZSwgRnJlcXVl
bnRlZEJsb2NrKGNvbnRpbnVhdGlvbiksIEZyZXF1ZW50ZWRCbG9jayhkb0NvbnRleHRTd2l0Y2gp
KTsKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBkb0NvbnRleHRTd2l0
Y2gtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAg
ICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5n
IHdpdGggQm91bmRzQ2hlY2tpbmcgbWVtb3J5LgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjE4MQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5m
bzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKHRhcmdldEluc3RhbmNlLCBWYWx1ZVJlcDo6U29t
ZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwg
VmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRj
aFJlZ2lzdGVycyA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyAx
IDogMDsKKworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Cisg
ICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGpp
dCk7CisgICAgICAgICAgICBHUFJSZWcgdGFyZ2V0SW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7
CisgICAgICAgICAgICBHUFJSZWcgb2xkQ29udGV4dEluc3RhbmNlID0gcGFyYW1zWzFdLmdwcigp
OworICAgICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlu
bmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0g
cGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAgICAgICAgIEFTU0VSVCh0YXJnZXRJ
bnN0YW5jZSAhPSBiYXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hl
ZFN0YWNrTGltaXQoKSksIGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJh
c2VNZW1vcnksIENDYWxsSGVscGVyczo6QWRkcmVzcyh0YXJnZXRJbnN0YW5jZSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7CisgICAgICAgICAgICBqaXQuc3RvcmVXYXNt
Q29udGV4dEluc3RhbmNlKHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAgICAgIEFTU0VSVChwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IGJhc2VNZW1vcnkpOworICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNp
emUgcmVnaXN0ZXIKKyAgICAgICAgICAgIC8vICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCisgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSB0YXJnZXRJbnN0YW5jZSk7CisgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaE9yQm91bmRzQ2hlY2tpbmdTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxl
ZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdz
LmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyOworCisgICAgICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3ModGFyZ2V0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVS
ZWdpc3Rlcik7IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHRhcmdldEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRN
ZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgorCisgICAgICAgICAgICBq
aXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlu
bmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlciwgc2NyYXRjaE9yQm91bmRzQ2hlY2tp
bmdTaXplKTsKKyAgICAgICAgfSk7CisgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgfQorCisgICAgRXhwcmVz
c2lvblR5cGUgY2FsbGVlQ29kZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksCisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5
cGUoKSwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sCisgICAgICAgICAgICBzYWZlQ2FzdDxp
bnQzMl90PihXZWJBc3NlbWJseUZ1bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRp
b24oKSkpKTsKKworICAgIEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlwZSgmc2ln
bmF0dXJlKTsKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsUmVzdWx0ID0gY3JlYXRlQ2FsbFBhdGNo
cG9pbnQobV9jdXJyZW50QmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCisgICAgICAg
IHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPihbPV0gKFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCkgLT4gdm9pZCB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3Rz
LnJlYWRzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBh
bGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0
aGUgaW5zdGFuY2UuCisgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdl
J3JlIGFsd2F5cyBjYWxsaW5nIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZyBzbwor
ICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFs
bHkgb3ZlcnJpZGVzIHRoZSBzaXplIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgbm90IGhhdmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3YXNtLT53YXNtIHN0dWIgYXNz
dW1lcyBpdCBjYW4KKyAgICAgICAgICAgIC8vIHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMg
YXMgc2NyYXRjaDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4
MQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZv
OjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKworICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIp
OworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAg
ICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2go
aml0KTsKKyAgICAgICAgICAgICAgICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1
bHRDb3VudChyZXR1cm5UeXBlKV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSkpOworCisgICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkgewor
ICAgIGNhc2UgQjM6OlZvaWQ6IHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQjM6
OlR1cGxlOiB7CisgICAgICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9j
LnR1cGxlRm9yVHlwZShyZXR1cm5UeXBlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICByZXN1bHRzLmFw
cGVuZChtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmln
aW4oKSwgdHVwbGVbaV0sIGNhbGxSZXN1bHQsIGkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoY2FsbFJlc3VsdCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJl
ZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBt
b2RpZmllZCBvdXIgTWVtb3J5LgorICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJl
c3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUo
KSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lk
IEIzSVJHZW5lcmF0b3I6OnVuaWZ5KGNvbnN0IEV4cHJlc3Npb25UeXBlIHBoaSwgY29uc3QgRXhw
cmVzc2lvblR5cGUgc291cmNlKQogewogICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VXBz
aWxvblZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBzb3VyY2UsIHBoaSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmluZGV4IGRmMGUxY2FmMzA1
NjI0Njc3NmUwMzM5N2QyYWFiMWM5ZDI4ZTE1MzMuLmJjMWZlMzdmZGFmZjVjYmZmMzAwNjdiZGMy
NjJiNmQ4NDYyMmMxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21GdW5jdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
dW5jdGlvblBhcnNlci5oCkBAIC0xMjQ4LDYgKzEyNDgsMzYgQEAgRk9SX0VBQ0hfV0FTTV9NRU1P
UllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CisK
KyAgICBjYXNlIENhbGxSZWY6IHsKKyAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighbV9l
eHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pc1R5cGVJZHgoKSwgIm5vbi1mdW5jcmVmIGNh
bGxfcmVmIHZhbHVlICIsIG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkua2luZCk7CisK
KyAgICAgICAgY29uc3QgU2lnbmF0dXJlSW5kZXggY2FsbGVlU2lnbmF0dXJlSW5kZXggPSByZWlu
dGVycHJldF9jYXN0PFNpZ25hdHVyZUluZGV4PihtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlw
ZSgpLmluZGV4KTsKKyAgICAgICAgY29uc3QgU2lnbmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBT
aWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAg
c2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsg
MTsgLy8gQWRkIHRoZSBjYWxsZWUncyB2YWx1ZS4KKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rihhcmd1bWVudENvdW50ID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhw
ZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0
YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVz
Iik7CisKKyAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiBhcmdzOworICAgICAgICBXQVNN
X1BBUlNFUl9GQUlMX0lGKCFhcmdzLnRyeVJlc2VydmVDYXBhY2l0eShhcmd1bWVudENvdW50ICsg
MSksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciAiLCBhcmd1bWVudENvdW50LCAi
IGNhbGxfaW5kaXJlY3QgYXJndW1lbnRzIik7CisgICAgICAgIHNpemVfdCBmaXJzdEFyZ3VtZW50
SW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBhcmd1bWVudENvdW50OworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gZmlyc3RBcmd1bWVudEluZGV4OyBpIDwgbV9leHByZXNzaW9uU3Rh
Y2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4
cHJlc3Npb25TdGFjay5hdChpKTsKKyAgICAgICAgICAgIGlmIChpIDwgbV9leHByZXNzaW9uU3Rh
Y2suc2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFy
Zy50eXBlKCkgIT0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5k
ZXgpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJn
LnR5cGUoKS5raW5kLCAiLCBleHBlY3RlZCAiLCBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAt
IGZpcnN0QXJndW1lbnRJbmRleCkua2luZCk7CisgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFw
cGVuZChhcmcpOworICAgICAgICAgICAgbV9jb250ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7
CisgICAgICAgIH0KKyAgICAgICAgbV9leHByZXNzaW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1l
bnRJbmRleCk7CisKKyAgICAgICAgUmVzdWx0TGlzdCByZXN1bHRzOworICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRDYWxsUmVmKGNhbGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0
cykpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUu
cmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAgICAgbV9leHByZXNzaW9uU3RhY2suY29uc3Ry
dWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsK
KworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKwogICAgIGNhc2UgQmxvY2s6IHsKICAgICAg
ICAgQmxvY2tTaWduYXR1cmUgaW5saW5lU2lnbmF0dXJlOwogICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1faW5mbywgaW5saW5lU2lnbmF0dXJlKSwgImNh
bid0IGdldCBibG9jaydzIHNpZ25hdHVyZSIpOwpAQCAtMTczOSw2ICsxNzY5LDcgQEAgYXV0byBG
dW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQ
YXJ0aWFsUmVzdWx0CiAgICAgLy8gbm8gaW1tZWRpYXRlIGNhc2VzCiAgICAgRk9SX0VBQ0hfV0FT
TV9CSU5BUllfT1AoQ1JFQVRFX0NBU0UpCiAgICAgRk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVB
VEVfQ0FTRSkKKyAgICBjYXNlIENhbGxSZWY6CiAgICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBj
YXNlIE5vcDoKICAgICBjYXNlIFJldHVybjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmluZGV4IDUzN2VlNTY1MjBlZDU4NDMwMWY0ODIw
NDk2MmNmMjc4NmJkYjM0ZmQuLmNlMjliNjhmOTgxMDQ1YmNjNjM2MWIyMTIxOWY0ZDAzMWVkZjJj
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJh
dG9yLmNwcApAQCAtMjUzLDYgKzI1Myw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3Vs
dExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CiAKICAg
ICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMoKTsKQEAgLTExMDIsNiArMTEwMywyMSBAQCBh
dXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwg
Y29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gTExJbnRH
ZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1
bHQKK3sKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWUgPSBhcmdzLnRha2VMYXN0KCk7CisKKyAg
ICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKHNp
Z25hdHVyZSk7CisgICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVudHMsIGFyZ3Mp
OworICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExTKCkpCisgICAgICAgIFdhc21DYWxsUmVmOjpl
bWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBp
bmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgIGVsc2UK
KyAgICAgICAgV2FzbUNhbGxSZWZOb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2Nr
LT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJP
ZlN0YWNrQXJndW1lbnRzKTsKKyAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVzdWx0cyk7CisKKyAg
ICByZXR1cm4geyB9OworfQorCiBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhw
cmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKICAgICByZXN1bHQgPSBwdXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuY3BwCmluZGV4IGE2MWQwY2M3ZmYzMjlkYjVkNjE5NGVlNjg1YmQ1Mjkx
OWNiY2Q0NTkuLmY1YmZiYzE5MzUxYmE1YTRjYTkxN2I3Nzc2NjQ1MTFiNjkyYzYwNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1
Y3RzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCiAjaW5jbHVkZSAiV2FzbUJCUVBsYW4uaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVl
LmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2FzbU9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgor
I2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CiAKQEAgLTQ5OCw2ICs1MDAsMzggQEAgV0FTTV9TTE9XX1BBVEhfREVDTChj
YWxsX2luZGlyZWN0X25vX3RscykKICAgICByZXR1cm4gZG9XYXNtQ2FsbEluZGlyZWN0KGNhbGxG
cmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgsIGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwg
aW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7CiB9CiAKK2lubGluZSBTbG93UGF0aFJldHVy
blR5cGUgZG9XYXNtQ2FsbFJlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2Uq
IGluc3RhbmNlLCBKU1ZhbHVlIHRhcmdldFJlZmVyZW5jZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKKworICAgIEFTU0VSVCh0YXJnZXRSZWZlcmVuY2UuaXNPYmplY3QoKSk7Cisg
ICAgSlNPYmplY3QqIHJlZmVyZW5jZUFzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0
UmVmZXJlbmNlKTsKKyAgICBBU1NFUlQocmVmZXJlbmNlQXNPYmplY3QtPmluaGVyaXRzPFdlYkFz
c2VtYmx5RnVuY3Rpb24+KGluc3RhbmNlLT5vd25lcjxKU09iamVjdD4oKS0+dm0oKSkpOworCisg
ICAgV2ViQXNzZW1ibHlGdW5jdGlvbiogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdlYkFzc2VtYmx5
RnVuY3Rpb24qPihyZWZlcmVuY2VBc09iamVjdCk7CisgICAgV2FzbTo6SW5zdGFuY2UqIHRhcmdl
dEluc3RhbmNlID0gJndhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+aW5zdGFuY2UoKTsKKworICAg
IGlmICh0YXJnZXRJbnN0YW5jZSAhPSBpbnN0YW5jZSkKKyAgICAgICAgdGFyZ2V0SW5zdGFuY2Ut
PnNldENhY2hlZFN0YWNrTGltaXQoaW5zdGFuY2UtPmNhY2hlZFN0YWNrTGltaXQoKSk7CisKKyAg
ICBjb25zdCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uJiBmdW5jdGlvbiA9IHdh
c21GdW5jdGlvbi0+aW1wb3J0YWJsZUZ1bmN0aW9uKCk7CisgICAgV0FTTV9DQUxMX1JFVFVSTih0
YXJnZXRJbnN0YW5jZSwgZnVuY3Rpb24uZW50cnlwb2ludExvYWRMb2NhdGlvbi0+ZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgV2FzbUVudHJ5UHRyVGFnKTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChj
YWxsX3JlZikKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmLCBX
YXNtT3Bjb2RlVHJhaXRzPigpOworICAgIEpTVmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVj
b2RlKFJFQUQoaW5zdHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJl
bmNlKTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZl9ub190bHMpCit7CisgICAg
YXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZk5vVGxzLCBXYXNtT3Bjb2RlVHJh
aXRzPigpOworICAgIEpTVmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5z
dHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0
dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlKTsKK30KKwog
V0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZikKIHsKICAgICBhdXRvIGluc3RydWN0
aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKaW5kZXggZjhhYWNhMDhkMzEy
ODg0YWYxN2JjYmJiNzdiNzZkZWJmNDY1ZDMyYS4uNWIyYjhmMjg5NWExZTZjODJmNDA5ZjZlNWU4
NmNjZGYwZmQ1MDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0
aHMuaApAQCAtNzYsNiArNzYsOCBAQCBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsKTsK
IFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGxfbm9fdGxzKTsKIFdBU01fU0xPV19QQVRI
X0hJRERFTl9ERUNMKGNhbGxfaW5kaXJlY3QpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
Y2FsbF9pbmRpcmVjdF9ub190bHMpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9y
ZWYpOworV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9yZWZfbm9fdGxzKTsKIFdBU01f
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNldF9nbG9iYWxfcmVmKTsKIFdBU01fU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNldF9nbG9iYWxfcmVmX3BvcnRhYmxlX2JpbmRpbmcpOwogV0FTTV9TTE9XX1BB
VEhfSElEREVOX0RFQ0wobWVtb3J5X2F0b21pY193YWl0MzIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vd2FzbS5qc29uCmluZGV4IDJhNzI4N2Q5NjA5MDAwMTlmZGExMWNkNjc0ZjJhMDFiMmRiZjE1
ODguLjc5NDA5MmI3NmRkNzBmNDcyNDM3Zjc2OWNhNDdiNDY0NWZmY2I4MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTg1LDYgKzg1LDcgQEAKICAgICAgICAgImRhdGEu
ZHJvcCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJleHR0YWJsZSIsICAgInZhbHVlIjogIDI1
MiwgInJldHVybiI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIi
OiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjog
InNlZ21lbnRfaW5kZXgiLCAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBz
aXplIG9mIHRoZSBzZWdtZW50IHRvIHplcm8iLCAiZXh0ZW5kZWRPcCI6IDkgfSwKICAgICAgICAg
ImNhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVl
IjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJu
YW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEg
ZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAogICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAg
IHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2
YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRo
IGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKKyAgICAgICAgImNhbGxfcmVmIjogICAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJj
YWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAg
ICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9
LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIs
ICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7
ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIi
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJp
MzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6
ICA0NiwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1l
dGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zm
c2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20g
bWVtb3J5IiB9LApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCBlNDZkMDBlMjQyMTA4ZTkyNGUxYTdkNDdiZWFiYTczNGIxYjQ1M2JkLi40NWUy
NTUzN2E3Y2ZkMTQwZjgyNGMxMTk5NWMwNGMxNTIwMWI4YzkzIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIx
LTAzLTA4ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW1dBU00tRnVuY3Rpb24tUmVmZXJlbmNlc10gQWRkIGNhbGxfcmVmIGluc3RydWN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5MDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlciBi
YXNpYyBjYWxsX3JlZiB0ZXN0IGNhc2VzIC0gY3Jvc3MtaW5zdGFuY2UgY2FsbAorICAgICAgICBh
bmQgc2FtZS1pbnN0YW5jZSBjYWxsLgorCisgICAgICAgICogd2FzbS55YW1sOgorICAgICAgICAq
IHdhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qczogQWRkZWQuCisgICAgICAgICht
b2R1bGUpOgorICAgICAgICAoYXN5bmMgYmFzaWNzKToKKyAgICAgICAgKGFzeW5jIGluZGlyZWN0
Q2FsbCk6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMDMtMDYgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEJvb2xlYW5Db25zdHJ1
Y3RvciBzaG91bGQgYmUgaW5saW5lZCBpbiBERkcgLyBGVEwKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS55YW1sIGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggZjU2NjM3ZDhjNDBmNTFmYWNhNjVi
M2E3NDJkODFiZGZlODYzMTI5My4uMmFhMGU0Nzk3ZmU1MTliYmM4OTQwNmZmN2Q4ZTNlN2E4ZDll
YmFmZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlh
bWwKQEAgLTMzLDYgKzMzLDggQEAKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBw
YXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20vcmVmZXJlbmNlcwogICBjbWQ6IHJ1bldlYkFz
c2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKKy0gcGF0aDogd2FzbS9mdW5jdGlv
bi1yZWZlcmVuY2VzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5D
b21tYW5kcwogLSBwYXRoOiB3YXNtL2Z1enoKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVu
bGVzcyBwYXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20vbG93RXhlY3V0YWJsZU1lbW9yeQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanMg
Yi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZDEzYzVmNWJmMjE1MWEwNzdhNzlhNWE4YzM5NjFlMmJkOWZhM2MyCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanMKQEAgLTAs
MCArMSw1OCBAQAorLy9AIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBl
ZEZ1bmN0aW9uUmVmZXJlbmNlcz10cnVlIikKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9h
c3NlcnQuanMnOworaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIu
anMiOworCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVm
ZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVp
bnQ4QXJyYXkoYnVmZmVyKTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsr
aSkgeworICAgIHZpZXdbaV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGJhc2lj
cygpIHsKKyAgLyoKKyAgKG1vZHVsZQorICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1
bmMgJGZvbykpCisgICAgKGZ1bmMgJGZvbyAocGFyYW0gJHggaTMyKSAocmVzdWx0IGkzMikKKyAg
ICAgIChpMzIuYWRkIChsb2NhbC5nZXQgJHgpCisgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDE5
KQorICAgICAgKQorICAgICkKKyAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIp
CisgICAgICAoY2FsbF9yZWYgKGkzMi5jb25zdCAxMCkgKHJlZi5mdW5jICRmb28pKQorICAgICkK
KyAgKQorICAqLworICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NjBceDAx
XHg3Zlx4MDFceDdmXHg2MFx4MDBceDAxXHg3Zlx4MDNceDAzXHgwMlx4MDBceDAxXHgwN1x4MDhc
eDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MDlceDA1XHgwMVx4MDNceDAwXHgwMVx4
MDBceDBhXHgxMVx4MDJceDA3XHgwMFx4MjBceDAwXHg0MVx4MTNceDZhXHgwYlx4MDdceDAwXHg0
MVx4MGFceGQyXHgwMFx4MTRceDBiIikpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDI5KTsKK30KKworYXN5bmMgZnVuY3Rpb24gaW5kaXJlY3RDYWxsKCkgeworICBsZXQg
d2F0ID0gYAorICAobW9kdWxlCisgICAgKGZ1bmMgKGV4cG9ydCAiYmFyIikgKHBhcmFtICR4IGkz
MikgKHJlc3VsdCBpMzIpCisgICAgICAoaTMyLmFkZCAobG9jYWwuZ2V0ICR4KQorICAgICAgICAg
ICAgICAgKGkzMi5jb25zdCAxOSkpCisgICAgKQorICApYDsKKyAgY29uc3QgYmFyUHJvdmlkZXIg
PSBhd2FpdCBpbnN0YW50aWF0ZSh3YXQsIHt9LCB7cmVmZXJlbmNlX3R5cGVzOiB0cnVlfSk7CisK
KyAgLyoKKyAgKG1vZHVsZQorICAgIChpbXBvcnQgImV4cG9ydHMiICJiYXIiIChmdW5jICRiYXIg
KHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZWxlbSBkZWNsYXJlIGZ1bmNyZWYgKHJl
Zi5mdW5jICRiYXIpKQorICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAg
ICAgIChjYWxsX3JlZiAoaTMyLmNvbnN0IDEwKSAocmVmLmZ1bmMgJGJhcikpCisgICAgKQorICAp
CisgICovCisgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKKyAgICBt
b2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4
MDFceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdmXHgwMlx4MGZceDAxXHgwN1x4NjVceDc4XHg3
MFx4NmZceDcyXHg3NFx4NzNceDAzXHg2Mlx4NjFceDcyXHgwMFx4MDBceDAzXHgwMlx4MDFceDAx
XHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MDlceDA1XHgwMVx4MDNc
eDAwXHgwMVx4MDBceDBhXHgwOVx4MDFceDA3XHgwMFx4NDFceDBhXHhkMlx4MDBceDE0XHgwYiIp
LAorICAgIGJhclByb3ZpZGVyKTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigp
LCAyOSk7Cit9CisKK2Fzc2VydC5hc3luY1Rlc3QoYmFzaWNzKCkpOworYXNzZXJ0LmFzeW5jVGVz
dChpbmRpcmVjdENhbGwoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIv
SlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCAyYTcyODdkOTYwOTAwMDE5ZmRhMTFjZDY3NGYy
YTAxYjJkYmYxNTg4Li43OTQwOTJiNzZkZDcwZjQ3MjQzN2Y3NjljYTQ3YjQ2NDVmZmNiODAxIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNt
Lmpzb24KQEAgLTg1LDYgKzg1LDcgQEAKICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJleHR0YWJsZSIsICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgiLCAg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdtZW50
IHRvIHplcm8iLCAiZXh0ZW5kZWRPcCI6IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwg
ICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2lu
ZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGlu
ZGV4IiB9LAogICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNh
bGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50
MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2Ny
aXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25h
dHVyZSIgfSwKKyAgICAgICAgImNhbGxfcmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJj
YWxsIiwgICAgICAgInZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxv
YWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQs
ICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
ZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIs
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9y
eSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1v
cnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0
aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsi
aTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423144</attachid>
            <date>2021-03-15 00:12:56 -0700</date>
            <delta_ts>2021-04-02 05:03:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222903-20210315141254.patch</filename>
            <type>text/plain</type>
            <size>37249</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTUyN2U1YmQ5YTQyN2UyNzk2MjIxZTQwOGI3YTUyZDY1YWE5NTMyLi40NTFjZTFkNDFlM2UwYTc2
MDE4N2JjMGNiNDI0N2FiZGY3M2M0YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0wMy0wOCAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxs
X3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbGxfcmVmIGluc3RydWN0aW9uIGZyb20gdHlwZWQg
ZnVuY3Rpb24KKyAgICAgICAgcmVmZXJlbmNlcyBwcm9wb3NhbDogaHR0cHM6Ly9naXRodWIuY29t
L1dlYkFzc2VtYmx5L2Z1bmN0aW9uLXJlZmVyZW5jZXMvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2Z1
bmN0aW9uLXJlZmVyZW5jZXMvT3ZlcnZpZXcubWQuCisgICAgICAgIFRoaXMgaW5zdHJ1Y3Rpb24g
Y2FsbHMgZ2l2ZW4gZnVuY3Rpb24gcmVmZXJlbmNlcyBmcm9tIHRoZSBzdGFjay4KKyAgICAgICAg
V2UganVzdCByZXRyaWV2ZSB0aGUgaW5zdGFuY2UgYW5kIGZ1bmN0aW9uIGNvZGUgcG9pbnRlcnMg
ZnJvbSBwYXNzZWQgV2ViQXNzZW1ibHlGdW5jdGlvbiBhbmQgZW1pdCB0aGUgY2FsbC4KKyAgICAg
ICAgQWxsIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXN1bHQgdHlwZSBpcyBwcmVwYXJlZCBpbiBy
ZWYuZnVuYy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5
TGV2ZWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L1dlYkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBydW50aW1lL0dhdGUuaDoKKyAg
ICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpB
aXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZik6CisgICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRp
cmVjdCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgor
ICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206
OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Np
b24pOgorICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAgICAqIHdhc20vV2Fz
bVNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojpkb1dhc21DYWxsUmVmKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OldBU01fU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHdhc20v
V2FzbVNsb3dQYXRocy5oOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTAzLTA2
ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI3NDA0MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGNiMGU3YzhjOWJiYmExNGM1N2QyMmI0YmEyN2Vi
ZmI5ZDcyOTc3NmEuLjE2NDEwMWZlY2UwNDI2YTAwMmZmNWE0N2ExYzAyNGI4OTQ2NjQ0M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgpAQCAt
MTQ3NCw2ICsxNDc0LDggQEAgb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGwKIG9wIDp3YXNt
X3RyYW1wb2xpbmVfd2FzbV9jYWxsX25vX3Rscwogb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2Nh
bGxfaW5kaXJlY3QKIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rs
cworb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmCitvcCA6d2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF9yZWZfbm9fdGxzCiAKIGVuZF9zZWN0aW9uIDpOYXRpdmVIZWxwZXJzCiAKQEAg
LTE0OTUsNiArMTQ5Nyw4IEBAIG9wIDpjYWxsX3JldHVybl9sb2NhdGlvbgogb3AgOmNhbGxfbm9f
dGxzX3JldHVybl9sb2NhdGlvbgogb3AgOmNhbGxfaW5kaXJlY3RfcmV0dXJuX2xvY2F0aW9uCiBv
cCA6Y2FsbF9pbmRpcmVjdF9ub190bHNfcmV0dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9yZWZfcmV0
dXJuX2xvY2F0aW9uCitvcCA6Y2FsbF9yZWZfbm9fdGxzX3JldHVybl9sb2NhdGlvbgogCiAjIEZJ
WE1FOiBXYXNtIGFuZCBKUyBMTEludCBzaG91bGQgc2hhcmUgY29tbW9uIG9wY29kZXMKICMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzY1NgpAQCAtMTY4Niw2ICsx
NjkwLDIyIEBAIG9wIDpjYWxsX2luZGlyZWN0X25vX3RscywKICAgICAgICAgdGFibGVJbmRleDog
dW5zaWduZWQsCiAgICAgfQogCitvcCA6Y2FsbF9yZWYsCisgICAgYXJnczogeworICAgICAgICBm
dW5jdGlvblJlZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRl
eDogdW5zaWduZWQsCisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVt
YmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAorICAgIH0KKworb3AgOmNhbGxfcmVmX25vX3RscywK
KyAgICBhcmdzOiB7CisgICAgICAgIGZ1bmN0aW9uUmVmZXJlbmNlOiBWaXJ0dWFsUmVnaXN0ZXIs
CisgICAgICAgIHNpZ25hdHVyZUluZGV4OiB1bnNpZ25lZCwKKyAgICAgICAgc3RhY2tPZmZzZXQ6
IHVuc2lnbmVkLAorICAgICAgICBudW1iZXJPZlN0YWNrQXJnczogdW5zaWduZWQsCisgICAgfQor
CiBvcCA6Y3VycmVudF9tZW1vcnksCiAgICAgYXJnczogewogICAgICAgICBkc3Q6IFZpcnR1YWxS
ZWdpc3RlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCBhY2EwMGRlNGY2NTFmOTRlYTQ4Yzk0YzY4NTk5ZWE1ZDI3ZWRiYzEyLi40OGUyNWM1
NDFmOWZhOTg4OTI2NmM0NzliYTA4NjQ5YTBjNTEyYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0zNjgsNiArMzY4LDggQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEkKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9f
dGxzOgogICAgIGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdDoKICAgICBj
YXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorICAgIGNhc2Ug
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWY6CisgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVf
d2FzbV9jYWxsX3JlZl9ub190bHM6CiAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAg
IH0KICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzNWI4NjA4ZjlmNjg4YzJh
NzAzYzY5ZjAxNTQyYzk1ZjkwYmZkNTZiLi45MjcyNTlmYjhhZTNjODRlZWI0ODIxYTVhNmUxMjI2
OTBmMzY3ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNTAzLDE0ICsyNTAzLDIwIEBAIF93YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzOgogX3dhc21f
dHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Q6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2Fs
bF9pbmRpcmVjdF9ub190bHM6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWY6Citfd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzOgogX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfd2lkZTE2OgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUxNjoK
IF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUxNjoKIF93YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMTY6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF9yZWZfd2lkZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25v
X3Rsc193aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF93aWRlMzI6CiBfd2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHNfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfaW5kaXJlY3Rfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJl
Y3Rfbm9fdGxzX3dpZGUzMjoKK193YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl93aWRlMzI6
Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzX3dpZGUzMjoKICAgICBjcmFz
aCgpCiAKIGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFz
c2VtYmx5LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20K
aW5kZXggNTUxN2IyNTc3MjhmZDU0ZGY3NDNjZDkyYzlhMjczY2M2Y2ExN2YyOS4uNGZlZmY3ZTUw
ZTM5N2ZhZTlmODlmMzZlYTgzZGNiOTk0NDI0N2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCkBAIC04NzcsNiArODc3LDE0IEBAIHdhc21PcChjYWxs
X2luZGlyZWN0X25vX3RscywgV2FzbUNhbGxJbmRpcmVjdE5vVGxzLCBtYWNybyhjdHgpCiAgICAg
c2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9jYWxsX2luZGlyZWN0X25v
X3RscywgbWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0
YW5jZSBlbmQpCiBlbmQpCiAKK3dhc21PcChjYWxsX3JlZiwgV2FzbUNhbGxSZWYsIG1hY3JvKGN0
eCkKKyAgICBzbG93UGF0aEZvcldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfcmVm
LCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQorZW5kKQorCit3YXNtT3AoY2FsbF9yZWZfbm9fdGxz
LCBXYXNtQ2FsbFJlZk5vVGxzLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChj
dHgsIF9zbG93X3BhdGhfd2FzbV9jYWxsX3JlZl9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNl
KSBtb3ZlIHRhcmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQorZW5kKQorCiB3YXNtT3Ao
Y3VycmVudF9tZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBtYWNybyhjdHgpCiAgICAgbG9hZHAg
V2FzbTo6SW5zdGFuY2U6Om1fbWVtb3J5W3dhc21JbnN0YW5jZV0sIHQwCiAgICAgbG9hZHAgV2Fz
bTo6TWVtb3J5OjptX2hhbmRsZVt0MF0sIHQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HYXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRl
LmgKaW5kZXggNDY5NzE1Zjk2M2EyODRmNjFmMjYxMGE4N2U1YTgwN2I1NTQyZTgwMy4uZjZhMDVi
MDY1ZTMyZDhhZWNkNTY3YmY2YWI3NGFhZTYzODk5Nzc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dhdGUuaApAQCAtNjgsNiArNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB2KHdh
c21fY2FsbF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAogICAgIHYod2FzbV9jYWxs
X2luZGlyZWN0LCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKICAgICB2KHdhc21fY2FsbF9pbmRp
cmVjdF9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxsX3Jl
ZiwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCisgICAgdih3YXNtX2NhbGxfcmVmX25vX3Rscywg
SlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCiAKICNlbHNlCiAjZGVmaW5lIEpTQ19XQVNNX0dBVEVf
T1BDT0RFUyh2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFp
cklSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdl
bmVyYXRvci5jcHAKaW5kZXggNDQzOGE1Njg1MjIwMDA2OGYyYTg2NzgwYjY2MGJlNWY0M2YyZjc5
Ni4uYzFmNmZhNGU1NTFkZWJmMzMxNmVjMDM4Mjk5ZDAzOWZkNDkyYWQ0YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCkBAIC0zMjUs
NiArMzI1LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJO
X1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0
dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7
CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVu
c2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9V
TlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKICAgICBCMzo6UGF0Y2hwb2ludFZh
bHVlKiBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqLCBj
b25zdCBTaWduYXR1cmUmLCBjb25zdCBSZXN1bHRMaXN0JiByZXN1bHRzLCBjb25zdCBWZWN0b3I8
VHlwZWRUbXA+JiBhcmdzLCBWZWN0b3I8Q29uc3RyYWluZWRUbXA+JiYgZXh0cmFBcmdzID0geyB9
KTsKIApAQCAtMzQxNyw2ICszNDE4LDk3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJ
bmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZihjb25zdCBT
aWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0
TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxlZUZ1bmN0aW9uID0gYXJncy50YWtlTGFzdCgpOworICAgIG1fbWFrZXNDYWxscyA9IHRydWU7
CisgICAgLy8gTm90ZTogY2FsbCBpbmRpcmVjdCBjYW4gY2FsbCBlaXRoZXIgV2ViQXNzZW1ibHlG
dW5jdGlvbiBvciBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi4gQmVjYXVzZQorICAgIC8vIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uIGlzIGxpa2UgY2FsbGluZyBpbnRvIHRoZSBlbWJlZGRl
ciwgd2UgY29uc2VydmF0aXZlbHkgYXNzdW1lIGFsbCBjYWxsIGluZGlyZWN0cworICAgIC8vIGNh
biBiZSB0byB0aGUgZW1iZWRkZXIgZm9yIG91ciBzdGFjayBjaGVjayBjYWxjdWxhdGlvbi4KKyAg
ICBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyA9IHN0ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1l
bnRzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJncy5zaXplKCkpKTsKKworICAgIGF1dG8gY3Vy
cmVudEluc3RhbmNlID0gZzY0KCk7CisgICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwg
Y3VycmVudEluc3RhbmNlKTsKKworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUgPSBnNjQo
KTsKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjphZGRyKGNhbGxlZUZ1bmN0aW9uLCBXZWJBc3NlbWJs
eUZ1bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSksIGNhbGxlZUNvZGUp
OyAvLyBQb2ludGVyIHRvIGNhbGxlZSBjb2RlLgorCisgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRj
aCBpZiBuZWVkZWQuCisgICAgeworICAgICAgICBhdXRvIHRhcmdldEluc3RhbmNlID0gZzY0KCk7
CisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIoY2FsbGVlRnVuY3Rpb24sIFdlYkFzc2Vt
Ymx5RnVuY3Rpb25CYXNlOjpvZmZzZXRPZkluc3RhbmNlKCkpLCB0YXJnZXRJbnN0YW5jZSk7CisK
KyAgICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9jb2RlLmFkZEJsb2NrKCk7
CisgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fY29kZS5hZGRCbG9jaygpOwor
CisgICAgICAgIGFwcGVuZChCcmFuY2g2NCwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCksIHRhcmdldEluc3RhbmNlLCBpbnN0YW5jZVZhbHVlKCkpOworICAgICAgICBtX2N1cnJl
bnRCbG9jay0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24sIGRvQ29udGV4dFN3aXRjaCk7CisK
KyAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOworICAg
ICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIC8v
IFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgY2FsbGluZyBzb21ldGhpbmcgd2l0aCBC
b3VuZHNDaGVja2luZyBtZW1vcnkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2
ZSB0byBkbyB0aGlzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcy
MTgxCisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAg
ICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBHaWdhY2FnZTo6aXNFbmFibGVk
KEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gMSA6IDA7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVnIHRhcmdldElu
c3RhbmNlID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIG9sZENvbnRleHRJ
bnN0YW5jZSA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lz
dGVySW5mbyYgcGlubmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CisgICAgICAg
ICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Cisg
ICAgICAgICAgICBBU1NFUlQodGFyZ2V0SW5zdGFuY2UgIT0gYmFzZU1lbW9yeSk7CisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob2xkQ29udGV4dEluc3RhbmNl
LCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpLCBiYXNlTWVtb3J5KTsKKyAg
ICAgICAgICAgIGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
dGFyZ2V0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOwor
ICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHRJbnN0YW5jZSh0YXJnZXRJbnN0YW5jZSk7
CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBt
ZW1vcnkgc2l6ZSByZWdpc3RlcgorICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAgICAgICAgICAgIEFTU0VSVChwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IHRhcmdldEluc3RhbmNlKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6
aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBp
bm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXI7CisKKyAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0YXJnZXRJbnN0YW5jZSwgSW5zdGFuY2U6Om9m
ZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNr
aW5nU2l6ZVJlZ2lzdGVyKTsgLy8gQm91bmQgY2hlY2tpbmcgc2l6ZS4KKyAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0YXJnZXRJbnN0YW5jZSwgSW5zdGFuY2U6
Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4K
KworICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUs
IGJhc2VNZW1vcnksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0
Y2hPckJvdW5kc0NoZWNraW5nU2l6ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGVtaXRQYXRj
aHBvaW50KGRvQ29udGV4dFN3aXRjaCwgcGF0Y2hwb2ludCwgVG1wKCksIHRhcmdldEluc3RhbmNl
LCBpbnN0YW5jZVZhbHVlKCkpOworICAgICAgICBhcHBlbmQoZG9Db250ZXh0U3dpdGNoLCBKdW1w
KTsKKyAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5zZXRTdWNjZXNzb3JzKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgfQorCisgICAg
YXBwZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsZWVDb2RlKSwgY2FsbGVlQ29kZSk7CisKKyAgICBW
ZWN0b3I8Q29uc3RyYWluZWRUbXA+IGV4dHJhQXJnczsKKyAgICBleHRyYUFyZ3MuYXBwZW5kKGNh
bGxlZUNvZGUpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1
cm5Db3VudCgpOyArK2kpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKHRtcEZvclR5cGUoc2lnbmF0
dXJlLnJldHVyblR5cGUoaSkpKTsKKworICAgIGF1dG8qIHBhdGNocG9pbnQgPSBlbWl0Q2FsbFBh
dGNocG9pbnQobV9jdXJyZW50QmxvY2ssIHNpZ25hdHVyZSwgcmVzdWx0cywgYXJncywgV1RGTW92
ZShleHRyYUFyZ3MpKTsKKworICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFs
IHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2Uu
CisgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSdyZSBhbHdheXMgY2FsbGluZyBz
b21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcgc28KKyAgICAvLyBiZWNhdXNlIHRoZSB3
YXNtLT53YXNtIHRodW5rIHVuY29uZGl0aW9uYWxseSBvdmVycmlkZXMgdGhlIHNpemUgcmVnaXN0
ZXJzLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhhdmUgdG8gZG8gdGhpcywgYnV0IHRo
ZSB3YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4KKyAgICAvLyB1c2UgYWxsIHRoZSBwaW5u
ZWQgcmVnaXN0ZXJzIGFzIHNjcmF0Y2g6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzIxODEKKworICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lz
dGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisKKyAg
ICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgaml0LmNh
bGwocGFyYW1zW3BhcmFtcy5wcm9jKCkucmVzdWx0Q291bnQocGFyYW1zLnZhbHVlKCktPnR5cGUo
KSldLmdwcigpLCBXYXNtRW50cnlQdHJUYWcpOworICAgIH0pOworCisgICAgLy8gVGhlIGNhbGwg
Y291bGQgaGF2ZSBiZWVuIHRvIGFub3RoZXIgV2ViQXNzZW1ibHkgaW5zdGFuY2UsIGFuZCAvIG9y
IGNvdWxkIGhhdmUgbW9kaWZpZWQgb3VyIE1lbW9yeS4KKyAgICByZXN0b3JlV2ViQXNzZW1ibHlH
bG9iYWxTdGF0ZShSZXN0b3JlQ2FjaGVkU3RhY2tMaW1pdDo6WWVzLCBtX2luZm8ubWVtb3J5LCBj
dXJyZW50SW5zdGFuY2UsIG1fY3VycmVudEJsb2NrKTsKKworICAgIHJldHVybiB7IH07Cit9CisK
IHZvaWQgQWlySVJHZW5lcmF0b3I6OnVuaWZ5KGNvbnN0IEV4cHJlc3Npb25UeXBlIGRzdCwgY29u
c3QgRXhwcmVzc2lvblR5cGUgc291cmNlKQogewogICAgIEFTU0VSVChpc1N1YnR5cGUoc291cmNl
LnR5cGUoKSwgZHN0LnR5cGUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDgwMDkyZDljNzEzOTNkNDJlMzZkNjNkNjc5MGQ3
YmFmNGFjNTVhZDguLjA5NjUzN2RlMjk0YmI1MmJlMzgxNzBkOTRjNGM2OGRmNDc5MDZhMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
QEAgLTI4NSw2ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbHMKICAgICBQYXJ0aWFsUmVz
dWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25z
dCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiBy
ZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5k
aXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJl
c3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIEIzOjpWYWx1
ZSogY3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayosIE9yaWdpbiwgY29uc3QgU2lnbmF0
dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgY29uc3QgU2NvcGVkTGFtYmRhPHZv
aWQoUGF0Y2hwb2ludFZhbHVlKik+JiBwYXRjaHBvaW50RnVuY3Rvcik7CiAKQEAgLTI2MTcsNiAr
MjYxOCwxMDkgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQg
dGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXQKICAgICByZXR1cm4geyB9OwogfQog
CithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+
IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBtX21ha2VzQ2FsbHMgPSB0cnVlOworICAgIC8vIE5vdGU6
IGNhbGwgaW5kaXJlY3QgY2FuIGNhbGwgZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2Vi
QXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZh
dGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVjdHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVt
YmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2FsY3VsYXRpb24uCisgICAgbV9tYXhOdW1KU0Nh
bGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGFibGVG
dW5jdGlvbiA9IGFyZ3MudGFrZUxhc3QoKTsKKworICAgIC8vIERvIGEgY29udGV4dCBzd2l0Y2gg
aWYgbmVlZGVkLgorICAgIHsKKyAgICAgICAgVmFsdWUqIG9mZnNldCA9IGNvbnN0YW50KHBvaW50
ZXJUeXBlKCksIHNhZmVDYXN0PGludDMyX3Q+KFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpvZmZz
ZXRPZkluc3RhbmNlKCkpKTsKKyAgICAgICAgVmFsdWUqIHRhcmdldEluc3RhbmNlID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlw
ZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFs
dWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgb2Zmc2V0KSk7Cisg
ICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRCbG9jaygpOworICAg
ICAgICBCYXNpY0Jsb2NrKiBkb0NvbnRleHRTd2l0Y2ggPSBtX3Byb2MuYWRkQmxvY2soKTsKKwor
ICAgICAgICBWYWx1ZSogaXNTYW1lQ29udGV4dEluc3RhbmNlID0gbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCisgICAgICAgICAgICB0YXJn
ZXRJbnN0YW5jZSwgaW5zdGFuY2VWYWx1ZSgpKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEIzOjpCcmFuY2gsIG9yaWdpbigpLAorICAgICAg
ICAgICAgaXNTYW1lQ29udGV4dEluc3RhbmNlLCBGcmVxdWVudGVkQmxvY2soY29udGludWF0aW9u
KSwgRnJlcXVlbnRlZEJsb2NrKGRvQ29udGV4dFN3aXRjaCkpOworCisgICAgICAgIFBhdGNocG9p
bnRWYWx1ZSogcGF0Y2hwb2ludCA9IGRvQ29udGV4dFN3aXRjaC0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4obV9wcm9jLCBCMzo6Vm9pZCwgb3JpZ2luKCkpOworICAgICAgICBwYXRjaHBvaW50
LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgIC8vIFdlIHBlc3NpbWlzdGlj
YWxseSBhc3N1bWUgd2UncmUgY2FsbGluZyBzb21ldGhpbmcgd2l0aCBCb3VuZHNDaGVja2luZyBt
ZW1vcnkuCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5
TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdp
c3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOworICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQodGFyZ2V0SW5zdGFuY2UsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQoaW5zdGFuY2VWYWx1ZSgpLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVy
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gR2lnYWNhZ2U6
OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IDEgOiAwOworCisgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAgICAgIEdQUlJl
ZyB0YXJnZXRJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBv
bGRDb250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBjb25zdCBQ
aW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86OmdldCgp
OworICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQ
b2ludGVyOworICAgICAgICAgICAgQVNTRVJUKHRhcmdldEluc3RhbmNlICE9IGJhc2VNZW1vcnkp
OworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRl
eHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1l
bW9yeSk7CisgICAgICAgICAgICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHRhcmdldEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xp
bWl0KCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5zdGFuY2UodGFyZ2V0
SW5zdGFuY2UpOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgorICAgICAgICAg
ICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NTIKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lz
dGVyICE9IHRhcmdldEluc3RhbmNlKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JCb3Vu
ZHNDaGVja2luZ1NpemUgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUp
ID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6IHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVn
aXN0ZXI7CisKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh0
YXJnZXRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hlY2tpbmdTaXpl
KCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNp
emUuCisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3ModGFyZ2V0
SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7
IC8vIE1lbW9yeTo6dm9pZCouCisKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShH
aWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5n
U2l6ZVJlZ2lzdGVyLCBzY3JhdGNoT3JCb3VuZHNDaGVja2luZ1NpemUpOworICAgICAgICB9KTsK
KyAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBK
dW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKKworICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IGNvbnRpbnVhdGlvbjsKKyAgICB9CisKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2lu
dGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxN
ZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgY2FsbGFi
bGVGdW5jdGlvbiwKKyAgICAgICAgICAgIHNhZmVDYXN0PGludDMyX3Q+KFdlYkFzc2VtYmx5RnVu
Y3Rpb246Om9mZnNldE9mRW50cnlwb2ludExvYWRMb2NhdGlvbigpKSkpOworCisgICAgQjM6OlR5
cGUgcmV0dXJuVHlwZSA9IHRvQjNSZXN1bHRUeXBlKCZzaWduYXR1cmUpOworICAgIEV4cHJlc3Np
b25UeXBlIGNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywg
b3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQo
UGF0Y2hwb2ludFZhbHVlKik+KFs9XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50KSAtPiB2
b2lkIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1
ZTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOwor
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJl
Z2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAg
ICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgYWx3YXlzIGNhbGxpbmcgc29t
ZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nIHNvCisgICAgICAgICAgICAvLyBiZWNhdXNl
IHRoZSB3YXNtLT53YXNtIHRodW5rIHVuY29uZGl0aW9uYWxseSBvdmVycmlkZXMgdGhlIHNpemUg
cmVnaXN0ZXJzLgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgaGF2ZSB0byBk
byB0aGlzLCBidXQgdGhlIHdhc20tPndhc20gc3R1YiBhc3N1bWVzIGl0IGNhbgorICAgICAgICAg
ICAgLy8gdXNlIGFsbCB0aGUgcGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShNZW1vcnlN
b2RlOjpCb3VuZHNDaGVja2luZykpOworCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
Y2FsbGVlQ29kZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgICAg
IGppdC5jYWxsKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50KHJldHVyblR5cGUpXS5n
cHIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KSk7CisK
KyAgICBzd2l0Y2ggKHJldHVyblR5cGUua2luZCgpKSB7CisgICAgY2FzZSBCMzo6Vm9pZDogewor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBCMzo6VHVwbGU6IHsKKyAgICAgICAgY29u
c3QgVmVjdG9yPEIzOjpUeXBlPiYgdHVwbGUgPSBtX3Byb2MudHVwbGVGb3JUeXBlKHJldHVyblR5
cGUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNv
dW50KCk7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8RXh0cmFjdFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0dXBsZVtpXSwgY2FsbFJl
c3VsdCwgaSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAg
ICByZXN1bHRzLmFwcGVuZChjYWxsUmVzdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IH0KKworICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2Vt
Ymx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCisg
ICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6
OlllcywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3VycmVudEJs
b2NrKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIHZvaWQgQjNJUkdlbmVyYXRvcjo6dW5pZnko
Y29uc3QgRXhwcmVzc2lvblR5cGUgcGhpLCBjb25zdCBFeHByZXNzaW9uVHlwZSBzb3VyY2UpCiB7
CiAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3Jp
Z2luKCksIHNvdXJjZSwgcGhpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZGYwZTFjYWYzMDU2MjQ2Nzc2ZTAzMzk3ZDJhYWIxYzlk
MjhlMTUzMy4uYmMxZmUzN2ZkYWZmNWNiZmYzMDA2N2JkYzI2MmI2ZDg0NjIyYzFkMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTEy
NDgsNiArMTI0OCwzNiBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FT
RSkKIAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KKworICAgIGNhc2UgQ2FsbFJlZjogewor
ICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFtX2V4cHJlc3Npb25TdGFjay5sYXN0KCku
dHlwZSgpLmlzVHlwZUlkeCgpLCAibm9uLWZ1bmNyZWYgY2FsbF9yZWYgdmFsdWUgIiwgbV9leHBy
ZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5raW5kKTsKKworICAgICAgICBjb25zdCBTaWduYXR1
cmVJbmRleCBjYWxsZWVTaWduYXR1cmVJbmRleCA9IHJlaW50ZXJwcmV0X2Nhc3Q8U2lnbmF0dXJl
SW5kZXg+KG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaW5kZXgpOworICAgICAgICBj
b25zdCBTaWduYXR1cmUmIGNhbGxlZVNpZ25hdHVyZSA9IFNpZ25hdHVyZUluZm9ybWF0aW9uOjpn
ZXQoY2FsbGVlU2lnbmF0dXJlSW5kZXgpOworICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9
IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdz
IHZhbHVlLgorICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4
cHJlc3Npb25TdGFjay5zaXplKCksICJjYWxsX3JlZiBleHBlY3RzICIsIGFyZ3VtZW50Q291bnQs
ICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRzICIs
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKKworICAgICAgICBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+IGFyZ3M7CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWFyZ3Mu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGFyZ3VtZW50Q291bnQgKyAxKSwgImNhbid0IGFsbG9jYXRlIGVu
b3VnaCBtZW1vcnkgZm9yICIsIGFyZ3VtZW50Q291bnQsICIgY2FsbF9pbmRpcmVjdCBhcmd1bWVu
dHMiKTsKKyAgICAgICAgc2l6ZV90IGZpcnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKSAtIGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJz
dEFyZ3VtZW50SW5kZXg7IGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgVHlwZWRFeHByZXNzaW9uIGFyZyA9IG1fZXhwcmVzc2lvblN0YWNrLmF0KGkpOwor
ICAgICAgICAgICAgaWYgKGkgPCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSAxKQorICAgICAg
ICAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoYXJnLnR5cGUoKSAhPSBjYWxsZWVTaWdu
YXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCksICJhcmd1bWVudCB0eXBlIG1p
c21hdGNoIGluIGNhbGxfaW5kaXJlY3QsIGdvdCAiLCBhcmcudHlwZSgpLmtpbmQsICIsIGV4cGVj
dGVkICIsIGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KS5r
aW5kKTsKKyAgICAgICAgICAgIGFyZ3MudW5jaGVja2VkQXBwZW5kKGFyZyk7CisgICAgICAgICAg
ICBtX2NvbnRleHQuZGlkUG9wVmFsdWVGcm9tU3RhY2soKTsKKyAgICAgICAgfQorICAgICAgICBt
X2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKKworICAgICAgICBS
ZXN1bHRMaXN0IHJlc3VsdHM7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFkZENh
bGxSZWYoY2FsbGVlU2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKSk7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCisg
ICAgICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQoY2FsbGVlU2ln
bmF0dXJlLnJldHVyblR5cGUoaSksIHJlc3VsdHNbaV0pOworCisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCiAgICAgY2FzZSBCbG9jazogewogICAgICAgICBCbG9ja1NpZ25hdHVyZSBpbmxp
bmVTaWduYXR1cmU7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlQmxvY2tTaWdu
YXR1cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1cmUpLCAiY2FuJ3QgZ2V0IGJsb2NrJ3Mgc2lnbmF0
dXJlIik7CkBAIC0xNzM5LDYgKzE3NjksNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAvLyBu
byBpbW1lZGlhdGUgY2FzZXMKICAgICBGT1JfRUFDSF9XQVNNX0JJTkFSWV9PUChDUkVBVEVfQ0FT
RSkKICAgICBGT1JfRUFDSF9XQVNNX1VOQVJZX09QKENSRUFURV9DQVNFKQorICAgIGNhc2UgQ2Fs
bFJlZjoKICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgIGNhc2UgTm9wOgogICAgIGNhc2UgUmV0
dXJuOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRv
ci5jcHAKaW5kZXggNTM3ZWU1NjUyMGVkNTg0MzAxZjQ4MjA0OTYyY2YyNzg2YmRiMzRmZC4uY2Uy
OWI2OGY5ODEwNDViY2M2MzYxYjIxMjE5ZjRkMDMxZWRmMmM2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCkBAIC0yNTMsNiArMjUz
LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxzCiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNF
RF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVk
IHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFy
Z3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURf
UkVUVVJOIGFkZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkVW5yZWFjaGFibGUoKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2lu
Z0xvY2FscygpOwpAQCAtMTEwMiw2ICsxMTAzLDIxIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZihj
b25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
UmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAoreworICAgIEV4cHJlc3Npb25U
eXBlIGNhbGxlZSA9IGFyZ3MudGFrZUxhc3QoKTsKKworICAgIExMSW50Q2FsbEluZm9ybWF0aW9u
IGluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoc2lnbmF0dXJlKTsKKyAgICB1bmlmeVZh
bHVlc1dpdGhCbG9jayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAgaWYgKENvbnRleHQ6OnVz
ZUZhc3RUTFMoKSkKKyAgICAgICAgV2FzbUNhbGxSZWY6OmVtaXQodGhpcywgY2FsbGVlLCBtX2Nv
ZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8u
bnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAgZWxzZQorICAgICAgICBXYXNtQ2FsbFJlZk5v
VGxzOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1
cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAg
IGluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1
dG8gTExJbnRHZW5lcmF0b3I6OmFkZFJlZklzTnVsbChFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhw
cmVzc2lvblR5cGUmIHJlc3VsdCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IHB1
c2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5k
ZXggYTYxZDBjYzdmZjMyOWRiNWQ2MTk0ZWU2ODViZDUyOTE5Y2JjZDQ1OS4uZjViZmJjMTkzNTFi
YTVhNGNhOTE3Yjc3NzY2NDUxMWI2OTJjNjA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNsb3dQYXRocy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAKICNpbmNsdWRlICJCeXRlY29kZVN0cnVjdHMuaCIKKyNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJX
YXNtQkJRUGxhbi5oIgogI2luY2x1ZGUgIldhc21DYWxsZWUuaCIKQEAgLTQwLDYgKzQxLDcgQEAK
ICNpbmNsdWRlICJXYXNtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIldhc21TaWduYXR1cmVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiV2FzbVdvcmtsaXN0LmgiCisjaW5jbHVkZSAiV2ViQXNzZW1ibHlG
dW5jdGlvbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIApAQCAtNDk4
LDYgKzUwMCwzOCBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfaW5kaXJlY3Rfbm9fdGxzKQog
ICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rp
b25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVy
ZUluZGV4KTsKIH0KIAoraW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dhc21DYWxsUmVmKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBXYXNtOjpJbnN0YW5jZSogaW5zdGFuY2UsIEpTVmFsdWUgdGFy
Z2V0UmVmZXJlbmNlKQoreworICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworCisgICAgQVNT
RVJUKHRhcmdldFJlZmVyZW5jZS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogcmVmZXJlbmNl
QXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0YXJnZXRSZWZlcmVuY2UpOworICAgIEFTU0VS
VChyZWZlcmVuY2VBc09iamVjdC0+aW5oZXJpdHM8V2ViQXNzZW1ibHlGdW5jdGlvbj4oaW5zdGFu
Y2UtPm93bmVyPEpTT2JqZWN0PigpLT52bSgpKSk7CisKKyAgICBXZWJBc3NlbWJseUZ1bmN0aW9u
KiB3YXNtRnVuY3Rpb24gPSBqc0Nhc3Q8V2ViQXNzZW1ibHlGdW5jdGlvbio+KHJlZmVyZW5jZUFz
T2JqZWN0KTsKKyAgICBXYXNtOjpJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UgPSAmd2FzbUZ1bmN0
aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpOworCisgICAgaWYgKHRhcmdldEluc3RhbmNlICE9
IGluc3RhbmNlKQorICAgICAgICB0YXJnZXRJbnN0YW5jZS0+c2V0Q2FjaGVkU3RhY2tMaW1pdChp
bnN0YW5jZS0+Y2FjaGVkU3RhY2tMaW1pdCgpKTsKKworICAgIGNvbnN0IFdhc206Oldhc21Ub1dh
c21JbXBvcnRhYmxlRnVuY3Rpb24mIGZ1bmN0aW9uID0gd2FzbUZ1bmN0aW9uLT5pbXBvcnRhYmxl
RnVuY3Rpb24oKTsKKyAgICBXQVNNX0NBTExfUkVUVVJOKHRhcmdldEluc3RhbmNlLCBmdW5jdGlv
bi5lbnRyeXBvaW50TG9hZExvY2F0aW9uLT5leGVjdXRhYmxlQWRkcmVzcygpLCBXYXNtRW50cnlQ
dHJUYWcpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxfcmVmKQoreworICAgIGF1dG8g
aW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7Cisg
ICAgSlNWYWx1ZSByZWZlcmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5t
X2Z1bmN0aW9uUmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZG9XYXNt
Q2FsbFJlZihjYWxsRnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2UpOworfQorCitXQVNNX1NMT1df
UEFUSF9ERUNMKGNhbGxfcmVmX25vX3RscykKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMt
PmFzPFdhc21DYWxsUmVmTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgSlNWYWx1ZSBy
ZWZlcmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uUmVm
ZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihjYWxs
RnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2UpOworfQorCiBXQVNNX1NMT1dfUEFUSF9ERUNMKHNl
dF9nbG9iYWxfcmVmKQogewogICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVNldEds
b2JhbFJlZiwgV2FzbU9wY29kZVRyYWl0cz4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuaAppbmRleCBmOGFhY2EwOGQzMTI4ODRhZjE3YmNiYmI3N2I3NmRlYmY0
NjVkMzJhLi41YjJiOGYyODk1YTFlNmM4MmY0MDlmNmU1ZTg2Y2NkZjBmZDUwNGIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCkBAIC03Niw2ICs3Niw4IEBA
IFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGwpOwogV0FTTV9TTE9XX1BBVEhfSElEREVO
X0RFQ0woY2FsbF9ub190bHMpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRp
cmVjdCk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX2luZGlyZWN0X25vX3Rscyk7
CitXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX3JlZik7CitXQVNNX1NMT1dfUEFUSF9I
SURERU5fREVDTChjYWxsX3JlZl9ub190bHMpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2V0X2dsb2JhbF9yZWYpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2V0X2dsb2JhbF9y
ZWZfcG9ydGFibGVfYmluZGluZyk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChtZW1vcnlf
YXRvbWljX3dhaXQzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93
YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KaW5kZXggMmE3
Mjg3ZDk2MDkwMDAxOWZkYTExY2Q2NzRmMmEwMWIyZGJmMTU4OC4uNzk0MDkyYjc2ZGQ3MGY0NzI0
MzdmNzY5Y2E0N2I0NjQ1ZmZjYjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNv
bgpAQCAtODUsNiArODUsNyBAQAogICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNh
dGVnb3J5IjogImV4dHRhYmxlIiwgICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlw
ZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogInNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8g
emVybyIsICJleHRlbmRlZE9wIjogOSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAg
IHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAg
ICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgi
LCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgi
IH0sCiAgICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIs
ICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRp
b24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJl
IiB9LAorICAgICAgICAiY2FsbF9yZWYiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwi
LCAgICAgICAidmFsdWUiOiAgMjAsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImlt
bWVkaWF0ZSI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogImNhbGwgYSBmdW5jdGlvbiByZWZlcmVuY2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhf
cyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJl
dHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJh
ZGRyIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFn
cyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAi
dHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9
LAogICAgICAgICAiaTMyLmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIs
ICAgICAidmFsdWUiOiAgNDUsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24i
OiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZfcyI6ICAgICAgICB7
ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogWyJpMzIi
XSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU0NmQwMGUyNDIx
MDhlOTI0ZTFhN2Q0N2JlYWJhNzM0YjFiNDUzYmQuLjQ1ZTI1NTM3YTdjZmQxNDBmODI0YzExOTk1
YzA0YzE1MjAxYjhjOTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDMtMDggIERtaXRyeSBCZXpoZXRz
a292ICA8ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KKworICAgICAgICBbV0FTTS1GdW5jdGlvbi1S
ZWZlcmVuY2VzXSBBZGQgY2FsbF9yZWYgaW5zdHJ1Y3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjkwMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyIGJhc2ljIGNhbGxfcmVmIHRlc3QgY2Fz
ZXMgLSBjcm9zcy1pbnN0YW5jZSBjYWxsCisgICAgICAgIGFuZCBzYW1lLWluc3RhbmNlIGNhbGwu
CisKKyAgICAgICAgKiB3YXNtLnlhbWw6CisgICAgICAgICogd2FzbS9mdW5jdGlvbi1yZWZlcmVu
Y2VzL2NhbGxfcmVmLmpzOiBBZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgIChhc3lu
YyBiYXNpY3MpOgorICAgICAgICAoYXN5bmMgaW5kaXJlY3RDYWxsKToKKyAgICAgICAgKiB3YXNt
L3dhc20uanNvbjoKKwogMjAyMS0wMy0wNiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CiAKICAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yIHNob3VsZCBiZSBpbmxpbmVk
IGluIERGRyAvIEZUTApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtLnlhbWwgYi9KU1Rlc3RzL3dh
c20ueWFtbAppbmRleCBmNTY2MzdkOGM0MGY1MWZhY2E2NWIzYTc0MmQ4MWJkZmU4NjMxMjkzLi4y
YWEwZTQ3OTdmZTUxOWJiYzg5NDA2ZmY3ZDhlM2U3YThkOWViYWZlIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3dhc20ueWFtbAorKysgYi9KU1Rlc3RzL3dhc20ueWFtbApAQCAtMzMsNiArMzMsOCBAQAog
ICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0
aDogd2FzbS9yZWZlcmVuY2VzCiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFy
c2VSdW5Db21tYW5kcworLSBwYXRoOiB3YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMKKyAgY21kOiBy
dW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20v
ZnV6egogICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMK
IC0gcGF0aDogd2FzbS9sb3dFeGVjdXRhYmxlTWVtb3J5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vZnVuY3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlv
bi1yZWZlcmVuY2VzL2NhbGxfcmVmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkMTNjNWY1YmYyMTUxYTA3N2E3
OWE1YThjMzk2MWUyYmQ5ZmEzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qcwpAQCAtMCwwICsxLDU4IEBACisvL0AgcnVuV2Vi
QXNzZW1ibHlTdWl0ZSgiLS11c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzPXRy
dWUiKQoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgeyBp
bnN0YW50aWF0ZSB9IGZyb20gIi4uL3dhYnQtd3JhcHBlci5qcyI7CisKK2Z1bmN0aW9uIG1vZHVs
ZShieXRlcywgdmFsaWQgPSB0cnVlKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
Ynl0ZXMubGVuZ3RoKTsKKyAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBm
b3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5
dGVzLmNoYXJDb2RlQXQoaSk7CisgIH0KKyAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YnVmZmVyKTsKK30KKworYXN5bmMgZnVuY3Rpb24gYmFzaWNzKCkgeworICAvKgorICAobW9kdWxl
CisgICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAkZm9vKSkKKyAgICAoZnVuYyAk
Zm9vIChwYXJhbSAkeCBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5hZGQgKGxvY2FsLmdl
dCAkeCkKKyAgICAgICAgICAgICAgIChpMzIuY29uc3QgMTkpCisgICAgICApCisgICAgKQorICAg
IChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgIChjYWxsX3JlZiAoaTMy
LmNvbnN0IDEwKSAocmVmLmZ1bmMgJGZvbykpCisgICAgKQorICApCisgICovCisgIGxldCBpbnN0
YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMFx4
MDFceDdmXHgwM1x4MDNceDAyXHgwMFx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2
ZVx4MDBceDAxXHgwOVx4MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4MGFceDExXHgwMlx4MDdceDAw
XHgyMFx4MDBceDQxXHgxM1x4NmFceDBiXHgwN1x4MDBceDQxXHgwYVx4ZDJceDAwXHgxNFx4MGIi
KSk7CisgIGFzc2VydC5lcShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMjkpOworfQorCithc3lu
YyBmdW5jdGlvbiBpbmRpcmVjdENhbGwoKSB7CisgIGxldCB3YXQgPSBgCisgIChtb2R1bGUKKyAg
ICAoZnVuYyAoZXhwb3J0ICJiYXIiKSAocGFyYW0gJHggaTMyKSAocmVzdWx0IGkzMikKKyAgICAg
IChpMzIuYWRkIChsb2NhbC5nZXQgJHgpCisgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDE5KSkK
KyAgICApCisgIClgOworICBjb25zdCBiYXJQcm92aWRlciA9IGF3YWl0IGluc3RhbnRpYXRlKHdh
dCwge30sIHtyZWZlcmVuY2VfdHlwZXM6IHRydWV9KTsKKworICAvKgorICAobW9kdWxlCisgICAg
KGltcG9ydCAiZXhwb3J0cyIgImJhciIgKGZ1bmMgJGJhciAocGFyYW0gaTMyKSAocmVzdWx0IGkz
MikpKQorICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgJGJhcikpCisgICAgKGZ1
bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAgKGNhbGxfcmVmIChpMzIuY29u
c3QgMTApIChyZWYuZnVuYyAkYmFyKSkKKyAgICApCisgICkKKyAgKi8KKyAgbGV0IGluc3RhbmNl
ID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAorICAgIG1vZHVsZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAw
XHgwMVx4N2ZceDAyXHgwZlx4MDFceDA3XHg2NVx4NzhceDcwXHg2Zlx4NzJceDc0XHg3M1x4MDNc
eDYyXHg2MVx4NzJceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4
NjFceDY5XHg2ZVx4MDBceDAxXHgwOVx4MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4MGFceDA5XHgw
MVx4MDdceDAwXHg0MVx4MGFceGQyXHgwMFx4MTRceDBiIiksCisgICAgYmFyUHJvdmlkZXIpOwor
ICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDI5KTsKK30KKworYXNzZXJ0LmFz
eW5jVGVzdChiYXNpY3MoKSk7Cithc3NlcnQuYXN5bmNUZXN0KGluZGlyZWN0Q2FsbCgpKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29u
CmluZGV4IDJhNzI4N2Q5NjA5MDAwMTlmZGExMWNkNjc0ZjJhMDFiMmRiZjE1ODguLjc5NDA5MmI3
NmRkNzBmNDcyNDM3Zjc2OWNhNDdiNDY0NWZmY2I4MDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS93YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpAQCAtODUsNiArODUsNyBA
QAogICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxl
IiwgICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogInNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9w
IjogOSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNh
bGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxs
X2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAx
NywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVy
IjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6
ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVf
aW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0
aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAorICAgICAgICAiY2Fs
bF9yZWYiOiAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAg
MjAsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFtdLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5j
dGlvbiByZWZlcmVuY2UiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0
ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAg
ICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBl
IjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxv
YWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUs
ICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
ZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIs
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9y
eSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZfcyI6ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1v
cnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0
aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425008</attachid>
            <date>2021-04-02 05:03:17 -0700</date>
            <delta_ts>2021-04-02 06:57:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222903-20210402190314.patch</filename>
            <type>text/plain</type>
            <size>42309</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MzE1YWVlYjI3YTZmYWM5MjQ3YTA3MjllYjlmNjE0ZDMzMTFiYWRhLi41MzllZDUzMTMxMzkyODQ4
YzZhMTRlOWNmNzhmMDBkYzg5Njk4OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wNC0wMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxs
X3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbGxfcmVmIGluc3RydWN0aW9uIGZyb20gdHlwZWQg
ZnVuY3Rpb24KKyAgICAgICAgcmVmZXJlbmNlcyBwcm9wb3NhbDogaHR0cHM6Ly9naXRodWIuY29t
L1dlYkFzc2VtYmx5L2Z1bmN0aW9uLXJlZmVyZW5jZXMvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2Z1
bmN0aW9uLXJlZmVyZW5jZXMvT3ZlcnZpZXcubWQuCisgICAgICAgIFRoaXMgaW5zdHJ1Y3Rpb24g
Y2FsbHMgZ2l2ZW4gZnVuY3Rpb24gcmVmZXJlbmNlcyBmcm9tIHRoZSBzdGFjay4KKyAgICAgICAg
V2UganVzdCByZXRyaWV2ZSB0aGUgaW5zdGFuY2UgYW5kIGZ1bmN0aW9uIGNvZGUgcG9pbnRlcnMg
ZnJvbSBwYXNzZWQgV2ViQXNzZW1ibHlGdW5jdGlvbiBhbmQgZW1pdCB0aGUgY2FsbC4KKyAgICAg
ICAgQWxsIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXN1bHQgdHlwZSBpcyBwcmVwYXJlZCBpbiBy
ZWYuZnVuYy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5
TGV2ZWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L1dlYkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBydW50aW1lL0dhdGUuaDoKKyAg
ICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpB
aXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjplbWl0SW5kaXJlY3RDYWxsKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0
Q2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVj
dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAg
ICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpX
YXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24p
OgorICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAgICAqIHdhc20vV2FzbVNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojpkb1dhc21DYWxsUmVmKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OldBU01fU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHdhc20vV2Fz
bVNsb3dQYXRocy5oOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTA0LTAxICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
Mjc0NzI0KTogSklUQ2FnZSB0cmFtcG9saW5lIG5lZWRzIHRvIGJlIGFkanVzdGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4
YzliYmJhMTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4xNjQxMDFmZWNlMDQyNmEwMDJmZjVh
NDdhMWMwMjRiODk0NjY0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0NzQsNiArMTQ3NCw4IEBAIG9wIDp3YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHMKIG9wIDp3
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3Jl
Zgorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RscwogCiBlbmRfc2VjdGlv
biA6TmF0aXZlSGVscGVycwogCkBAIC0xNDk1LDYgKzE0OTcsOCBAQCBvcCA6Y2FsbF9yZXR1cm5f
bG9jYXRpb24KIG9wIDpjYWxsX25vX3Rsc19yZXR1cm5fbG9jYXRpb24KIG9wIDpjYWxsX2luZGly
ZWN0X3JldHVybl9sb2NhdGlvbgogb3AgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzX3JldHVybl9sb2Nh
dGlvbgorb3AgOmNhbGxfcmVmX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfcmVmX25vX3Rsc19y
ZXR1cm5fbG9jYXRpb24KIAogIyBGSVhNRTogV2FzbSBhbmQgSlMgTExJbnQgc2hvdWxkIHNoYXJl
IGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM2NTYKQEAgLTE2ODYsNiArMTY5MCwyMiBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHMs
CiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOmNhbGxfcmVmLAor
ICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDog
dW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICB9CisK
K29wIDpjYWxsX3JlZl9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvblJlZmVy
ZW5jZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQs
CisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZTdGFja0Fy
Z3M6IHVuc2lnbmVkLAorICAgIH0KKwogb3AgOmN1cnJlbnRfbWVtb3J5LAogICAgIGFyZ3M6IHsK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYWNhMDBkZTRmNjUxZjk0ZWE0OGM5NGM2ODU5
OWVhNWQyN2VkYmMxMi4uNDhlMjVjNTQxZjlmYTk4ODkyNjZjNDc5YmEwODY0OWEwYzUxMmFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MzY4LDYgKzM2OCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSB3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX25vX3RsczoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfaW5kaXJlY3Q6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmOgorICAg
IGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzOgogICAgICAgICByZXR1
cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggMzgzMzdkN2QxOTA4NGNkNWY3Mjc3NmI1NmRlOGQ5MWMyMGVjMjhhYS4uZDQyMTk4OWFk
N2MzYThkNTk5M2EyM2QwN2RhNTNlOTJjNmVlZDJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjUyNSwxNCArMjUy
NSwyMCBAQCBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX25vX3RsczoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgogX3dh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfcmVmOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RsczoK
IF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUxNjoKIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX25vX3Rsc193aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVj
dF93aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lk
ZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX3dpZGUxNjoKK193YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHNfd2lkZTE2OgogX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUzMjoK
IF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUzMjoKIF93YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF9yZWZfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25v
X3Rsc193aWRlMzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDU1MTdiMjU3NzI4ZmQ1NGRmNzQzY2Q5MmM5YTI3
M2NjNmNhMTdmMjkuLjRmZWZmN2U1MGUzOTdmYWU5Zjg5ZjM2ZWE4M2RjYjk5NDQyNDdmNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtODc3LDYg
Kzg3NywxNCBAQCB3YXNtT3AoY2FsbF9pbmRpcmVjdF9ub190bHMsIFdhc21DYWxsSW5kaXJlY3RO
b1RscywgbWFjcm8oY3R4KQogICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRo
X3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRh
cmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQogZW5kKQogCit3YXNtT3AoY2FsbF9yZWYs
IFdhc21DYWxsUmVmLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9z
bG93X3BhdGhfd2FzbV9jYWxsX3JlZiwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKwor
d2FzbU9wKGNhbGxfcmVmX25vX3RscywgV2FzbUNhbGxSZWZOb1RscywgbWFjcm8oY3R4KQorICAg
IHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9yZWZfbm9fdGxz
LCBtYWNybyh0YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNl
IGVuZCkKK2VuZCkKKwogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwg
bWFjcm8oY3R4KQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFu
Y2VdLCB0MAogICAgIGxvYWRwIFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCmluZGV4IDQ2OTcxNWY5NjNhMjg0ZjYxZjI2MTBhODdl
NWE4MDdiNTU0MmU4MDMuLmY2YTA1YjA2NWUzMmQ4YWVjZDU2N2JmNmFiNzRhYWU2Mzg5OTc3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKICAgICB2KHdhc21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBc
CiAgICAgdih3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcp
IFwKKyAgICB2KHdhc21fY2FsbF9yZWYsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYo
d2FzbV9jYWxsX3JlZl9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAogCiAjZWxzZQog
I2RlZmluZSBKU0NfV0FTTV9HQVRFX09QQ09ERVModikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGY5MDBlOTBlM2E1MmEyNmE5
MTc4M2RhYmFmMTU1NWI1ZGEzNGI3NmEuLjYyMDkzODY5NDVmM2ZkMmQ0YjkyNDNjMmZmM2YwZjAw
MjE5YjhiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcApAQCAtMzI1LDcgKzMyNSw5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2Fs
bGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUm
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25h
dHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7
CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChU
eXBlZFRtcCBjYWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSwgY29uc3Qg
U2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0Q2Fs
bFBhdGNocG9pbnQoQmFzaWNCbG9jayosIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IFJlc3VsdExp
c3QmIHJlc3VsdHMsIGNvbnN0IFZlY3RvcjxUeXBlZFRtcD4mIGFyZ3MsIFZlY3RvcjxDb25zdHJh
aW5lZFRtcD4mJiBleHRyYUFyZ3MgPSB7IH0pOwogCiAgICAgUGFydGlhbFJlc3VsdCBhZGRTaGlm
dChUeXBlLCBCMzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9u
VHlwZSBzaGlmdCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0zMjczLDkgKzMyNzUsNiBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgIC8vIGNhbiBiZSB0byB0aGUgZW1iZWRkZXIg
Zm9yIG91ciBzdGFjayBjaGVjayBjYWxjdWxhdGlvbi4KICAgICBtX21heE51bUpTQ2FsbEFyZ3Vt
ZW50cyA9IHN0ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oYXJncy5zaXplKCkpKTsKIAotICAgIGF1dG8gY3VycmVudEluc3RhbmNlID0gZzY0KCk7
Ci0gICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwgY3VycmVudEluc3RhbmNlKTsKLQog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIgPSBnNjQoKTsKICAgICBF
eHByZXNzaW9uVHlwZSBpbnN0YW5jZXNCdWZmZXIgPSBnNjQoKTsKICAgICBFeHByZXNzaW9uVHlw
ZSBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoID0gZzY0KCk7CkBAIC0zMzQwLDE1ICszMzM5
LDQxIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJs
ZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgICAgIH0pOwogICAgIH0KIAorICAg
IGF1dG8gY2FsbGVlSW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjppbmRl
eChpbnN0YW5jZXNCdWZmZXIsIGNhbGxlZUluZGV4LCA4LCAwKSwgY2FsbGVlSW5zdGFuY2UpOwor
CisgICAgcmV0dXJuIGVtaXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUs
IHNpZ25hdHVyZSwgYXJncywgcmVzdWx0cyk7Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBt
X21ha2VzQ2FsbHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwgaW5kaXJlY3QgY2FuIGNhbGwg
ZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
IEJlY2F1c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxp
bmcgaW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBp
bmRpcmVjdHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hl
Y2sgY2FsY3VsYXRpb24uCisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlRnVuY3Rpb24gPSBhcmdz
LnRha2VMYXN0KCk7CisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21h
eE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7
CisKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gZzY0KCk7CisgICAgYXBwZW5kKE1v
dmUsIEFyZzo6YWRkcihjYWxsZWVGdW5jdGlvbiwgV2ViQXNzZW1ibHlGdW5jdGlvbjo6b2Zmc2V0
T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCkpLCBjYWxsZWVDb2RlKTsgLy8gUG9pbnRlciB0byBj
YWxsZWUgY29kZS4KKworICAgIGF1dG8gY2FsbGVlSW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBl
bmQoTW92ZSwgQXJnOjphZGRyKGNhbGxlZUZ1bmN0aW9uLCBXZWJBc3NlbWJseUZ1bmN0aW9uQmFz
ZTo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgY2FsbGVlSW5zdGFuY2UpOworCisgICAgcmV0dXJuIGVt
aXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJn
cywgcmVzdWx0cyk7Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwo
VHlwZWRUbXAgY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgYXV0byBjdXJy
ZW50SW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBlbmQoTW92ZSwgaW5zdGFuY2VWYWx1ZSgpLCBj
dXJyZW50SW5zdGFuY2UpOworCiAgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVkZWQu
CiAgICAgewotICAgICAgICBhdXRvIG5ld0NvbnRleHRJbnN0YW5jZSA9IGc2NCgpOwotICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjppbmRleChpbnN0YW5jZXNCdWZmZXIsIGNhbGxlZUluZGV4LCA4
LCAwKSwgbmV3Q29udGV4dEluc3RhbmNlKTsKLQogICAgICAgICBCYXNpY0Jsb2NrKiBkb0NvbnRl
eHRTd2l0Y2ggPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICAgICAgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uID0gbV9jb2RlLmFkZEJsb2NrKCk7CiAKLSAgICAgICAgYXBwZW5kKEJyYW5jaDY0LCBB
cmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKSwgbmV3Q29udGV4dEluc3RhbmNlLCBp
bnN0YW5jZVZhbHVlKCkpOworICAgICAgICBhcHBlbmQoQnJhbmNoNjQsIEFyZzo6cmVsQ29uZChN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwpLCBjYWxsZWVJbnN0YW5jZSwgY3VycmVudEluc3RhbmNlKTsK
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uLCBkb0Nv
bnRleHRTd2l0Y2gpOwogCiAgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQYXRjaHBvaW50
KEIzOjpWb2lkKTsKQEAgLTMzODAsNyArMzQwNSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
CiAgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJp
bWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
LCBzY3JhdGNoKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250
ZXh0U3dpdGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5j
ZVZhbHVlKCkpOworICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNo
cG9pbnQsIFRtcCgpLCBjYWxsZWVJbnN0YW5jZSwgY3VycmVudEluc3RhbmNlKTsKICAgICAgICAg
YXBwZW5kKGRvQ29udGV4dFN3aXRjaCwgSnVtcCk7CiAgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+
c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGJiNzRjOGJmZWE4ZTBjODYyNWVh
NGU4YzdiYzI5NmI2NGZmNGMxMi4uNWQyMWRkNDkyMmU0Nzg3ZGUxM2E1MDJiYTIyMmUxZWJhMzNm
MWNjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMjg1LDcgKzI4NSw5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3Vs
dExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CisgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSog
Y2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0IFNpZ25hdHVy
ZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKICAgICBCMzo6
VmFsdWUqIGNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqLCBPcmlnaW4sIGNvbnN0IFNp
Z25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIGNvbnN0IFNjb3BlZExhbWJk
YTx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPiYgcGF0Y2hwb2ludEZ1bmN0b3IpOwogCiAgICAgdm9p
ZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYsIGNvbnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2sp
OwpAQCAtODY2LDYgKzg2OCw5NSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFVucmVhY2hhYmxl
KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQjNJUkdlbmVy
YXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25U
eXBlIGNhbGxlZUNvZGUsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7
CisgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVkZWQuCisgICAgeworICAgICAgICBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX3Byb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFz
aWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9wcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAg
VmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAorICAgICAgICAgICAgY2FsbGVlSW5zdGFu
Y2UsIGluc3RhbmNlVmFsdWUoKSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdD
b250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIGlz
U2FtZUNvbnRleHRJbnN0YW5jZSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVhdGlvbiksIEZyZXF1
ZW50ZWRCbG9jayhkb0NvbnRleHRTd2l0Y2gpKTsKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBkb0NvbnRleHRTd2l0Y2gtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNz
dW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5nIHdpdGggQm91bmRzQ2hlY2tpbmcgbWVtb3J5Lgor
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNh
bGxlZUluc3RhbmNlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAg
ICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisKKyAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BS
UmVnIG5ld0NvbnRleHRJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBvbGRDb250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBj
b25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VN
ZW1vcnlQb2ludGVyOworICAgICAgICAgICAgQVNTRVJUKG5ld0NvbnRleHRJbnN0YW5jZSAhPSBi
YXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQo
KSksIGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZFN0YWNrTGltaXQoKSkpOworICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHRJ
bnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJl
Z3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSBy
ZWdpc3RlcgorICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5jZSk7CisgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisKKyAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3Vu
ZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lk
Ki4KKworICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdp
c3Rlciwgc2NyYXRjaCk7CisgICAgICAgIH0pOworICAgICAgICBkb0NvbnRleHRTd2l0Y2gtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24p
OworCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgIH0KKworICAg
IEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlwZSgmc2lnbmF0dXJlKTsKKyAgICBF
eHByZXNzaW9uVHlwZSBjYWxsUmVzdWx0ID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQobV9jdXJyZW50
QmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCisgICAgICAgIHNjb3BlZExhbWJkYVJl
Zjx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPihbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCkgLT4gdm9pZCB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5l
ZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBp
bm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCisg
ICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGFsd2F5cyBjYWxs
aW5nIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZyBzbworICAgICAgICAgICAgLy8g
YmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRo
ZSBzaXplIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhh
dmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4KKyAg
ICAgICAgICAgIC8vIHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMgYXMgc2NyYXRjaDogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUo
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKworICAgICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAg
ICAgICAgICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5U
eXBlKV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSkpOworCisgICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkgeworICAgIGNhc2UgQjM6OlZv
aWQ6IHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQjM6OlR1cGxlOiB7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9jLnR1cGxlRm9yVHlwZShy
ZXR1cm5UeXBlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHVwbGVbaV0s
IGNhbGxSZXN1bHQsIGkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsK
KyAgICAgICAgcmVzdWx0cy5hcHBlbmQoY2FsbFJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBX
ZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVt
b3J5LgorICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFj
a0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1
cnJlbnRCbG9jayk7CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50MzIsIG9yaWdpbigpLApAQCAtMjUyMCwxMDAg
KzI2MTEsMzYgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQg
dGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIC8vIERvIGEgY29udGV4dCBzd2l0Y2ggaWYgbmVlZGVkLgotICAgIHsKLSAgICAgICAgVmFs
dWUqIG9mZnNldCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTXVs
LCBvcmlnaW4oKSwKLSAgICAgICAgICAgIGNhbGxlZUluZGV4LCBjb25zdGFudChwb2ludGVyVHlw
ZSgpLCBzaXplb2YoSW5zdGFuY2UqKSkpOwotICAgICAgICBWYWx1ZSogbmV3Q29udGV4dEluc3Rh
bmNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKLSAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgaW5zdGFuY2VzQnVmZmVyLCBv
ZmZzZXQpKTsKLQotICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX3Byb2MuYWRk
QmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9wcm9jLmFk
ZEJsb2NrKCk7Ci0KLSAgICAgICAgVmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAotICAg
ICAgICAgICAgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5jZVZhbHVlKCkpOwotICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgQjM6OkJyYW5jaCwg
b3JpZ2luKCksCi0gICAgICAgICAgICBpc1NhbWVDb250ZXh0SW5zdGFuY2UsIEZyZXF1ZW50ZWRC
bG9jayhjb250aW51YXRpb24pLCBGcmVxdWVudGVkQmxvY2soZG9Db250ZXh0U3dpdGNoKSk7Ci0K
LSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gZG9Db250ZXh0U3dpdGNoLT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIEIzOjpWb2lkLCBvcmlnaW4oKSk7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKLSAgICAgICAg
Ly8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSdyZSBjYWxsaW5nIHNvbWV0aGluZyB3aXRo
IEJvdW5kc0NoZWNraW5nIG1lbW9yeS4KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBo
YXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIxODEKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihQaW5uZWRSZWdpc3RlckluZm86Omdl
dCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOwotICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChuZXdDb250ZXh0SW5zdGFuY2UsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoaW5zdGFuY2VWYWx1ZSgpLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gMTsKLQotICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBHUFJSZWcgbmV3Q29udGV4dEluc3RhbmNlID0gcGFy
YW1zWzBdLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIG9sZENvbnRleHRJbnN0YW5jZSA9IHBh
cmFtc1sxXS5ncHIoKTsKLSAgICAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlu
bmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7Ci0gICAgICAgICAgICBHUFJSZWcg
YmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgICAgICBB
U1NFUlQobmV3Q29udGV4dEluc3RhbmNlICE9IGJhc2VNZW1vcnkpOwotICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJbnN0YW5jZSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9yeSk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRl
eHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0NvbnRleHRJbnN0YW5jZSk7
Ci0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rl
ciAhPSBiYXNlTWVtb3J5KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9y
dCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyCi0gICAgICAgICAgICAvLyAgIHNl
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgotICAgICAg
ICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gbmV3
Q29udGV4dEluc3RhbmNlKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKLQotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hl
Y2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8g
TWVtb3J5IHNpemUuCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSks
IGJhc2VNZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgotCi0gICAgICAgICAgICBqaXQuY2FnZUNv
bmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIGRvQ29udGV4dFN3aXRjaC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywg
SnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAgbV9jdXJyZW50QmxvY2sg
PSBjb250aW51YXRpb247Ci0gICAgfQotCisgICAgVmFsdWUqIG9mZnNldCA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTXVsLCBvcmlnaW4oKSwKKyAgICAgICAgY2Fs
bGVlSW5kZXgsIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHNpemVvZihJbnN0YW5jZSopKSk7Cisg
ICAgVmFsdWUqIGNhbGxlZUluc3RhbmNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIG9yaWdpbigpLCBp
bnN0YW5jZXNCdWZmZXIsIG9mZnNldCkpOwogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIG9yaWdpbigpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBjYWxs
YWJsZUZ1bmN0aW9uLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50MzJfdD4oV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCkpKSk7CiAK
LSAgICBCMzo6VHlwZSByZXR1cm5UeXBlID0gdG9CM1Jlc3VsdFR5cGUoJnNpZ25hdHVyZSk7Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KG1fY3Vy
cmVudEJsb2NrLCBvcmlnaW4oKSwgc2lnbmF0dXJlLCBhcmdzLAotICAgICAgICBzY29wZWRMYW1i
ZGFSZWY8dm9pZChQYXRjaHBvaW50VmFsdWUqKT4oWz1dIChQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQpIC0+IHZvaWQgewotICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQ
aW5uZWQgPSB0cnVlOwotICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5l
ZCA9IHRydWU7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBvdGVudGlh
bCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGluc3RhbmNl
LgotICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSdyZSBhbHdheXMg
Y2FsbGluZyBzb21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcgc28KLSAgICAgICAgICAg
IC8vIGJlY2F1c2UgdGhlIHdhc20tPndhc20gdGh1bmsgdW5jb25kaXRpb25hbGx5IG92ZXJyaWRl
cyB0aGUgc2l6ZSByZWdpc3RlcnMuCi0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5v
dCBoYXZlIHRvIGRvIHRoaXMsIGJ1dCB0aGUgd2FzbS0+d2FzbSBzdHViIGFzc3VtZXMgaXQgY2Fu
Ci0gICAgICAgICAgICAvLyB1c2UgYWxsIHRoZSBwaW5uZWQgcmVnaXN0ZXJzIGFzIHNjcmF0Y2g6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKLSAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9T
YXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgcmV0dXJuIGVtaXRJbmRpcmVj
dENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0
cyk7Cit9CiAKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChjYWxsZWVDb2RlLCBWYWx1
ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICAgICAgaml0LmNhbGwocGFyYW1z
W3BhcmFtcy5wcm9jKCkucmVzdWx0Q291bnQocmV0dXJuVHlwZSldLmdwcigpLCBXYXNtRW50cnlQ
dHJUYWcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pKTsKK2F1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAorewor
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZSA9IGFyZ3MudGFrZUxhc3QoKTsKKyAgICBtX21ha2Vz
Q2FsbHMgPSB0cnVlOwogCi0gICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkgewotICAgIGNh
c2UgQjM6OlZvaWQ6IHsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQjM6OlR1cGxl
OiB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9jLnR1cGxl
Rm9yVHlwZShyZXR1cm5UeXBlKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
Z25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dHVwbGVbaV0sIGNhbGxSZXN1bHQsIGkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRl
ZmF1bHQ6IHsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoY2FsbFJlc3VsdCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICB9CisgICAgLy8gTm90ZTogY2FsbCByZWYgY2FuIGNhbGwgZWl0aGVy
IFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1
c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50
byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVj
dHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2Fs
Y3VsYXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51
bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CiAK
LSAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBp
bnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMs
IG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7
CisgICAgVmFsdWUqIG9mZnNldCA9IGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHNhZmVDYXN0PGlu
dDMyX3Q+KFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpvZmZzZXRPZkluc3RhbmNlKCkpKTsKKyAg
ICBWYWx1ZSogY2FsbGVlSW5zdGFuY2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3JpZ2luKCksIGNh
bGxlZSwgb2Zmc2V0KSk7CiAKLSAgICByZXR1cm4geyB9OworICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxlZUNvZGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdp
bigpLCBjYWxsZWUsCisgICAgICAgICAgICBzYWZlQ2FzdDxpbnQzMl90PihXZWJBc3NlbWJseUZ1
bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSkpKTsKKworICAgIHJldHVy
biBlbWl0SW5kaXJlY3RDYWxsKGNhbGxlZUluc3RhbmNlLCBjYWxsZWVDb2RlLCBzaWduYXR1cmUs
IGFyZ3MsIHJlc3VsdHMpOwogfQogCiB2b2lkIEIzSVJHZW5lcmF0b3I6OnVuaWZ5KGNvbnN0IEV4
cHJlc3Npb25UeXBlIHBoaSwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291cmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBkZjBlMWNh
ZjMwNTYyNDY3NzZlMDMzOTdkMmFhYjFjOWQyOGUxNTMzLi41MzcxNmNjM2JjMzBlZDg0YjZhMGMy
NTdiMDU3ZGNmZTc5MWU3NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMTI0OCw2ICsxMjQ4LDM2IEBAIEZPUl9FQUNIX1dBU01f
TUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQorCisgICAgY2FzZSBDYWxsUmVmOiB7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
IW1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaXNUeXBlSWR4KCksICJub24tZnVuY3Jl
ZiBjYWxsX3JlZiB2YWx1ZSAiLCBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmtpbmQp
OworCisgICAgICAgIGNvbnN0IFNpZ25hdHVyZUluZGV4IGNhbGxlZVNpZ25hdHVyZUluZGV4ID0g
bV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsKKyAgICAgICAgY29uc3QgU2ln
bmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxl
ZVNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVT
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyB2YWx1ZS4K
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbV9leHByZXNzaW9u
U3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3Vt
ZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CisKKyAgICAgICAgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiBhcmdzOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFhcmdzLnRyeVJlc2Vy
dmVDYXBhY2l0eShhcmd1bWVudENvdW50ICsgMSksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVt
b3J5IGZvciAiLCBhcmd1bWVudENvdW50LCAiIGNhbGxfaW5kaXJlY3QgYXJndW1lbnRzIik7Cisg
ICAgICAgIHNpemVfdCBmaXJzdEFyZ3VtZW50SW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5zaXpl
KCkgLSBhcmd1bWVudENvdW50OworICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBcmd1bWVu
dEluZGV4OyBpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChpKTsKKyAgICAgICAg
ICAgIGlmIChpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZy50eXBlKCkgIT0gY2FsbGVlU2lnbmF0dXJlLmFy
Z3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBp
biBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAiLCBleHBlY3RlZCAiLCBj
YWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkua2luZCk7Cisg
ICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOworICAgICAgICAgICAgbV9jb250
ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9leHByZXNz
aW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CisKKyAgICAgICAgUmVzdWx0TGlz
dCByZXN1bHRzOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxsUmVmKGNh
bGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0cykpOworCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAg
ICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KwogICAgIGNhc2UgQmxvY2s6IHsKICAgICAgICAgQmxvY2tTaWduYXR1cmUgaW5saW5lU2lnbmF0
dXJlOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1f
aW5mbywgaW5saW5lU2lnbmF0dXJlKSwgImNhbid0IGdldCBibG9jaydzIHNpZ25hdHVyZSIpOwpA
QCAtMTczOSw2ICsxNzY5LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VV
bnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgLy8gbm8gaW1tZWRp
YXRlIGNhc2VzCiAgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AoQ1JFQVRFX0NBU0UpCiAgICAg
Rk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfQ0FTRSkKKyAgICBjYXNlIENhbGxSZWY6CiAg
ICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIE5vcDoKICAgICBjYXNlIFJldHVybjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmlu
ZGV4IDUzN2VlNTY1MjBlZDU4NDMwMWY0ODIwNDk2MmNmMjc4NmJkYjM0ZmQuLmNlMjliNjhmOTgx
MDQ1YmNjNjM2MWIyMTIxOWY0ZDAzMWVkZjJjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMjUzLDYgKzI1Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1
bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFVucmVhY2hhYmxlKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMo
KTsKQEAgLTExMDIsNiArMTEwMywyMSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5k
aXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgIHJl
dHVybiB7IH07CiB9CiAKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExp
c3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxs
ZWUgPSBhcmdzLnRha2VMYXN0KCk7CisKKyAgICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0g
Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKHNpZ25hdHVyZSk7CisgICAgdW5pZnlWYWx1ZXNXaXRo
QmxvY2soaW5mby5hcmd1bWVudHMsIGFyZ3MpOworICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExT
KCkpCisgICAgICAgIFdhc21DYWxsUmVmOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2st
PmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9m
U3RhY2tBcmd1bWVudHMpOworICAgIGVsc2UKKyAgICAgICAgV2FzbUNhbGxSZWZOb1Rsczo6ZW1p
dCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5m
by5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKKyAgICBpbmZvLmNv
bW1pdFJlc3VsdHMocmVzdWx0cyk7CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIExMSW50
R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQgPSBwdXNoKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IGE2MWQw
Y2M3ZmYzMjlkYjVkNjE5NGVlNjg1YmQ1MjkxOWNiY2Q0NTkuLjAxNTljMWU3NWFhNjM2MGQ0MjZj
ZjEzMmZkNWRkNmM4YzUxNDVlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiV2FzbUJCUVBs
YW4uaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiV2FzbU9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgog
I2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24u
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKQEAgLTQ5OCw2ICs1MDAs
MzkgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX2luZGlyZWN0X25vX3RscykKICAgICByZXR1
cm4gZG9XYXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgs
IGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7
CiB9CiAKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZG9XYXNtQ2FsbFJlZihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIHRhcmdldFJlZmVy
ZW5jZSwgdW5zaWduZWQgc2lnbmF0dXJlSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CisKKyAgICBBU1NFUlQodGFyZ2V0UmVmZXJlbmNlLmlzT2JqZWN0KCkpOworICAgIEpT
T2JqZWN0KiByZWZlcmVuY2VBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldFJlZmVy
ZW5jZSk7CisgICAgQVNTRVJUKHJlZmVyZW5jZUFzT2JqZWN0LT5pbmhlcml0czxXZWJBc3NlbWJs
eUZ1bmN0aW9uPihpbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKKworICAgIFdl
YkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseUZ1bmN0
aW9uKj4ocmVmZXJlbmNlQXNPYmplY3QpOworICAgIFdhc206Okluc3RhbmNlKiB0YXJnZXRJbnN0
YW5jZSA9ICZ3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCk7CisKKyAgICBpZiAo
dGFyZ2V0SW5zdGFuY2UgIT0gaW5zdGFuY2UpCisgICAgICAgIHRhcmdldEluc3RhbmNlLT5zZXRD
YWNoZWRTdGFja0xpbWl0KGluc3RhbmNlLT5jYWNoZWRTdGFja0xpbWl0KCkpOworCisgICAgY29u
c3QgV2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiYgZnVuY3Rpb24gPSB3YXNtRnVu
Y3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpOworICAgIEFTU0VSVChmdW5jdGlvbi5zaWduYXR1
cmVJbmRleCA9PSBXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KENPREVfQkxPQ0soKS0+
c2lnbmF0dXJlKHNpZ25hdHVyZUluZGV4KSkpOworICAgIFdBU01fQ0FMTF9SRVRVUk4odGFyZ2V0
SW5zdGFuY2UsIGZ1bmN0aW9uLmVudHJ5cG9pbnRMb2FkTG9jYXRpb24tPmV4ZWN1dGFibGVBZGRy
ZXNzKCksIFdhc21FbnRyeVB0clRhZyk7Cit9CisKK1dBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9y
ZWYpCit7CisgICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZiwgV2FzbU9w
Y29kZVRyYWl0cz4oKTsKKyAgICBKU1ZhbHVlIHJlZmVyZW5jZSA9IEpTVmFsdWU6OmRlY29kZShS
RUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25SZWZlcmVuY2UpLmVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIHJldHVybiBkb1dhc21DYWxsUmVmKGNhbGxGcmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZSwg
aW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7Cit9CisKK1dBU01fU0xPV19QQVRIX0RFQ0wo
Y2FsbF9yZWZfbm9fdGxzKQoreworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNh
bGxSZWZOb1RscywgV2FzbU9wY29kZVRyYWl0cz4oKTsKKyAgICBKU1ZhbHVlIHJlZmVyZW5jZSA9
IEpTVmFsdWU6OmRlY29kZShSRUFEKGluc3RydWN0aW9uLm1fZnVuY3Rpb25SZWZlcmVuY2UpLmVu
Y29kZWRKU1ZhbHVlKCkpOworICAgIHJldHVybiBkb1dhc21DYWxsUmVmKGNhbGxGcmFtZSwgaW5z
dGFuY2UsIHJlZmVyZW5jZSwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7Cit9CisKIFdB
U01fU0xPV19QQVRIX0RFQ0woc2V0X2dsb2JhbF9yZWYpCiB7CiAgICAgYXV0byBpbnN0cnVjdGlv
biA9IHBjLT5hczxXYXNtU2V0R2xvYmFsUmVmLCBXYXNtT3Bjb2RlVHJhaXRzPigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCmluZGV4IGY4YWFjYTA4ZDMxMjg4
NGFmMTdiY2JiYjc3Yjc2ZGViZjQ2NWQzMmEuLjViMmI4ZjI4OTVhMWU2YzgyZjQwOWY2ZTVlODZj
Y2RmMGZkNTA0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhz
LmgKQEAgLTc2LDYgKzc2LDggQEAgV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbCk7CiBX
QVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX25vX3Rscyk7CiBXQVNNX1NMT1dfUEFUSF9I
SURERU5fREVDTChjYWxsX2luZGlyZWN0KTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNh
bGxfaW5kaXJlY3Rfbm9fdGxzKTsKK1dBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGxfcmVm
KTsKK1dBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGxfcmVmX25vX3Rscyk7CiBXQVNNX1NM
T1dfUEFUSF9ISURERU5fREVDTChzZXRfZ2xvYmFsX3JlZik7CiBXQVNNX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzZXRfZ2xvYmFsX3JlZl9wb3J0YWJsZV9iaW5kaW5nKTsKIFdBU01fU0xPV19QQVRI
X0hJRERFTl9ERUNMKG1lbW9yeV9hdG9taWNfd2FpdDMyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L3dhc20uanNvbgppbmRleCAyYTcyODdkOTYwOTAwMDE5ZmRhMTFjZDY3NGYyYTAxYjJkYmYxNTg4
Li43OTQwOTJiNzZkZDcwZjQ3MjQzN2Y3NjljYTQ3YjQ2NDVmZmNiODAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vd2FzbS5qc29uCkBAIC04NSw2ICs4NSw3IEBACiAgICAgICAgICJkYXRhLmRy
b3AiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZXh0dGFibGUiLCAgICJ2YWx1ZSI6ICAyNTIs
ICJyZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjog
W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJz
ZWdtZW50X2luZGV4IiwgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2hyaW5rcyB0aGUgc2l6
ZSBvZiB0aGUgc2VnbWVudCB0byB6ZXJvIiwgImV4dGVuZGVkT3AiOiA5IH0sCiAgICAgICAgICJj
YWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6
ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1l
dGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1
bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7
ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxs
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFy
dWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBh
biBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJjYWxsX3JlZiI6ICAgICAgICAgICAg
eyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6IFsiY2Fs
bCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIHJlZmVyZW5jZSIgfSwK
ICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAg
ICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMyIl0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMy
LmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDYsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNl
dCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1l
bW9yeSIgfSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZDNjMDU4ODRhZWFkYmM0M2I1OGEyNGI1OTA0MDhlMjNmMTk1YzUxYy4uY2ZjOTRk
ODJlZmRjYWFlNGFhZjcyMTgzNzVlMDMyNjgwMTg4YmZkMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0w
NC0wMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxsX3JlZiBpbnN0cnVjdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXIgYmFz
aWMgY2FsbF9yZWYgdGVzdCBjYXNlcyAtIGNyb3NzLWluc3RhbmNlIGNhbGwKKyAgICAgICAgYW5k
IHNhbWUtaW5zdGFuY2UgY2FsbC4KKworICAgICAgICAqIHdhc20ueWFtbDoKKyAgICAgICAgKiB3
YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanM6IEFkZGVkLgorICAgICAgICAobW9k
dWxlKToKKyAgICAgICAgKGFzeW5jIGJhc2ljcyk6CisgICAgICAgIChhc3luYyBpbmRpcmVjdENh
bGwpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTA0LTAxICBBbGV4ZXkgU2h2
YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSBjcmVhdGVM
aXN0RnJvbUFycmF5TGlrZSgpIGFuZCBQcm94eSdzIFtbT3duUHJvcGVydHlLZXlzXV0gbWV0aG9k
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20ueWFtbCBiL0pTVGVzdHMvd2FzbS55YW1sCmluZGV4
IGRlYTJhMWI3NTZjNTE0MGRhM2VmZTYwOWViMDFlM2Y4M2IzOTViNGEuLjJlY2I2MzRkYmY1YjJi
ZWU3MmNkZDEzYzQwMTc5YmYyZjVlOTRiYzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55YW1s
CisrKyBiL0pTVGVzdHMvd2FzbS55YW1sCkBAIC0zMyw2ICszMyw4IEBACiAgIGNtZDogcnVuV2Vi
QXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRoOiB3YXNtL3JlZmVy
ZW5jZXMKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRz
CistIHBhdGg6IHdhc20vZnVuY3Rpb24tcmVmZXJlbmNlcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5
U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKIC0gcGF0aDogd2FzbS9mdXp6CiAgIGNtZDog
cnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwogLSBwYXRoOiB3YXNt
L2xvd0V4ZWN1dGFibGVNZW1vcnkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1y
ZWZlcmVuY2VzL2NhbGxfcmVmLmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMv
Y2FsbF9yZWYuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2QxM2M1ZjViZjIxNTFhMDc3YTc5YTVhOGMzOTYxZTJi
ZDlmYTNjMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZlcmVu
Y2VzL2NhbGxfcmVmLmpzCkBAIC0wLDAgKzEsNTggQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRl
KCItLXVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBvcnQg
KiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0g
ZnJvbSAiLi4vd2FidC13cmFwcGVyLmpzIjsKKworZnVuY3Rpb24gbW9kdWxlKGJ5dGVzLCB2YWxp
ZCA9IHRydWUpIHsKKyAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgp
OworICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7CisgIGZvciAobGV0IGkgPSAw
OyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVB
dChpKTsKKyAgfQorICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpOworfQor
Cithc3luYyBmdW5jdGlvbiBiYXNpY3MoKSB7CisgIC8qCisgIChtb2R1bGUKKyAgICAoZWxlbSBk
ZWNsYXJlIGZ1bmNyZWYgKHJlZi5mdW5jICRmb28pKQorICAgIChmdW5jICRmb28gKHBhcmFtICR4
IGkzMikgKHJlc3VsdCBpMzIpCisgICAgICAoaTMyLmFkZCAobG9jYWwuZ2V0ICR4KQorICAgICAg
ICAgICAgICAgKGkzMi5jb25zdCAxOSkKKyAgICAgICkKKyAgICApCisgICAgKGZ1bmMgKGV4cG9y
dCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAgKGNhbGxfcmVmIChpMzIuY29uc3QgMTApIChy
ZWYuZnVuYyAkZm9vKSkKKyAgICApCisgICkKKyAgKi8KKyAgbGV0IGluc3RhbmNlID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4
MDBceDAxXHgwYVx4MDJceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2ZceDAzXHgw
M1x4MDJceDAwXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgwMFx4MDFceDA5
XHgwNVx4MDFceDAzXHgwMFx4MDFceDAwXHgwYVx4MTFceDAyXHgwN1x4MDBceDIwXHgwMFx4NDFc
eDEzXHg2YVx4MGJceDA3XHgwMFx4NDFceDBhXHhkMlx4MDBceDE0XHgwYiIpKTsKKyAgYXNzZXJ0
LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigpLCAyOSk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGlu
ZGlyZWN0Q2FsbCgpIHsKKyAgbGV0IHdhdCA9IGAKKyAgKG1vZHVsZQorICAgIChmdW5jIChleHBv
cnQgImJhciIpIChwYXJhbSAkeCBpMzIpIChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5hZGQgKGxv
Y2FsLmdldCAkeCkKKyAgICAgICAgICAgICAgIChpMzIuY29uc3QgMTkpKQorICAgICkKKyAgKWA7
CisgIGNvbnN0IGJhclByb3ZpZGVyID0gYXdhaXQgaW5zdGFudGlhdGUod2F0LCB7fSwge3JlZmVy
ZW5jZV90eXBlczogdHJ1ZX0pOworCisgIC8qCisgIChtb2R1bGUKKyAgICAoaW1wb3J0ICJleHBv
cnRzIiAiYmFyIiAoZnVuYyAkYmFyIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpCisgICAgKGVs
ZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAkYmFyKSkKKyAgICAoZnVuYyAoZXhwb3J0ICJt
YWluIikgKHJlc3VsdCBpMzIpCisgICAgICAoY2FsbF9yZWYgKGkzMi5jb25zdCAxMCkgKHJlZi5m
dW5jICRiYXIpKQorICAgICkKKyAgKQorICAqLworICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UoCisgICAgbW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDBhXHgwMlx4NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4MDBceDAxXHg3Zlx4MDJc
eDBmXHgwMVx4MDdceDY1XHg3OFx4NzBceDZmXHg3Mlx4NzRceDczXHgwM1x4NjJceDYxXHg3Mlx4
MDBceDAwXHgwM1x4MDJceDAxXHgwMVx4MDdceDA4XHgwMVx4MDRceDZkXHg2MVx4NjlceDZlXHgw
MFx4MDFceDA5XHgwNVx4MDFceDAzXHgwMFx4MDFceDAwXHgwYVx4MDlceDAxXHgwN1x4MDBceDQx
XHgwYVx4ZDJceDAwXHgxNFx4MGIiKSwKKyAgICBiYXJQcm92aWRlcik7CisgIGFzc2VydC5lcShp
bnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMjkpOworfQorCithc3NlcnQuYXN5bmNUZXN0KGJhc2lj
cygpKTsKK2Fzc2VydC5hc3luY1Rlc3QoaW5kaXJlY3RDYWxsKCkpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL3dhc20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggMmE3Mjg3
ZDk2MDkwMDAxOWZkYTExY2Q2NzRmMmEwMWIyZGJmMTU4OC4uNzk0MDkyYjc2ZGQ3MGY0NzI0Mzdm
NzY5Y2E0N2I0NjQ1ZmZjYjgwMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgor
KysgYi9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCkBAIC04NSw2ICs4NSw3IEBACiAgICAgICAgICJk
YXRhLmRyb3AiOiAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiZXh0dGFibGUiLCAgICJ2YWx1ZSI6
ICAyNTIsICJyZXR1cm4iOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1l
dGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFt
ZSI6ICJzZWdtZW50X2luZGV4IiwgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAic2hyaW5rcyB0
aGUgc2l6ZSBvZiB0aGUgc2VnbWVudCB0byB6ZXJvIiwgImV4dGVuZGVkT3AiOiA5IH0sCiAgICAg
ICAgICJjYWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2
YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAi
cGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2Fs
bCBhIGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwg
ICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgi
LCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUi
OiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qg
d2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJjYWxsX3JlZiI6ICAgICAg
ICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6
IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0s
ICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW10sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIHJlZmVyZW5j
ZSIgfSwKICAgICAgICAgImkzMi5sb2FkOF9zIjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1v
cnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0
aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsi
aTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAg
ICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFs
dWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjog
Im9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBm
cm9tIG1lbW9yeSIgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425016</attachid>
            <date>2021-04-02 06:57:47 -0700</date>
            <delta_ts>2021-04-29 03:46:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222903-20210402205745.patch</filename>
            <type>text/plain</type>
            <size>42344</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MzE1YWVlYjI3YTZmYWM5MjQ3YTA3MjllYjlmNjE0ZDMzMTFiYWRhLi41MzllZDUzMTMxMzkyODQ4
YzZhMTRlOWNmNzhmMDBkYzg5Njk4OGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAyMS0wNC0wMiAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxs
X3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbGxfcmVmIGluc3RydWN0aW9uIGZyb20gdHlwZWQg
ZnVuY3Rpb24KKyAgICAgICAgcmVmZXJlbmNlcyBwcm9wb3NhbDogaHR0cHM6Ly9naXRodWIuY29t
L1dlYkFzc2VtYmx5L2Z1bmN0aW9uLXJlZmVyZW5jZXMvYmxvYi9tYXN0ZXIvcHJvcG9zYWxzL2Z1
bmN0aW9uLXJlZmVyZW5jZXMvT3ZlcnZpZXcubWQuCisgICAgICAgIFRoaXMgaW5zdHJ1Y3Rpb24g
Y2FsbHMgZ2l2ZW4gZnVuY3Rpb24gcmVmZXJlbmNlcyBmcm9tIHRoZSBzdGFjay4KKyAgICAgICAg
V2UganVzdCByZXRyaWV2ZSB0aGUgaW5zdGFuY2UgYW5kIGZ1bmN0aW9uIGNvZGUgcG9pbnRlcnMg
ZnJvbSBwYXNzZWQgV2ViQXNzZW1ibHlGdW5jdGlvbiBhbmQgZW1pdCB0aGUgY2FsbC4KKyAgICAg
ICAgQWxsIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXN1bHQgdHlwZSBpcyBwcmVwYXJlZCBpbiBy
ZWYuZnVuYy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5
TGV2ZWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L1dlYkFzc2VtYmx5LmFzbToKKyAgICAgICAgKiBydW50aW1lL0dhdGUuaDoKKyAg
ICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OkFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpB
aXJJUkdlbmVyYXRvcjo6YWRkQ2FsbFJlZik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjplbWl0SW5kaXJlY3RDYWxsKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0
Q2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVj
dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAg
ICAgICAqIHdhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpX
YXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNoYWJsZUV4cHJlc3Npb24p
OgorICAgICAgICAqIHdhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgorICAgICAgICAqIHdhc20vV2FzbVNs
b3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50Ojpkb1dhc21DYWxsUmVmKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OldBU01fU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHdhc20vV2Fz
bVNsb3dQYXRocy5oOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIxLTA0LTAxICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
Mjc0NzI0KTogSklUQ2FnZSB0cmFtcG9saW5lIG5lZWRzIHRvIGJlIGFkanVzdGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4
YzliYmJhMTRjNTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4xNjQxMDFmZWNlMDQyNmEwMDJmZjVh
NDdhMWMwMjRiODk0NjY0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QucmIKQEAgLTE0NzQsNiArMTQ3NCw4IEBAIG9wIDp3YXNtX3RyYW1wb2xp
bmVfd2FzbV9jYWxsCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHMKIG9wIDp3
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dh
c21fY2FsbF9pbmRpcmVjdF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3Jl
Zgorb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RscwogCiBlbmRfc2VjdGlv
biA6TmF0aXZlSGVscGVycwogCkBAIC0xNDk1LDYgKzE0OTcsOCBAQCBvcCA6Y2FsbF9yZXR1cm5f
bG9jYXRpb24KIG9wIDpjYWxsX25vX3Rsc19yZXR1cm5fbG9jYXRpb24KIG9wIDpjYWxsX2luZGly
ZWN0X3JldHVybl9sb2NhdGlvbgogb3AgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzX3JldHVybl9sb2Nh
dGlvbgorb3AgOmNhbGxfcmVmX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfcmVmX25vX3Rsc19y
ZXR1cm5fbG9jYXRpb24KIAogIyBGSVhNRTogV2FzbSBhbmQgSlMgTExJbnQgc2hvdWxkIHNoYXJl
IGNvbW1vbiBvcGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM2NTYKQEAgLTE2ODYsNiArMTY5MCwyMiBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHMs
CiAgICAgICAgIHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOmNhbGxfcmVmLAor
ICAgIGFyZ3M6IHsKKyAgICAgICAgZnVuY3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwK
KyAgICAgICAgc2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDog
dW5zaWduZWQsCisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICB9CisK
K29wIDpjYWxsX3JlZl9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvblJlZmVy
ZW5jZTogVmlydHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQs
CisgICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZTdGFja0Fy
Z3M6IHVuc2lnbmVkLAorICAgIH0KKwogb3AgOmN1cnJlbnRfbWVtb3J5LAogICAgIGFyZ3M6IHsK
ICAgICAgICAgZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYWNhMDBkZTRmNjUxZjk0ZWE0OGM5NGM2ODU5
OWVhNWQyN2VkYmMxMi4uNDhlMjVjNTQxZjlmYTk4ODkyNjZjNDc5YmEwODY0OWEwYzUxMmFkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MzY4LDYgKzM2OCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSB3YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX25vX3RsczoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfaW5kaXJlY3Q6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3RsczoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmOgorICAg
IGNhc2Ugd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzOgogICAgICAgICByZXR1
cm4gQ2Fubm90Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggMzgzMzdkN2QxOTA4NGNkNWY3Mjc3NmI1NmRlOGQ5MWMyMGVjMjhhYS4uZDQyMTk4OWFk
N2MzYThkNTk5M2EyM2QwN2RhNTNlOTJjNmVlZDJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjUyNSwxNCArMjUy
NSwyMCBAQCBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX25vX3RsczoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgogX3dh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfcmVmOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RsczoK
IF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUxNjoKIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX25vX3Rsc193aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVj
dF93aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lk
ZTE2OgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX3dpZGUxNjoKK193YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHNfd2lkZTE2OgogX3dhc21fdHJhbXBvbGluZV93YXNt
X2NhbGxfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUzMjoK
IF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUzMjoKIF93YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFtcG9saW5l
X3dhc21fY2FsbF9yZWZfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25v
X3Rsc193aWRlMzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDU1MTdiMjU3NzI4ZmQ1NGRmNzQzY2Q5MmM5YTI3
M2NjNmNhMTdmMjkuLjRmZWZmN2U1MGUzOTdmYWU5Zjg5ZjM2ZWE4M2RjYjk5NDQyNDdmNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtODc3LDYg
Kzg3NywxNCBAQCB3YXNtT3AoY2FsbF9pbmRpcmVjdF9ub190bHMsIFdhc21DYWxsSW5kaXJlY3RO
b1RscywgbWFjcm8oY3R4KQogICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRo
X3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRh
cmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQogZW5kKQogCit3YXNtT3AoY2FsbF9yZWYs
IFdhc21DYWxsUmVmLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9z
bG93X3BhdGhfd2FzbV9jYWxsX3JlZiwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKwor
d2FzbU9wKGNhbGxfcmVmX25vX3RscywgV2FzbUNhbGxSZWZOb1RscywgbWFjcm8oY3R4KQorICAg
IHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9yZWZfbm9fdGxz
LCBtYWNybyh0YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNl
IGVuZCkKK2VuZCkKKwogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwg
bWFjcm8oY3R4KQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFu
Y2VdLCB0MAogICAgIGxvYWRwIFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oCmluZGV4IDQ2OTcxNWY5NjNhMjg0ZjYxZjI2MTBhODdl
NWE4MDdiNTU0MmU4MDMuLmY2YTA1YjA2NWUzMmQ4YWVjZDU2N2JmNmFiNzRhYWU2Mzg5OTc3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJU
YWcpIFwKICAgICB2KHdhc21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBc
CiAgICAgdih3YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcp
IFwKKyAgICB2KHdhc21fY2FsbF9yZWYsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYo
d2FzbV9jYWxsX3JlZl9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAogCiAjZWxzZQog
I2RlZmluZSBKU0NfV0FTTV9HQVRFX09QQ09ERVModikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IGY5MDBlOTBlM2E1MmEyNmE5
MTc4M2RhYmFmMTU1NWI1ZGEzNGI3NmEuLjYyMDkzODY5NDVmM2ZkMmQ0YjkyNDNjMmZmM2YwZjAw
MjE5YjhiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklS
R2VuZXJhdG9yLmNwcApAQCAtMzI1LDcgKzMyNSw5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwog
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2Fs
bGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUm
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAg
ICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25h
dHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7
CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChU
eXBlZFRtcCBjYWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSwgY29uc3Qg
U2lnbmF0dXJlJiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYpOwogICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0Q2Fs
bFBhdGNocG9pbnQoQmFzaWNCbG9jayosIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IFJlc3VsdExp
c3QmIHJlc3VsdHMsIGNvbnN0IFZlY3RvcjxUeXBlZFRtcD4mIGFyZ3MsIFZlY3RvcjxDb25zdHJh
aW5lZFRtcD4mJiBleHRyYUFyZ3MgPSB7IH0pOwogCiAgICAgUGFydGlhbFJlc3VsdCBhZGRTaGlm
dChUeXBlLCBCMzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9u
VHlwZSBzaGlmdCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0zMjczLDkgKzMyNzUsNiBA
QCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRl
eCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgIC8vIGNhbiBiZSB0byB0aGUgZW1iZWRkZXIg
Zm9yIG91ciBzdGFjayBjaGVjayBjYWxjdWxhdGlvbi4KICAgICBtX21heE51bUpTQ2FsbEFyZ3Vt
ZW50cyA9IHN0ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzLCBzdGF0aWNfY2FzdDx1aW50
MzJfdD4oYXJncy5zaXplKCkpKTsKIAotICAgIGF1dG8gY3VycmVudEluc3RhbmNlID0gZzY0KCk7
Ci0gICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwgY3VycmVudEluc3RhbmNlKTsKLQog
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIgPSBnNjQoKTsKICAgICBF
eHByZXNzaW9uVHlwZSBpbnN0YW5jZXNCdWZmZXIgPSBnNjQoKTsKICAgICBFeHByZXNzaW9uVHlw
ZSBjYWxsYWJsZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoID0gZzY0KCk7CkBAIC0zMzQwLDE1ICszMzM5
LDQxIEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJs
ZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgICAgIH0pOwogICAgIH0KIAorICAg
IGF1dG8gY2FsbGVlSW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjppbmRl
eChpbnN0YW5jZXNCdWZmZXIsIGNhbGxlZUluZGV4LCA4LCAwKSwgY2FsbGVlSW5zdGFuY2UpOwor
CisgICAgcmV0dXJuIGVtaXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUs
IHNpZ25hdHVyZSwgYXJncywgcmVzdWx0cyk7Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZENhbGxSZWYoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBt
X21ha2VzQ2FsbHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwgaW5kaXJlY3QgY2FuIGNhbGwg
ZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
IEJlY2F1c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxp
bmcgaW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBp
bmRpcmVjdHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hl
Y2sgY2FsY3VsYXRpb24uCisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlRnVuY3Rpb24gPSBhcmdz
LnRha2VMYXN0KCk7CisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21h
eE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7
CisKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlID0gZzY0KCk7CisgICAgYXBwZW5kKE1v
dmUsIEFyZzo6YWRkcihjYWxsZWVGdW5jdGlvbiwgV2ViQXNzZW1ibHlGdW5jdGlvbjo6b2Zmc2V0
T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCkpLCBjYWxsZWVDb2RlKTsgLy8gUG9pbnRlciB0byBj
YWxsZWUgY29kZS4KKworICAgIGF1dG8gY2FsbGVlSW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBl
bmQoTW92ZSwgQXJnOjphZGRyKGNhbGxlZUZ1bmN0aW9uLCBXZWJBc3NlbWJseUZ1bmN0aW9uQmFz
ZTo6b2Zmc2V0T2ZJbnN0YW5jZSgpKSwgY2FsbGVlSW5zdGFuY2UpOworCisgICAgcmV0dXJuIGVt
aXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJn
cywgcmVzdWx0cyk7Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwo
VHlwZWRUbXAgY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0
IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdz
LCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgYXV0byBjdXJy
ZW50SW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBlbmQoTW92ZSwgaW5zdGFuY2VWYWx1ZSgpLCBj
dXJyZW50SW5zdGFuY2UpOworCiAgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVkZWQu
CiAgICAgewotICAgICAgICBhdXRvIG5ld0NvbnRleHRJbnN0YW5jZSA9IGc2NCgpOwotICAgICAg
ICBhcHBlbmQoTW92ZSwgQXJnOjppbmRleChpbnN0YW5jZXNCdWZmZXIsIGNhbGxlZUluZGV4LCA4
LCAwKSwgbmV3Q29udGV4dEluc3RhbmNlKTsKLQogICAgICAgICBCYXNpY0Jsb2NrKiBkb0NvbnRl
eHRTd2l0Y2ggPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICAgICAgQmFzaWNCbG9jayogY29udGlu
dWF0aW9uID0gbV9jb2RlLmFkZEJsb2NrKCk7CiAKLSAgICAgICAgYXBwZW5kKEJyYW5jaDY0LCBB
cmc6OnJlbENvbmQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsKSwgbmV3Q29udGV4dEluc3RhbmNlLCBp
bnN0YW5jZVZhbHVlKCkpOworICAgICAgICBhcHBlbmQoQnJhbmNoNjQsIEFyZzo6cmVsQ29uZChN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwpLCBjYWxsZWVJbnN0YW5jZSwgY3VycmVudEluc3RhbmNlKTsK
ICAgICAgICAgbV9jdXJyZW50QmxvY2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uLCBkb0Nv
bnRleHRTd2l0Y2gpOwogCiAgICAgICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQYXRjaHBvaW50
KEIzOjpWb2lkKTsKQEAgLTMzODAsNyArMzQwNSw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25h
CiAgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJp
bWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
LCBzY3JhdGNoKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250
ZXh0U3dpdGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5j
ZVZhbHVlKCkpOworICAgICAgICBlbWl0UGF0Y2hwb2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNo
cG9pbnQsIFRtcCgpLCBjYWxsZWVJbnN0YW5jZSwgY3VycmVudEluc3RhbmNlKTsKICAgICAgICAg
YXBwZW5kKGRvQ29udGV4dFN3aXRjaCwgSnVtcCk7CiAgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+
c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKaW5kZXggMGJiNzRjOGJmZWE4ZTBjODYyNWVh
NGU4YzdiYzI5NmI2NGZmNGMxMi4uNWQyMWRkNDkyMmU0Nzg3ZGUxM2E1MDJiYTIyMmUxZWJhMzNm
MWNjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcApAQCAtMjg1LDcgKzI4NSw5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5k
ZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3Vs
dExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CisgICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSog
Y2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0IFNpZ25hdHVy
ZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKICAgICBCMzo6
VmFsdWUqIGNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqLCBPcmlnaW4sIGNvbnN0IFNp
Z25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIGNvbnN0IFNjb3BlZExhbWJk
YTx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPiYgcGF0Y2hwb2ludEZ1bmN0b3IpOwogCiAgICAgdm9p
ZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYsIGNvbnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2sp
OwpAQCAtODY2LDYgKzg2OCw5NSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZFVucmVhY2hhYmxl
KCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAKK2F1dG8gQjNJUkdlbmVy
YXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25U
eXBlIGNhbGxlZUNvZGUsIGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7
CisgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVkZWQuCisgICAgeworICAgICAgICBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX3Byb2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFz
aWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9wcm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAg
VmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAorICAgICAgICAgICAgY2FsbGVlSW5zdGFu
Y2UsIGluc3RhbmNlVmFsdWUoKSk7CisgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdD
b250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBvcmlnaW4oKSwKKyAgICAgICAgICAgIGlz
U2FtZUNvbnRleHRJbnN0YW5jZSwgRnJlcXVlbnRlZEJsb2NrKGNvbnRpbnVhdGlvbiksIEZyZXF1
ZW50ZWRCbG9jayhkb0NvbnRleHRTd2l0Y2gpKTsKKworICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBkb0NvbnRleHRTd2l0Y2gtPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+
KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0
cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNz
dW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5nIHdpdGggQm91bmRzQ2hlY2tpbmcgbWVtb3J5Lgor
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJv
dW5kc0NoZWNraW5nKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNh
bGxlZUluc3RhbmNlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAg
ICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CisKKyAgICAgICAgcGF0
Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAgICAgR1BS
UmVnIG5ld0NvbnRleHRJbnN0YW5jZSA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBvbGRDb250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMV0uZ3ByKCk7CisgICAgICAgICAgICBj
b25zdCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86
OmdldCgpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VN
ZW1vcnlQb2ludGVyOworICAgICAgICAgICAgQVNTRVJUKG5ld0NvbnRleHRJbnN0YW5jZSAhPSBi
YXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhvbGRDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQo
KSksIGJhc2VNZW1vcnkpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKGJhc2VNZW1vcnksIEND
YWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZFN0YWNrTGltaXQoKSkpOworICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHRJ
bnN0YW5jZShuZXdDb250ZXh0SW5zdGFuY2UpOworICAgICAgICAgICAgQVNTRVJUKHBpbm5lZFJl
Z3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSBy
ZWdpc3RlcgorICAgICAgICAgICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjI5NTIKKyAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5k
c0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5jZSk7CisgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisKKyAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3Vu
ZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsgLy8gTWVtb3J5Ojp2b2lk
Ki4KKworICAgICAgICAgICAgaml0LmNhZ2VDb25kaXRpb25hbGx5QW5kVW50YWcoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgcGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdp
c3Rlciwgc2NyYXRjaCk7CisgICAgICAgIH0pOworICAgICAgICBkb0NvbnRleHRTd2l0Y2gtPmFw
cGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24p
OworCisgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOworICAgIH0KKworICAg
IEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlwZSgmc2lnbmF0dXJlKTsKKyAgICBF
eHByZXNzaW9uVHlwZSBjYWxsUmVzdWx0ID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQobV9jdXJyZW50
QmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCisgICAgICAgIHNjb3BlZExhbWJkYVJl
Zjx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPihbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCkgLT4gdm9pZCB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5l
ZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBp
bm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCisg
ICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGFsd2F5cyBjYWxs
aW5nIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZyBzbworICAgICAgICAgICAgLy8g
YmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVzIHRo
ZSBzaXplIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGhh
dmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4KKyAg
ICAgICAgICAgIC8vIHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMgYXMgc2NyYXRjaDogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUo
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKworICAgICAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICAgICAg
cGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIz
OjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEFs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAgICAgICAg
ICAgICAgICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5U
eXBlKV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSkpOworCisgICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkgeworICAgIGNhc2UgQjM6OlZv
aWQ6IHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQjM6OlR1cGxlOiB7CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9jLnR1cGxlRm9yVHlwZShy
ZXR1cm5UeXBlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX2N1cnJlbnRC
bG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHVwbGVbaV0s
IGNhbGxSZXN1bHQsIGkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6IHsK
KyAgICAgICAgcmVzdWx0cy5hcHBlbmQoY2FsbFJlc3VsdCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICB9CisKKyAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBX
ZWJBc3NlbWJseSBpbnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVt
b3J5LgorICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFj
a0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1
cnJlbnRCbG9jayk7CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIEIzSVJHZW5lcmF0b3I6
OmFkZEdyb3dNZW1vcnkoRXhwcmVzc2lvblR5cGUgZGVsdGEsIEV4cHJlc3Npb25UeXBlJiByZXN1
bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQgPSBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PENDYWxsVmFsdWU+KG1fcHJvYywgSW50MzIsIG9yaWdpbigpLApAQCAtMjUyMCwxMDAg
KzI2MTEsMzYgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQg
dGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXQKICAgICAgICAgfQogICAgIH0KIAot
ICAgIC8vIERvIGEgY29udGV4dCBzd2l0Y2ggaWYgbmVlZGVkLgotICAgIHsKLSAgICAgICAgVmFs
dWUqIG9mZnNldCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTXVs
LCBvcmlnaW4oKSwKLSAgICAgICAgICAgIGNhbGxlZUluZGV4LCBjb25zdGFudChwb2ludGVyVHlw
ZSgpLCBzaXplb2YoSW5zdGFuY2UqKSkpOwotICAgICAgICBWYWx1ZSogbmV3Q29udGV4dEluc3Rh
bmNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBMb2Fk
LCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKLSAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwgaW5zdGFuY2VzQnVmZmVyLCBv
ZmZzZXQpKTsKLQotICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX3Byb2MuYWRk
QmxvY2soKTsKLSAgICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9wcm9jLmFk
ZEJsb2NrKCk7Ci0KLSAgICAgICAgVmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9IG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigpLAotICAg
ICAgICAgICAgbmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5jZVZhbHVlKCkpOwotICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgQjM6OkJyYW5jaCwg
b3JpZ2luKCksCi0gICAgICAgICAgICBpc1NhbWVDb250ZXh0SW5zdGFuY2UsIEZyZXF1ZW50ZWRC
bG9jayhjb250aW51YXRpb24pLCBGcmVxdWVudGVkQmxvY2soZG9Db250ZXh0U3dpdGNoKSk7Ci0K
LSAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gZG9Db250ZXh0U3dpdGNoLT5h
cHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihtX3Byb2MsIEIzOjpWb2lkLCBvcmlnaW4oKSk7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKLSAgICAgICAg
Ly8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSdyZSBjYWxsaW5nIHNvbWV0aGluZyB3aXRo
IEJvdW5kc0NoZWNraW5nIG1lbW9yeS4KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBo
YXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIxODEKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihQaW5uZWRSZWdpc3RlckluZm86Omdl
dCgpLnRvU2F2ZShNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOwotICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7Ci0gICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChuZXdDb250ZXh0SW5zdGFuY2UsIFZhbHVlUmVwOjpTb21l
UmVnaXN0ZXIpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQoaW5zdGFuY2VWYWx1ZSgpLCBW
YWx1ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNo
UmVnaXN0ZXJzID0gMTsKLQotICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFy
YW1zKSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7Ci0gICAgICAgICAgICBHUFJSZWcgbmV3Q29udGV4dEluc3RhbmNlID0gcGFy
YW1zWzBdLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIG9sZENvbnRleHRJbnN0YW5jZSA9IHBh
cmFtc1sxXS5ncHIoKTsKLSAgICAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlu
bmVkUmVncyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7Ci0gICAgICAgICAgICBHUFJSZWcg
YmFzZU1lbW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7Ci0gICAgICAgICAgICBB
U1NFUlQobmV3Q29udGV4dEluc3RhbmNlICE9IGJhc2VNZW1vcnkpOwotICAgICAgICAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG9sZENvbnRleHRJbnN0YW5jZSwgSW5zdGFu
Y2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSwgYmFzZU1lbW9yeSk7Ci0gICAgICAgICAg
ICBqaXQuc3RvcmVQdHIoYmFzZU1lbW9yeSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0NvbnRl
eHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkU3RhY2tMaW1pdCgpKSk7Ci0gICAg
ICAgICAgICBqaXQuc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKG5ld0NvbnRleHRJbnN0YW5jZSk7
Ci0gICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rl
ciAhPSBiYXNlTWVtb3J5KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9y
dCBtb3JlIHRoYW4gb25lIG1lbW9yeSBzaXplIHJlZ2lzdGVyCi0gICAgICAgICAgICAvLyAgIHNl
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgotICAgICAg
ICAgICAgQVNTRVJUKHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gbmV3
Q29udGV4dEluc3RhbmNlKTsKLSAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoID0gcGFyYW1zLmdw
U2NyYXRjaCgwKTsKLQotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKG5ld0NvbnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkQm91bmRzQ2hl
Y2tpbmdTaXplKCkpLCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyKTsgLy8g
TWVtb3J5IHNpemUuCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSks
IGJhc2VNZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgotCi0gICAgICAgICAgICBqaXQuY2FnZUNv
bmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5u
ZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIGRvQ29udGV4dFN3aXRjaC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywg
SnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7Ci0KLSAgICAgICAgbV9jdXJyZW50QmxvY2sg
PSBjb250aW51YXRpb247Ci0gICAgfQotCisgICAgVmFsdWUqIG9mZnNldCA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgTXVsLCBvcmlnaW4oKSwKKyAgICAgICAgY2Fs
bGVlSW5kZXgsIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHNpemVvZihJbnN0YW5jZSopKSk7Cisg
ICAgVmFsdWUqIGNhbGxlZUluc3RhbmNlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4obV9wcm9jLCBMb2FkLCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwKKyAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIG9yaWdpbigpLCBp
bnN0YW5jZXNCdWZmZXIsIG9mZnNldCkpOwogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBv
aW50ZXJUeXBlKCksIG9yaWdpbigpLAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBjYWxs
YWJsZUZ1bmN0aW9uLAogICAgICAgICAgICAgc2FmZUNhc3Q8aW50MzJfdD4oV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCkpKSk7CiAK
LSAgICBCMzo6VHlwZSByZXR1cm5UeXBlID0gdG9CM1Jlc3VsdFR5cGUoJnNpZ25hdHVyZSk7Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KG1fY3Vy
cmVudEJsb2NrLCBvcmlnaW4oKSwgc2lnbmF0dXJlLCBhcmdzLAotICAgICAgICBzY29wZWRMYW1i
ZGFSZWY8dm9pZChQYXRjaHBvaW50VmFsdWUqKT4oWz1dIChQYXRjaHBvaW50VmFsdWUqIHBhdGNo
cG9pbnQpIC0+IHZvaWQgewotICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQ
aW5uZWQgPSB0cnVlOwotICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5l
ZCA9IHRydWU7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxsIHBvdGVudGlh
bCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhlIGluc3RhbmNl
LgotICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSdyZSBhbHdheXMg
Y2FsbGluZyBzb21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcgc28KLSAgICAgICAgICAg
IC8vIGJlY2F1c2UgdGhlIHdhc20tPndhc20gdGh1bmsgdW5jb25kaXRpb25hbGx5IG92ZXJyaWRl
cyB0aGUgc2l6ZSByZWdpc3RlcnMuCi0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5v
dCBoYXZlIHRvIGRvIHRoaXMsIGJ1dCB0aGUgd2FzbS0+d2FzbSBzdHViIGFzc3VtZXMgaXQgY2Fu
Ci0gICAgICAgICAgICAvLyB1c2UgYWxsIHRoZSBwaW5uZWQgcmVnaXN0ZXJzIGFzIHNjcmF0Y2g6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKLSAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9T
YXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgcmV0dXJuIGVtaXRJbmRpcmVj
dENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0
cyk7Cit9CiAKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChjYWxsZWVDb2RlLCBWYWx1
ZVJlcDo6U29tZVJlZ2lzdGVyKTsKLSAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRv
cihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7Ci0gICAgICAgICAgICAgICAgaml0LmNhbGwocGFyYW1z
W3BhcmFtcy5wcm9jKCkucmVzdWx0Q291bnQocmV0dXJuVHlwZSldLmdwcigpLCBXYXNtRW50cnlQ
dHJUYWcpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pKTsKK2F1dG8gQjNJUkdlbmVyYXRv
cjo6YWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdAorewor
ICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZSA9IGFyZ3MudGFrZUxhc3QoKTsKKyAgICBtX21ha2Vz
Q2FsbHMgPSB0cnVlOwogCi0gICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkgewotICAgIGNh
c2UgQjM6OlZvaWQ6IHsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQjM6OlR1cGxl
OiB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9jLnR1cGxl
Rm9yVHlwZShyZXR1cm5UeXBlKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNp
Z25hdHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZCht
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwg
dHVwbGVbaV0sIGNhbGxSZXN1bHQsIGkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRl
ZmF1bHQ6IHsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoY2FsbFJlc3VsdCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICB9CisgICAgLy8gTm90ZTogY2FsbCByZWYgY2FuIGNhbGwgZWl0aGVy
IFdlYkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1
c2UKKyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50
byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVj
dHMKKyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2Fs
Y3VsYXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51
bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CiAK
LSAgICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBp
bnN0YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgIHJl
c3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMs
IG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7
CisgICAgVmFsdWUqIG9mZnNldCA9IGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIHNhZmVDYXN0PGlu
dDMyX3Q+KFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpvZmZzZXRPZkluc3RhbmNlKCkpKTsKKyAg
ICBWYWx1ZSogY2FsbGVlSW5zdGFuY2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3JpZ2luKCksIGNh
bGxlZSwgb2Zmc2V0KSk7CiAKLSAgICByZXR1cm4geyB9OworICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxlZUNvZGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2Ms
IExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdp
bigpLCBjYWxsZWUsCisgICAgICAgICAgICBzYWZlQ2FzdDxpbnQzMl90PihXZWJBc3NlbWJseUZ1
bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSkpKTsKKworICAgIHJldHVy
biBlbWl0SW5kaXJlY3RDYWxsKGNhbGxlZUluc3RhbmNlLCBjYWxsZWVDb2RlLCBzaWduYXR1cmUs
IGFyZ3MsIHJlc3VsdHMpOwogfQogCiB2b2lkIEIzSVJHZW5lcmF0b3I6OnVuaWZ5KGNvbnN0IEV4
cHJlc3Npb25UeXBlIHBoaSwgY29uc3QgRXhwcmVzc2lvblR5cGUgc291cmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBkZjBlMWNh
ZjMwNTYyNDY3NzZlMDMzOTdkMmFhYjFjOWQyOGUxNTMzLi41MzcxNmNjM2JjMzBlZDg0YjZhMGMy
NTdiMDU3ZGNmZTc5MWU3NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtMTI0OCw2ICsxMjQ4LDM2IEBAIEZPUl9FQUNIX1dBU01f
TUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogCiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQorCisgICAgY2FzZSBDYWxsUmVmOiB7CisgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYo
IW1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaXNUeXBlSWR4KCksICJub24tZnVuY3Jl
ZiBjYWxsX3JlZiB2YWx1ZSAiLCBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmtpbmQp
OworCisgICAgICAgIGNvbnN0IFNpZ25hdHVyZUluZGV4IGNhbGxlZVNpZ25hdHVyZUluZGV4ID0g
bV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5pbmRleDsKKyAgICAgICAgY29uc3QgU2ln
bmF0dXJlJiBjYWxsZWVTaWduYXR1cmUgPSBTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxl
ZVNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVT
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyB2YWx1ZS4K
KyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4gbV9leHByZXNzaW9u
U3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3Vt
ZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CisKKyAgICAgICAgVmVjdG9yPEV4cHJlc3Np
b25UeXBlPiBhcmdzOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFhcmdzLnRyeVJlc2Vy
dmVDYXBhY2l0eShhcmd1bWVudENvdW50ICsgMSksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVt
b3J5IGZvciAiLCBhcmd1bWVudENvdW50LCAiIGNhbGxfaW5kaXJlY3QgYXJndW1lbnRzIik7Cisg
ICAgICAgIHNpemVfdCBmaXJzdEFyZ3VtZW50SW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5zaXpl
KCkgLSBhcmd1bWVudENvdW50OworICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RBcmd1bWVu
dEluZGV4OyBpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IFR5cGVkRXhwcmVzc2lvbiBhcmcgPSBtX2V4cHJlc3Npb25TdGFjay5hdChpKTsKKyAgICAgICAg
ICAgIGlmIChpIDwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gMSkKKyAgICAgICAgICAgICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKGFyZy50eXBlKCkgIT0gY2FsbGVlU2lnbmF0dXJlLmFy
Z3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5kZXgpLCAiYXJndW1lbnQgdHlwZSBtaXNtYXRjaCBp
biBjYWxsX2luZGlyZWN0LCBnb3QgIiwgYXJnLnR5cGUoKS5raW5kLCAiLCBleHBlY3RlZCAiLCBj
YWxsZWVTaWduYXR1cmUuYXJndW1lbnQoaSAtIGZpcnN0QXJndW1lbnRJbmRleCkua2luZCk7Cisg
ICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChhcmcpOworICAgICAgICAgICAgbV9jb250
ZXh0LmRpZFBvcFZhbHVlRnJvbVN0YWNrKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9leHByZXNz
aW9uU3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CisKKyAgICAgICAgUmVzdWx0TGlz
dCByZXN1bHRzOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxsUmVmKGNh
bGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0cykpOworCisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjYWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAg
ICAgbV9leHByZXNzaW9uU3RhY2suY29uc3RydWN0QW5kQXBwZW5kKGNhbGxlZVNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpLCByZXN1bHRzW2ldKTsKKworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KwogICAgIGNhc2UgQmxvY2s6IHsKICAgICAgICAgQmxvY2tTaWduYXR1cmUgaW5saW5lU2lnbmF0
dXJlOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1f
aW5mbywgaW5saW5lU2lnbmF0dXJlKSwgImNhbid0IGdldCBibG9jaydzIHNpZ25hdHVyZSIpOwpA
QCAtMTczOSw2ICsxNzY5LDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VV
bnJlYWNoYWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgLy8gbm8gaW1tZWRp
YXRlIGNhc2VzCiAgICAgRk9SX0VBQ0hfV0FTTV9CSU5BUllfT1AoQ1JFQVRFX0NBU0UpCiAgICAg
Rk9SX0VBQ0hfV0FTTV9VTkFSWV9PUChDUkVBVEVfQ0FTRSkKKyAgICBjYXNlIENhbGxSZWY6CiAg
ICAgY2FzZSBVbnJlYWNoYWJsZToKICAgICBjYXNlIE5vcDoKICAgICBjYXNlIFJldHVybjoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCmlu
ZGV4IDUzN2VlNTY1MjBlZDU4NDMwMWY0ODIwNDk2MmNmMjc4NmJkYjM0ZmQuLmNlMjliNjhmOTgx
MDQ1YmNjNjM2MWIyMTIxOWY0ZDAzMWVkZjJjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtMjUzLDYgKzI1Myw3IEBAIHB1
YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1
bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFVucmVhY2hhYmxlKCk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmdMb2NhbHMo
KTsKQEAgLTExMDIsNiArMTEwMywyMSBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5k
aXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogICAgIHJl
dHVybiB7IH07CiB9CiAKK2F1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgU2ln
bmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExp
c3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxs
ZWUgPSBhcmdzLnRha2VMYXN0KCk7CisKKyAgICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0g
Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKHNpZ25hdHVyZSk7CisgICAgdW5pZnlWYWx1ZXNXaXRo
QmxvY2soaW5mby5hcmd1bWVudHMsIGFyZ3MpOworICAgIGlmIChDb250ZXh0Ojp1c2VGYXN0VExT
KCkpCisgICAgICAgIFdhc21DYWxsUmVmOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2st
PmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9m
U3RhY2tBcmd1bWVudHMpOworICAgIGVsc2UKKyAgICAgICAgV2FzbUNhbGxSZWZOb1Rsczo6ZW1p
dCh0aGlzLCBjYWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5m
by5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKKyAgICBpbmZvLmNv
bW1pdFJlc3VsdHMocmVzdWx0cyk7CisKKyAgICByZXR1cm4geyB9OworfQorCiBhdXRvIExMSW50
R2VuZXJhdG9yOjphZGRSZWZJc051bGwoRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25U
eXBlJiByZXN1bHQpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICByZXN1bHQgPSBwdXNoKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IGE2MWQw
Y2M3ZmYzMjlkYjVkNjE5NGVlNjg1YmQ1MjkxOWNiY2Q0NTkuLjI5MTJkNGI2MjQyZjllM2I3MWI1
Zjg0ZDNjNDU5NTY2OGI0YmNjYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TbG93UGF0aHMuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogCiAjaW5jbHVkZSAiQnl0ZWNvZGVTdHJ1Y3RzLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiV2FzbUJCUVBs
YW4uaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCkBAIC00MCw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiV2FzbU9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJXYXNtU2lnbmF0dXJlSW5saW5lcy5oIgog
I2luY2x1ZGUgIldhc21Xb3JrbGlzdC5oIgorI2luY2x1ZGUgIldlYkFzc2VtYmx5RnVuY3Rpb24u
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKQEAgLTQ5OCw2ICs1MDAs
NDAgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX2luZGlyZWN0X25vX3RscykKICAgICByZXR1
cm4gZG9XYXNtQ2FsbEluZGlyZWN0KGNhbGxGcmFtZSwgaW5zdGFuY2UsIGZ1bmN0aW9uSW5kZXgs
IGluc3RydWN0aW9uLm1fdGFibGVJbmRleCwgaW5zdHJ1Y3Rpb24ubV9zaWduYXR1cmVJbmRleCk7
CiB9CiAKK2lubGluZSBTbG93UGF0aFJldHVyblR5cGUgZG9XYXNtQ2FsbFJlZihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2UqIGluc3RhbmNlLCBKU1ZhbHVlIHRhcmdldFJlZmVy
ZW5jZSwgdW5zaWduZWQgc2lnbmF0dXJlSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CisKKyAgICBBU1NFUlQodGFyZ2V0UmVmZXJlbmNlLmlzT2JqZWN0KCkpOworICAgIEpT
T2JqZWN0KiByZWZlcmVuY2VBc09iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRhcmdldFJlZmVy
ZW5jZSk7CisgICAgQVNTRVJUKHJlZmVyZW5jZUFzT2JqZWN0LT5pbmhlcml0czxXZWJBc3NlbWJs
eUZ1bmN0aW9uPihpbnN0YW5jZS0+b3duZXI8SlNPYmplY3Q+KCktPnZtKCkpKTsKKworICAgIFdl
YkFzc2VtYmx5RnVuY3Rpb24qIHdhc21GdW5jdGlvbiA9IGpzQ2FzdDxXZWJBc3NlbWJseUZ1bmN0
aW9uKj4ocmVmZXJlbmNlQXNPYmplY3QpOworICAgIFdhc206Okluc3RhbmNlKiB0YXJnZXRJbnN0
YW5jZSA9ICZ3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCk7CisKKyAgICBpZiAo
dGFyZ2V0SW5zdGFuY2UgIT0gaW5zdGFuY2UpCisgICAgICAgIHRhcmdldEluc3RhbmNlLT5zZXRD
YWNoZWRTdGFja0xpbWl0KGluc3RhbmNlLT5jYWNoZWRTdGFja0xpbWl0KCkpOworCisgICAgY29u
c3QgV2FzbTo6V2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiYgZnVuY3Rpb24gPSB3YXNtRnVu
Y3Rpb24tPmltcG9ydGFibGVGdW5jdGlvbigpOworICAgIEFTU0VSVChmdW5jdGlvbi5zaWduYXR1
cmVJbmRleCA9PSBXYXNtOjpTaWduYXR1cmVJbmZvcm1hdGlvbjo6Z2V0KENPREVfQkxPQ0soKS0+
c2lnbmF0dXJlKHNpZ25hdHVyZUluZGV4KSkpOworICAgIFVOVVNFRF9QQVJBTShzaWduYXR1cmVJ
bmRleCk7CisgICAgV0FTTV9DQUxMX1JFVFVSTih0YXJnZXRJbnN0YW5jZSwgZnVuY3Rpb24uZW50
cnlwb2ludExvYWRMb2NhdGlvbi0+ZXhlY3V0YWJsZUFkZHJlc3MoKSwgV2FzbUVudHJ5UHRyVGFn
KTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZikKK3sKKyAgICBhdXRvIGluc3Ry
dWN0aW9uID0gcGMtPmFzPFdhc21DYWxsUmVmLCBXYXNtT3Bjb2RlVHJhaXRzPigpOworICAgIEpT
VmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQoaW5zdHJ1Y3Rpb24ubV9mdW5j
dGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIGRvV2FzbUNhbGxS
ZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVy
ZUluZGV4KTsKK30KKworV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3JlZl9ub190bHMpCit7Cisg
ICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtQ2FsbFJlZk5vVGxzLCBXYXNtT3Bjb2Rl
VHJhaXRzPigpOworICAgIEpTVmFsdWUgcmVmZXJlbmNlID0gSlNWYWx1ZTo6ZGVjb2RlKFJFQUQo
aW5zdHJ1Y3Rpb24ubV9mdW5jdGlvblJlZmVyZW5jZSkuZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
cmV0dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlLCBpbnN0
cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKK30KKwogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRf
Z2xvYmFsX3JlZikKIHsKICAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9i
YWxSZWYsIFdhc21PcGNvZGVUcmFpdHM+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2xvd1BhdGhzLmgKaW5kZXggZjhhYWNhMDhkMzEyODg0YWYxN2JjYmJiNzdiNzZkZWJmNDY1
ZDMyYS4uNWIyYjhmMjg5NWExZTZjODJmNDA5ZjZlNWU4NmNjZGYwZmQ1MDRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaApAQCAtNzYsNiArNzYsOCBAQCBX
QVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9E
RUNMKGNhbGxfbm9fdGxzKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGxfaW5kaXJl
Y3QpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRpcmVjdF9ub190bHMpOwor
V0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9yZWYpOworV0FTTV9TTE9XX1BBVEhfSElE
REVOX0RFQ0woY2FsbF9yZWZfbm9fdGxzKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHNl
dF9nbG9iYWxfcmVmKTsKIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHNldF9nbG9iYWxfcmVm
X3BvcnRhYmxlX2JpbmRpbmcpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0wobWVtb3J5X2F0
b21pY193YWl0MzIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2Fz
bS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDJhNzI4
N2Q5NjA5MDAwMTlmZGExMWNkNjc0ZjJhMDFiMmRiZjE1ODguLjc5NDA5MmI3NmRkNzBmNDcyNDM3
Zjc2OWNhNDdiNDY0NWZmY2I4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24K
QEAgLTg1LDYgKzg1LDcgQEAKICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAgICB7ICJjYXRl
Z29yeSI6ICJleHR0YWJsZSIsICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtdLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgiLCAgInR5cGUi
OiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdtZW50IHRvIHpl
cm8iLCAiZXh0ZW5kZWRPcCI6IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxs
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4Iiwg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9
LAogICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAg
ICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9u
IjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIg
fSwKKyAgICAgICAgImNhbGxfcmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwg
ICAgICAgInZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1l
ZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJjYWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3Mi
OiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1
cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRk
ciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3Mi
LCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5
cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwK
ICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAg
ICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsiaTMyIl0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0
eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkM2MwNTg4NGFlYWRi
YzQzYjU4YTI0YjU5MDQwOGUyM2YxOTVjNTFjLi5jZmM5NGQ4MmVmZGNhYWU0YWFmNzIxODM3NWUw
MzI2ODAxODhiZmQwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA0LTAyICBEbWl0cnkgQmV6aGV0c2tv
diAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dBU00tRnVuY3Rpb24tUmVm
ZXJlbmNlc10gQWRkIGNhbGxfcmVmIGluc3RydWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlciBiYXNpYyBjYWxsX3JlZiB0ZXN0IGNhc2Vz
IC0gY3Jvc3MtaW5zdGFuY2UgY2FsbAorICAgICAgICBhbmQgc2FtZS1pbnN0YW5jZSBjYWxsLgor
CisgICAgICAgICogd2FzbS55YW1sOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tcmVmZXJlbmNl
cy9jYWxsX3JlZi5qczogQWRkZWQuCisgICAgICAgIChtb2R1bGUpOgorICAgICAgICAoYXN5bmMg
YmFzaWNzKToKKyAgICAgICAgKGFzeW5jIGluZGlyZWN0Q2FsbCk6CisgICAgICAgICogd2FzbS93
YXNtLmpzb246CisKIDIwMjEtMDQtMDEgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21h
aWwuY29tPgogCiAgICAgICAgIE9wdGltaXplIGNyZWF0ZUxpc3RGcm9tQXJyYXlMaWtlKCkgYW5k
IFByb3h5J3MgW1tPd25Qcm9wZXJ0eUtleXNdXSBtZXRob2QKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS55YW1sIGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggZGVhMmExYjc1NmM1MTQwZGEzZWZl
NjA5ZWIwMWUzZjgzYjM5NWI0YS4uMmVjYjYzNGRiZjViMmJlZTcyY2RkMTNjNDAxNzliZjJmNWU5
NGJjMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtLnlhbWwKKysrIGIvSlNUZXN0cy93YXNtLnlh
bWwKQEAgLTMzLDYgKzMzLDggQEAKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVubGVzcyBw
YXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20vcmVmZXJlbmNlcwogICBjbWQ6IHJ1bldlYkFz
c2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKKy0gcGF0aDogd2FzbS9mdW5jdGlv
bi1yZWZlcmVuY2VzCisgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VSdW5D
b21tYW5kcwogLSBwYXRoOiB3YXNtL2Z1enoKICAgY21kOiBydW5XZWJBc3NlbWJseVN1aXRlIHVu
bGVzcyBwYXJzZVJ1bkNvbW1hbmRzCiAtIHBhdGg6IHdhc20vbG93RXhlY3V0YWJsZU1lbW9yeQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanMg
Yi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZDEzYzVmNWJmMjE1MWEwNzdhNzlhNWE4YzM5NjFlMmJkOWZhM2MyCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanMKQEAgLTAs
MCArMSw1OCBAQAorLy9AIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBl
ZEZ1bmN0aW9uUmVmZXJlbmNlcz10cnVlIikKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9h
c3NlcnQuanMnOworaW1wb3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIu
anMiOworCitmdW5jdGlvbiBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVm
ZmVyID0gbmV3IEFycmF5QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVp
bnQ4QXJyYXkoYnVmZmVyKTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsr
aSkgeworICAgIHZpZXdbaV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJ1ZmZlcik7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGJhc2lj
cygpIHsKKyAgLyoKKyAgKG1vZHVsZQorICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1
bmMgJGZvbykpCisgICAgKGZ1bmMgJGZvbyAocGFyYW0gJHggaTMyKSAocmVzdWx0IGkzMikKKyAg
ICAgIChpMzIuYWRkIChsb2NhbC5nZXQgJHgpCisgICAgICAgICAgICAgICAoaTMyLmNvbnN0IDE5
KQorICAgICAgKQorICAgICkKKyAgICAoZnVuYyAoZXhwb3J0ICJtYWluIikgKHJlc3VsdCBpMzIp
CisgICAgICAoY2FsbF9yZWYgKGkzMi5jb25zdCAxMCkgKHJlZi5mdW5jICRmb28pKQorICAgICkK
KyAgKQorICAqLworICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDBhXHgwMlx4NjBceDAx
XHg3Zlx4MDFceDdmXHg2MFx4MDBceDAxXHg3Zlx4MDNceDAzXHgwMlx4MDBceDAxXHgwN1x4MDhc
eDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MDlceDA1XHgwMVx4MDNceDAwXHgwMVx4
MDBceDBhXHgxMVx4MDJceDA3XHgwMFx4MjBceDAwXHg0MVx4MTNceDZhXHgwYlx4MDdceDAwXHg0
MVx4MGFceGQyXHgwMFx4MTRceDBiIikpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5t
YWluKCksIDI5KTsKK30KKworYXN5bmMgZnVuY3Rpb24gaW5kaXJlY3RDYWxsKCkgeworICBsZXQg
d2F0ID0gYAorICAobW9kdWxlCisgICAgKGZ1bmMgKGV4cG9ydCAiYmFyIikgKHBhcmFtICR4IGkz
MikgKHJlc3VsdCBpMzIpCisgICAgICAoaTMyLmFkZCAobG9jYWwuZ2V0ICR4KQorICAgICAgICAg
ICAgICAgKGkzMi5jb25zdCAxOSkpCisgICAgKQorICApYDsKKyAgY29uc3QgYmFyUHJvdmlkZXIg
PSBhd2FpdCBpbnN0YW50aWF0ZSh3YXQsIHt9LCB7cmVmZXJlbmNlX3R5cGVzOiB0cnVlfSk7CisK
KyAgLyoKKyAgKG1vZHVsZQorICAgIChpbXBvcnQgImV4cG9ydHMiICJiYXIiIChmdW5jICRiYXIg
KHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKKyAgICAoZWxlbSBkZWNsYXJlIGZ1bmNyZWYgKHJl
Zi5mdW5jICRiYXIpKQorICAgIChmdW5jIChleHBvcnQgIm1haW4iKSAocmVzdWx0IGkzMikKKyAg
ICAgIChjYWxsX3JlZiAoaTMyLmNvbnN0IDEwKSAocmVmLmZ1bmMgJGJhcikpCisgICAgKQorICAp
CisgICovCisgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKKyAgICBt
b2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4MGFceDAyXHg2MFx4
MDFceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdmXHgwMlx4MGZceDAxXHgwN1x4NjVceDc4XHg3
MFx4NmZceDcyXHg3NFx4NzNceDAzXHg2Mlx4NjFceDcyXHgwMFx4MDBceDAzXHgwMlx4MDFceDAx
XHgwN1x4MDhceDAxXHgwNFx4NmRceDYxXHg2OVx4NmVceDAwXHgwMVx4MDlceDA1XHgwMVx4MDNc
eDAwXHgwMVx4MDBceDBhXHgwOVx4MDFceDA3XHgwMFx4NDFceDBhXHhkMlx4MDBceDE0XHgwYiIp
LAorICAgIGJhclByb3ZpZGVyKTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigp
LCAyOSk7Cit9CisKK2Fzc2VydC5hc3luY1Rlc3QoYmFzaWNzKCkpOworYXNzZXJ0LmFzeW5jVGVz
dChpbmRpcmVjdENhbGwoKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIv
SlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCAyYTcyODdkOTYwOTAwMDE5ZmRhMTFjZDY3NGYy
YTAxYjJkYmYxNTg4Li43OTQwOTJiNzZkZDcwZjQ3MjQzN2Y3NjljYTQ3YjQ2NDVmZmNiODAxIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNt
Lmpzb24KQEAgLTg1LDYgKzg1LDcgQEAKICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJleHR0YWJsZSIsICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgiLCAg
InR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdtZW50
IHRvIHplcm8iLCAiZXh0ZW5kZWRPcCI6IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjog
WyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwg
ICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2lu
ZGV4IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGlu
ZGV4IiB9LAogICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNh
bGwiLCAgICAgICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50
MzIifSwgeyJuYW1lIjogInRhYmxlX2luZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2Ny
aXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25h
dHVyZSIgfSwKKyAgICAgICAgImNhbGxfcmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJj
YWxsIiwgICAgICAgInZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxv
YWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQs
ICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
ZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIs
ICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9y
eSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1v
cnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMy
In0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0
aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsi
aTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAg
ICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAg
ICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2
YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427337</attachid>
            <date>2021-04-29 03:46:19 -0700</date>
            <delta_ts>2021-05-03 04:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222903-20210429174617.patch</filename>
            <type>text/plain</type>
            <size>57881</size>
            <attacher name="Dmitry">dbezhetskov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YjIyNzUzMDEyMGVhYmIzMzMwYmVkYmE5YjI0NTcwNGU3NGFlZDQwLi44MzcyNTVmMmExZDVlMjlj
Zjc5NTg4YTVmZGY0NjJmMjA0NmQ0Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAyMS0wNC0yOSAgRG1pdHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVyZW5jZXNdIEFkZCBjYWxs
X3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGNhbGxfcmVmIGluc3RydWN0aW9uIGZyb20gdGhlIHR5
cGVkIGZ1bmN0aW9uCisgICAgICAgIHJlZmVyZW5jZXMgcHJvcG9zYWw6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9XZWJBc3NlbWJseS9mdW5jdGlvbi1yZWZlcmVuY2VzL2Jsb2IvbWFzdGVyL3Byb3Bvc2Fs
cy9mdW5jdGlvbi1yZWZlcmVuY2VzL092ZXJ2aWV3Lm1kLgorICAgICAgICBjYWxsX3JlZiBjYWxs
cyB0aGUgZ2l2ZW4gZnVuY3Rpb24gcmVmZXJlbmNlcyBmcm9tIHRoZSBzdGFjayAKKyAgICAgICAg
YW5kIGl0IGRvZXMgYWxtb3N0IHRoZSBzYW1lIHN0dWZmIGFzIGNhbGxfaW5kaXJlY3QgYnV0Cisg
ICAgICAgIGl0IGRvZXNuJ3QgY2hlY2sgc2lnbmF0dXJlcyBiZWNhdXNlIHdhc20gdHlwZXMgc3lz
dGVtIGd1YXJhbnRpZXMKKyAgICAgICAgY29ycmVjdG5lc3MuCisKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9XZWJBc3NlbWJseS5hc206Cisg
ICAgICAgICogcnVudGltZS9HYXRlLmg6CisgICAgICAgICogd2FzbS9XYXNtQWlySVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGly
ZWN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpBaXJJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbCk6Cisg
ICAgICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OkIzSVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwpOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjphZGRDYWxsUmVmKToKKyAgICAgICAgKiB3YXNtL1dhc21GdW5jdGlvblBhcnNl
ci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VF
eHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MTEludEdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRDYWxs
UmVmKToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpM
TEludDo6ZG9XYXNtQ2FsbFJlZik6CisgICAgICAgIChKU0M6OkxMSW50OjpXQVNNX1NMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuaDoKKyAgICAgICAgKiB3YXNt
L2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHA6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6V2ViQXNz
ZW1ibHlGdW5jdGlvbik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmg6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHA6CisgICAgICAg
IChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZSk6
CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oOgorICAgICAgICAo
SlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZTo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0
aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OldlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0
aW9uLmg6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMDQtMjggIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBleGNlcHRpb24gYXNzZXJ0aW9u
cyBpbiBsaWdodCBvZiB0aGUgVGVybWluYXRpb25FeGNlcHRpb24uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBjYjBlN2M4YzliYmJhMTRj
NTdkMjJiNGJhMjdlYmZiOWQ3Mjk3NzZhLi4xNjQxMDFmZWNlMDQyNmEwMDJmZjVhNDdhMWMwMjRi
ODk0NjY0NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QucmIKQEAgLTE0NzQsNiArMTQ3NCw4IEBAIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9j
YWxsCiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9ub190bHMKIG9wIDp3YXNtX3RyYW1w
b2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0CiBvcCA6d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9p
bmRpcmVjdF9ub190bHMKK29wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZgorb3AgOndh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RscwogCiBlbmRfc2VjdGlvbiA6TmF0aXZl
SGVscGVycwogCkBAIC0xNDk1LDYgKzE0OTcsOCBAQCBvcCA6Y2FsbF9yZXR1cm5fbG9jYXRpb24K
IG9wIDpjYWxsX25vX3Rsc19yZXR1cm5fbG9jYXRpb24KIG9wIDpjYWxsX2luZGlyZWN0X3JldHVy
bl9sb2NhdGlvbgogb3AgOmNhbGxfaW5kaXJlY3Rfbm9fdGxzX3JldHVybl9sb2NhdGlvbgorb3Ag
OmNhbGxfcmVmX3JldHVybl9sb2NhdGlvbgorb3AgOmNhbGxfcmVmX25vX3Rsc19yZXR1cm5fbG9j
YXRpb24KIAogIyBGSVhNRTogV2FzbSBhbmQgSlMgTExJbnQgc2hvdWxkIHNoYXJlIGNvbW1vbiBv
cGNvZGVzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM2NTYK
QEAgLTE2ODYsNiArMTY5MCwyMiBAQCBvcCA6Y2FsbF9pbmRpcmVjdF9ub190bHMsCiAgICAgICAg
IHRhYmxlSW5kZXg6IHVuc2lnbmVkLAogICAgIH0KIAorb3AgOmNhbGxfcmVmLAorICAgIGFyZ3M6
IHsKKyAgICAgICAgZnVuY3Rpb25SZWZlcmVuY2U6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAg
c2lnbmF0dXJlSW5kZXg6IHVuc2lnbmVkLAorICAgICAgICBzdGFja09mZnNldDogdW5zaWduZWQs
CisgICAgICAgIG51bWJlck9mU3RhY2tBcmdzOiB1bnNpZ25lZCwKKyAgICB9CisKK29wIDpjYWxs
X3JlZl9ub190bHMsCisgICAgYXJnczogeworICAgICAgICBmdW5jdGlvblJlZmVyZW5jZTogVmly
dHVhbFJlZ2lzdGVyLAorICAgICAgICBzaWduYXR1cmVJbmRleDogdW5zaWduZWQsCisgICAgICAg
IHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwKKyAgICAgICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2ln
bmVkLAorICAgIH0KKwogb3AgOmN1cnJlbnRfbWVtb3J5LAogICAgIGFyZ3M6IHsKICAgICAgICAg
ZHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKaW5kZXggZjVlMjJhMTBhNGQxMjY1ZGI1Y2RjNzFiMjMxZDA2ZDUxNjE3
ZWQ2Yy4uYjQ4MTlmZDc2OWI1OGNkNTJhZGQxYTU0NmQ3MGEzYTVkNTk0MTM5NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMzY4LDYgKzM2
OCw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQs
IENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBJCiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVf
d2FzbV9jYWxsX25vX3RsczoKICAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfaW5k
aXJlY3Q6CiAgICAgY2FzZSB3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X25vX3Rs
czoKKyAgICBjYXNlIHdhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmOgorICAgIGNhc2Ugd2Fz
bV90cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzOgogICAgICAgICByZXR1cm4gQ2Fubm90
Q29tcGlsZTsKICAgICB9CiAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggZDA5
ZDBhOTMwYWMyNDQyNTI5MzkyMGJjZmQ3OWU3ZmQ1MTdhMzhlMy4uODcyYjg1NzJkZDkzY2Q4YmI5
NWU3ZWE0MjM3NDRjMGUyYzVmZjA4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjUzMCwxNCArMjUzMCwyMCBAQCBf
d2FzbV90cmFtcG9saW5lX3dhc21fY2FsbDoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25v
X3RsczoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0OgogX3dhc21fdHJhbXBv
bGluZV93YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2Nh
bGxfcmVmOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3RsczoKIF93YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX3dpZGUxNjoKIF93YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX25v
X3Rsc193aWRlMTY6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF93aWRlMTY6
CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9ub190bHNfd2lkZTE2OgorX3dh
c21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX3dpZGUxNjoKK193YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX3JlZl9ub190bHNfd2lkZTE2OgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfd2lk
ZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfbm9fdGxzX3dpZGUzMjoKIF93YXNtX3Ry
YW1wb2xpbmVfd2FzbV9jYWxsX2luZGlyZWN0X3dpZGUzMjoKIF93YXNtX3RyYW1wb2xpbmVfd2Fz
bV9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMzI6Citfd2FzbV90cmFtcG9saW5lX3dhc21fY2Fs
bF9yZWZfd2lkZTMyOgorX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX25vX3Rsc193aWRl
MzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2Vi
QXNzZW1ibHkuYXNtCmluZGV4IDVjMmFhMWUxNzk5M2UyZjUwNmFhYWYzODVmNmVhMWYxMDNjZmM1
MTMuLjQzNmNmNjY0OTBkNzFjNWVlOWJiMzBlODZmZTZmNDJiYWVlNzZkZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L1dlYkFzc2VtYmx5LmFzbQpAQCAtODc3LDYgKzg3NywxNCBA
QCB3YXNtT3AoY2FsbF9pbmRpcmVjdF9ub190bHMsIFdhc21DYWxsSW5kaXJlY3ROb1RscywgbWFj
cm8oY3R4KQogICAgIHNsb3dQYXRoRm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2Fs
bF9pbmRpcmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRhcmdldEluc3Rh
bmNlLCB3YXNtSW5zdGFuY2UgZW5kKQogZW5kKQogCit3YXNtT3AoY2FsbF9yZWYsIFdhc21DYWxs
UmVmLCBtYWNybyhjdHgpCisgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhf
d2FzbV9jYWxsX3JlZiwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKK2VuZCkKKword2FzbU9wKGNh
bGxfcmVmX25vX3RscywgV2FzbUNhbGxSZWZOb1RscywgbWFjcm8oY3R4KQorICAgIHNsb3dQYXRo
Rm9yV2FzbUNhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fY2FsbF9yZWZfbm9fdGxzLCBtYWNybyh0
YXJnZXRJbnN0YW5jZSkgbW92ZSB0YXJnZXRJbnN0YW5jZSwgd2FzbUluc3RhbmNlIGVuZCkKK2Vu
ZCkKKwogd2FzbU9wKGN1cnJlbnRfbWVtb3J5LCBXYXNtQ3VycmVudE1lbW9yeSwgbWFjcm8oY3R4
KQogICAgIGxvYWRwIFdhc206Okluc3RhbmNlOjptX21lbW9yeVt3YXNtSW5zdGFuY2VdLCB0MAog
ICAgIGxvYWRwIFdhc206Ok1lbW9yeTo6bV9oYW5kbGVbdDBdLCB0MApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2F0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2F0ZS5oCmluZGV4IDQ2OTcxNWY5NjNhMjg0ZjYxZjI2MTBhODdlNWE4MDdiNTU0
MmU4MDMuLmY2YTA1YjA2NWUzMmQ4YWVjZDU2N2JmNmFiNzRhYWU2Mzg5OTc3NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dhdGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HYXRlLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgdih3YXNtX2NhbGxfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKICAg
ICB2KHdhc21fY2FsbF9pbmRpcmVjdCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnKSBcCiAgICAgdih3
YXNtX2NhbGxfaW5kaXJlY3Rfbm9fdGxzLCBKU0VudHJ5U2xvd1BhdGhQdHJUYWcpIFwKKyAgICB2
KHdhc21fY2FsbF9yZWYsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAorICAgIHYod2FzbV9jYWxs
X3JlZl9ub190bHMsIEpTRW50cnlTbG93UGF0aFB0clRhZykgXAogCiAjZWxzZQogI2RlZmluZSBK
U0NfV0FTTV9HQVRFX09QQ09ERVModikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDllMThjYmFjYjRiOTBmYjdlOTkyNGM2NGI1
NDJjNGU0YTNlN2Q4Y2QuLjAwYTE3YzQwNjRhNjAzMGMzZTRhNGY5Njc3MjE0YTU3YTdiZjc5OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9y
LmNwcApAQCAtMzI1LDcgKzMyNSw5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgs
IGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExp
c3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENh
bGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYsIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZFVucmVhY2hhYmxlKCk7CisgICAgUGFy
dGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChUeXBlZFRtcCBj
YWxsZWVJbnN0YW5jZSwgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSwgY29uc3QgU2lnbmF0dXJl
JiwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYpOwogICAg
IEIzOjpQYXRjaHBvaW50VmFsdWUqIFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0Q2FsbFBhdGNocG9p
bnQoQmFzaWNCbG9jayosIGNvbnN0IFNpZ25hdHVyZSYsIGNvbnN0IFJlc3VsdExpc3QmIHJlc3Vs
dHMsIGNvbnN0IFZlY3RvcjxUeXBlZFRtcD4mIGFyZ3MsIFZlY3RvcjxDb25zdHJhaW5lZFRtcD4m
JiBleHRyYUFyZ3MgPSB7IH0pOwogCiAgICAgUGFydGlhbFJlc3VsdCBhZGRTaGlmdChUeXBlLCBC
Mzo6QWlyOjpPcGNvZGUsIEV4cHJlc3Npb25UeXBlIHZhbHVlLCBFeHByZXNzaW9uVHlwZSBzaGlm
dCwgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CkBAIC0zMjczLDkgKzMyNzUsNiBAQCBhdXRvIEFp
cklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3Qg
U2lnbmF0dXJlJiBzaWduYQogICAgIC8vIGNhbiBiZSB0byB0aGUgZW1iZWRkZXIgZm9yIG91ciBz
dGFjayBjaGVjayBjYWxjdWxhdGlvbi4KICAgICBtX21heE51bUpTQ2FsbEFyZ3VtZW50cyA9IHN0
ZDo6bWF4KG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXJn
cy5zaXplKCkpKTsKIAotICAgIGF1dG8gY3VycmVudEluc3RhbmNlID0gZzY0KCk7Ci0gICAgYXBw
ZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwgY3VycmVudEluc3RhbmNlKTsKLQogICAgIEV4cHJl
c3Npb25UeXBlIGNhbGxhYmxlRnVuY3Rpb25CdWZmZXIgPSBnNjQoKTsKICAgICBFeHByZXNzaW9u
VHlwZSBpbnN0YW5jZXNCdWZmZXIgPSBnNjQoKTsKICAgICBFeHByZXNzaW9uVHlwZSBjYWxsYWJs
ZUZ1bmN0aW9uQnVmZmVyTGVuZ3RoID0gZzY0KCk7CkBAIC0zMzQwLDE1ICszMzM5LDQyIEBAIGF1
dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBj
b25zdCBTaWduYXR1cmUmIHNpZ25hCiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIGF1dG8gY2Fs
bGVlSW5zdGFuY2UgPSBnNjQoKTsKKyAgICBhcHBlbmQoTW92ZSwgQXJnOjppbmRleChpbnN0YW5j
ZXNCdWZmZXIsIGNhbGxlZUluZGV4LCA4LCAwKSwgY2FsbGVlSW5zdGFuY2UpOworCisgICAgcmV0
dXJuIGVtaXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxlZUNvZGUsIHNpZ25hdHVy
ZSwgYXJncywgcmVzdWx0cyk7Cit9CisKK2F1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxSZWYo
Y29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBtX21ha2VzQ2Fs
bHMgPSB0cnVlOworICAgIC8vIE5vdGU6IGNhbGwgcmVmIGNhbiBjYWxsIGVpdGhlciBXZWJBc3Nl
bWJseUZ1bmN0aW9uIG9yIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLiBCZWNhdXNlCisgICAg
Ly8gV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24gaXMgbGlrZSBjYWxsaW5nIGludG8gdGhlIGVt
YmVkZGVyLCB3ZSBjb25zZXJ2YXRpdmVseSBhc3N1bWUgYWxsIGNhbGwgaW5kaXJlY3RzCisgICAg
Ly8gY2FuIGJlIHRvIHRoZSBlbWJlZGRlciBmb3Igb3VyIHN0YWNrIGNoZWNrIGNhbGN1bGF0aW9u
LgorICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUZ1bmN0aW9uID0gYXJncy50YWtlTGFzdCgpOwor
ICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1KU0NhbGxBcmd1
bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOworCisgICAgRXhwcmVz
c2lvblR5cGUgY2FsbGVlQ29kZSA9IGc2NCgpOworICAgIGFwcGVuZChNb3ZlLCBBcmc6OmFkZHIo
Y2FsbGVlRnVuY3Rpb24sIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpvZmZzZXRPZkVudHJ5cG9p
bnRMb2FkTG9jYXRpb24oKSksIGNhbGxlZUNvZGUpOyAvLyBQb2ludGVyIHRvIGNhbGxlZSBjb2Rl
LgorCisgICAgYXV0byBjYWxsZWVJbnN0YW5jZSA9IGc2NCgpOworICAgIGFwcGVuZChNb3ZlLCBB
cmc6OmFkZHIoY2FsbGVlRnVuY3Rpb24sIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpvZmZzZXRP
Zkluc3RhbmNlKCkpLCBjYWxsZWVJbnN0YW5jZSk7CisgICAgYXBwZW5kKE1vdmUsIEFyZzo6YWRk
cihjYWxsZWVJbnN0YW5jZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZkluc3RhbmNl
KCkpLCBjYWxsZWVJbnN0YW5jZSk7CisKKyAgICByZXR1cm4gZW1pdEluZGlyZWN0Q2FsbChjYWxs
ZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsKK30KKwor
YXV0byBBaXJJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChUeXBlZFRtcCBjYWxsZWVJbnN0
YW5jZSwgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSwgY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1
cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3Vs
dHMpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBhdXRvIGN1cnJlbnRJbnN0YW5jZSA9IGc2NCgp
OworICAgIGFwcGVuZChNb3ZlLCBpbnN0YW5jZVZhbHVlKCksIGN1cnJlbnRJbnN0YW5jZSk7CisK
ICAgICAvLyBEbyBhIGNvbnRleHQgc3dpdGNoIGlmIG5lZWRlZC4KICAgICB7Ci0gICAgICAgIGF1
dG8gbmV3Q29udGV4dEluc3RhbmNlID0gZzY0KCk7Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6
OmluZGV4KGluc3RhbmNlc0J1ZmZlciwgY2FsbGVlSW5kZXgsIDgsIDApLCBuZXdDb250ZXh0SW5z
dGFuY2UpOwotCiAgICAgICAgIEJhc2ljQmxvY2sqIGRvQ29udGV4dFN3aXRjaCA9IG1fY29kZS5h
ZGRCbG9jaygpOwogICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX2NvZGUuYWRk
QmxvY2soKTsKIAotICAgICAgICBhcHBlbmQoQnJhbmNoNjQsIEFyZzo6cmVsQ29uZChNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwpLCBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7Cisg
ICAgICAgIGFwcGVuZChCcmFuY2g2NCwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCksIGNhbGxlZUluc3RhbmNlLCBjdXJyZW50SW5zdGFuY2UpOwogICAgICAgICBtX2N1cnJlbnRC
bG9jay0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24sIGRvQ29udGV4dFN3aXRjaCk7CiAKICAg
ICAgICAgYXV0byogcGF0Y2hwb2ludCA9IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOwpAQCAtMzM2
MSwyNiArMzM4NywyNiBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5z
aWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiBzaWduYQogCiAgICAgICAgIHBhdGNo
cG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIEdQUlJl
ZyBuZXdDb250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAgICAgICAgICBHUFJS
ZWcgY2FsbGVlSW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcg
b2xkQ29udGV4dEluc3RhbmNlID0gcGFyYW1zWzFdLmdwcigpOwogICAgICAgICAgICAgY29uc3Qg
UGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5uZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5
UG9pbnRlcjsKLSAgICAgICAgICAgIEFTU0VSVChuZXdDb250ZXh0SW5zdGFuY2UgIT0gYmFzZU1l
bW9yeSk7CisgICAgICAgICAgICBBU1NFUlQoY2FsbGVlSW5zdGFuY2UgIT0gYmFzZU1lbW9yeSk7
CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob2xkQ29udGV4
dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpLCBiYXNlTWVt
b3J5KTsKLSAgICAgICAgICAgIGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFj
a0xpbWl0KCkpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5zdGFuY2UobmV3
Q29udGV4dEluc3RhbmNlKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZFN0YWNrTGltaXQoKSkpOworICAgICAgICAgICAgaml0LnN0b3JlV2FzbUNvbnRleHRJbnN0
YW5jZShjYWxsZWVJbnN0YW5jZSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1
cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAgICAgLy8g
ICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKLSAg
ICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyICE9
IG5ld0NvbnRleHRJbnN0YW5jZSk7CisgICAgICAgICAgICBBU1NFUlQocGlubmVkUmVncy5ib3Vu
ZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBjYWxsZWVJbnN0YW5jZSk7CiAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAKLSAgICAgICAgICAgIGppdC5s
b2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5ib3VuZHND
aGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIEJvdW5kIGNoZWNraW5nIHNpemUuCi0gICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJ
bnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBNZW1vcnk6
OnZvaWQqLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNh
bGxlZUluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVja2luZ1NpemUo
KSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBCb3VuZCBjaGVj
a2luZyBzaXplLgorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGNhbGxlZUluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VN
ZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgogCiAgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlv
bmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdz
LmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVyLCBzY3JhdGNoKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgZW1pdFBhdGNocG9pbnQoZG9Db250ZXh0U3dpdGNoLCBwYXRjaHBvaW50LCBUbXAoKSwg
bmV3Q29udGV4dEluc3RhbmNlLCBpbnN0YW5jZVZhbHVlKCkpOworICAgICAgICBlbWl0UGF0Y2hw
b2ludChkb0NvbnRleHRTd2l0Y2gsIHBhdGNocG9pbnQsIFRtcCgpLCBjYWxsZWVJbnN0YW5jZSwg
Y3VycmVudEluc3RhbmNlKTsKICAgICAgICAgYXBwZW5kKGRvQ29udGV4dFN3aXRjaCwgSnVtcCk7
CiAgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
aW5kZXggN2FmMDhmY2M2OGZiMjFjODI2MDEzZTUyOGY1ZmM5N2RiNzZkMzM3MC4uNTFiZjViMDZj
NjA1OWFkZWI4MWQ1ODFmOWJjYjhhYjUzYzQxZTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtMjg1LDcgKzI4NSw5IEBAIHB1
YmxpYzoKICAgICAvLyBDYWxscwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1
bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3Ms
IFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVU
VVJOIGFkZFVucmVhY2hhYmxlKCk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBl
IGNhbGxlZUNvZGUsIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFy
Z3MsIFJlc3VsdExpc3QmKTsKICAgICBCMzo6VmFsdWUqIGNyZWF0ZUNhbGxQYXRjaHBvaW50KEJh
c2ljQmxvY2sqLCBPcmlnaW4sIGNvbnN0IFNpZ25hdHVyZSYsIFZlY3RvcjxFeHByZXNzaW9uVHlw
ZT4mIGFyZ3MsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPiYgcGF0
Y2hwb2ludEZ1bmN0b3IpOwogCiAgICAgdm9pZCBkdW1wKGNvbnN0IENvbnRyb2xTdGFjayYsIGNv
bnN0IFN0YWNrKiBleHByZXNzaW9uU3RhY2spOwpAQCAtODY2LDYgKzg2OCw5NSBAQCBhdXRvIEIz
SVJHZW5lcmF0b3I6OmFkZFVucmVhY2hhYmxlKCkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVy
biB7IH07CiB9CiAKK2F1dG8gQjNJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSog
Y2FsbGVlSW5zdGFuY2UsIEV4cHJlc3Npb25UeXBlIGNhbGxlZUNvZGUsIGNvbnN0IFNpZ25hdHVy
ZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiBy
ZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBp
ZiBuZWVkZWQuCisgICAgeworICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb24gPSBtX3By
b2MuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogZG9Db250ZXh0U3dpdGNoID0gbV9w
cm9jLmFkZEJsb2NrKCk7CisKKyAgICAgICAgVmFsdWUqIGlzU2FtZUNvbnRleHRJbnN0YW5jZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgRXF1YWwsIG9yaWdpbigp
LAorICAgICAgICAgICAgY2FsbGVlSW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7CisgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNo
LCBvcmlnaW4oKSwKKyAgICAgICAgICAgIGlzU2FtZUNvbnRleHRJbnN0YW5jZSwgRnJlcXVlbnRl
ZEJsb2NrKGNvbnRpbnVhdGlvbiksIEZyZXF1ZW50ZWRCbG9jayhkb0NvbnRleHRTd2l0Y2gpKTsK
KworICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBkb0NvbnRleHRTd2l0Y2gt
PmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAg
ICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5nIHdp
dGggQm91bmRzQ2hlY2tpbmcgbWVtb3J5LgorICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0
IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MjE4MQorICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6
Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUluc3RhbmNlLCBWYWx1ZVJlcDo6U29tZVJl
Z2lzdGVyKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGluc3RhbmNlVmFsdWUoKSwgVmFs
dWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IDE7CisKKyAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOworICAgICAgICAgICAgR1BSUmVnIGNhbGxlZUluc3RhbmNlID0gcGFyYW1zWzBd
LmdwcigpOworICAgICAgICAgICAgR1BSUmVnIG9sZENvbnRleHRJbnN0YW5jZSA9IHBhcmFtc1sx
XS5ncHIoKTsKKyAgICAgICAgICAgIGNvbnN0IFBpbm5lZFJlZ2lzdGVySW5mbyYgcGlubmVkUmVn
cyA9IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZU1l
bW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CisgICAgICAgICAgICBBU1NFUlQo
Y2FsbGVlSW5zdGFuY2UgIT0gYmFzZU1lbW9yeSk7CisgICAgICAgICAgICBqaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Mob2xkQ29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRTdGFja0xpbWl0KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgICAgIGppdC5zdG9y
ZVB0cihiYXNlTWVtb3J5LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5zdGFuY2UsIElu
c3RhbmNlOjpvZmZzZXRPZkNhY2hlZFN0YWNrTGltaXQoKSkpOworICAgICAgICAgICAgaml0LnN0
b3JlV2FzbUNvbnRleHRJbnN0YW5jZShjYWxsZWVJbnN0YW5jZSk7CisgICAgICAgICAgICBBU1NF
UlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBiYXNlTWVtb3J5KTsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1l
bW9yeSBzaXplIHJlZ2lzdGVyCisgICAgICAgICAgICAvLyAgIHNlZTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgorICAgICAgICAgICAgQVNTRVJUKHBpbm5l
ZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIgIT0gY2FsbGVlSW5zdGFuY2UpOworICAg
ICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworCisgICAgICAg
ICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY2FsbGVlSW5zdGFuY2UsIElu
c3RhbmNlOjpvZmZzZXRPZkNhY2hlZEJvdW5kc0NoZWNraW5nU2l6ZSgpKSwgcGlubmVkUmVncy5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3Rlcik7IC8vIE1lbW9yeSBzaXplLgorICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGNhbGxlZUluc3RhbmNlLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQq
LgorCisgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHlBbmRVbnRhZyhHaWdhY2FnZTo6
UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lz
dGVyLCBzY3JhdGNoKTsKKyAgICAgICAgfSk7CisgICAgICAgIGRvQ29udGV4dFN3aXRjaC0+YXBw
ZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBjb250aW51YXRpb247CisgICAgfQorCisgICAg
QjM6OlR5cGUgcmV0dXJuVHlwZSA9IHRvQjNSZXN1bHRUeXBlKCZzaWduYXR1cmUpOworICAgIEV4
cHJlc3Npb25UeXBlIGNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRC
bG9jaywgb3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgc2NvcGVkTGFtYmRhUmVm
PHZvaWQoUGF0Y2hwb2ludFZhbHVlKik+KFs9XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50
KSAtPiB2b2lkIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzUGlubmVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0
cnVlOworICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlu
bmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAg
ICAgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgYWx3YXlzIGNhbGxp
bmcgc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nIHNvCisgICAgICAgICAgICAvLyBi
ZWNhdXNlIHRoZSB3YXNtLT53YXNtIHRodW5rIHVuY29uZGl0aW9uYWxseSBvdmVycmlkZXMgdGhl
IHNpemUgcmVnaXN0ZXJzLgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgaGF2
ZSB0byBkbyB0aGlzLCBidXQgdGhlIHdhc20tPndhc20gc3R1YiBhc3N1bWVzIGl0IGNhbgorICAg
ICAgICAgICAgLy8gdXNlIGFsbCB0aGUgcGlubmVkIHJlZ2lzdGVycyBhcyBzY3JhdGNoOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCisgICAgICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyTGF0ZShQaW5uZWRSZWdpc3RlckluZm86OmdldCgpLnRvU2F2ZShN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZykpOworCisgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQoY2FsbGVlQ29kZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisgICAgICAgICAgICBw
YXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworICAgICAgICAg
ICAgICAgIGppdC5jYWxsKHBhcmFtc1twYXJhbXMucHJvYygpLnJlc3VsdENvdW50KHJldHVyblR5
cGUpXS5ncHIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KSk7CisKKyAgICBzd2l0Y2ggKHJldHVyblR5cGUua2luZCgpKSB7CisgICAgY2FzZSBCMzo6Vm9p
ZDogeworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBCMzo6VHVwbGU6IHsKKyAgICAg
ICAgY29uc3QgVmVjdG9yPEIzOjpUeXBlPiYgdHVwbGUgPSBtX3Byb2MudHVwbGVGb3JUeXBlKHJl
dHVyblR5cGUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJl
dHVybkNvdW50KCk7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8RXh0cmFjdFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCB0dXBsZVtpXSwg
Y2FsbFJlc3VsdCwgaSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogewor
ICAgICAgICByZXN1bHRzLmFwcGVuZChjYWxsUmVzdWx0KTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIH0KKworICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdl
YkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1v
cnkuCisgICAgcmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNr
TGltaXQ6OlllcywgbV9pbmZvLm1lbW9yeSwgaW5zdGFuY2VWYWx1ZSgpLCBtX3Byb2MsIG1fY3Vy
cmVudEJsb2NrKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gQjNJUkdlbmVyYXRvcjo6
YWRkR3Jvd01lbW9yeShFeHByZXNzaW9uVHlwZSBkZWx0YSwgRXhwcmVzc2lvblR5cGUmIHJlc3Vs
dCkgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHJlc3VsdCA9IG1fY3VycmVudEJsb2NrLT5hcHBl
bmROZXc8Q0NhbGxWYWx1ZT4obV9wcm9jLCBJbnQzMiwgb3JpZ2luKCksCkBAIC0yNTIxLDEwMCAr
MjYxMiw0MSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0
YWJsZUluZGV4LCBjb25zdCBTaWduYXR1cmUmIHNpZ25hdAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgLy8gRG8gYSBjb250ZXh0IHN3aXRjaCBpZiBuZWVkZWQuCi0gICAgewotICAgICAgICBWYWx1
ZSogb2Zmc2V0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWws
IG9yaWdpbigpLAotICAgICAgICAgICAgY2FsbGVlSW5kZXgsIGNvbnN0YW50KHBvaW50ZXJUeXBl
KCksIHNpemVvZihJbnN0YW5jZSopKSk7Ci0gICAgICAgIFZhbHVlKiBuZXdDb250ZXh0SW5zdGFu
Y2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQs
IHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAotICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFw
cGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQsIG9yaWdpbigpLCBpbnN0YW5jZXNCdWZmZXIsIG9m
ZnNldCkpOwotCi0gICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRC
bG9jaygpOwotICAgICAgICBCYXNpY0Jsb2NrKiBkb0NvbnRleHRTd2l0Y2ggPSBtX3Byb2MuYWRk
QmxvY2soKTsKLQotICAgICAgICBWYWx1ZSogaXNTYW1lQ29udGV4dEluc3RhbmNlID0gbV9jdXJy
ZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBFcXVhbCwgb3JpZ2luKCksCi0gICAg
ICAgICAgICBuZXdDb250ZXh0SW5zdGFuY2UsIGluc3RhbmNlVmFsdWUoKSk7Ci0gICAgICAgIG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBCMzo6QnJhbmNoLCBv
cmlnaW4oKSwKLSAgICAgICAgICAgIGlzU2FtZUNvbnRleHRJbnN0YW5jZSwgRnJlcXVlbnRlZEJs
b2NrKGNvbnRpbnVhdGlvbiksIEZyZXF1ZW50ZWRCbG9jayhkb0NvbnRleHRTd2l0Y2gpKTsKLQot
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBkb0NvbnRleHRTd2l0Y2gtPmFw
cGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KG1fcHJvYywgQjM6OlZvaWQsIG9yaWdpbigpKTsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwotICAgICAgICAv
LyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGNhbGxpbmcgc29tZXRoaW5nIHdpdGgg
Qm91bmRzQ2hlY2tpbmcgbWVtb3J5LgotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhh
dmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MjE4MQotICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0
KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7Ci0gICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKLSAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG5ld0NvbnRleHRJbnN0YW5jZSwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3Rlcik7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChpbnN0YW5jZVZhbHVlKCksIFZh
bHVlUmVwOjpTb21lUmVnaXN0ZXIpOwotICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hS
ZWdpc3RlcnMgPSAxOwotCi0gICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKLSAgICAgICAgICAgIEdQUlJlZyBuZXdDb250ZXh0SW5zdGFuY2UgPSBwYXJh
bXNbMF0uZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgb2xkQ29udGV4dEluc3RhbmNlID0gcGFy
YW1zWzFdLmdwcigpOwotICAgICAgICAgICAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBwaW5u
ZWRSZWdzID0gUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKTsKLSAgICAgICAgICAgIEdQUlJlZyBi
YXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgICAgIEFT
U0VSVChuZXdDb250ZXh0SW5zdGFuY2UgIT0gYmFzZU1lbW9yeSk7Ci0gICAgICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob2xkQ29udGV4dEluc3RhbmNlLCBJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpLCBiYXNlTWVtb3J5KTsKLSAgICAgICAgICAg
IGppdC5zdG9yZVB0cihiYXNlTWVtb3J5LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4
dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRTdGFja0xpbWl0KCkpKTsKLSAgICAg
ICAgICAgIGppdC5zdG9yZVdhc21Db250ZXh0SW5zdGFuY2UobmV3Q29udGV4dEluc3RhbmNlKTsK
LSAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLmJvdW5kc0NoZWNraW5nU2l6ZVJlZ2lzdGVy
ICE9IGJhc2VNZW1vcnkpOwotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdXBwb3J0
IG1vcmUgdGhhbiBvbmUgbWVtb3J5IHNpemUgcmVnaXN0ZXIKLSAgICAgICAgICAgIC8vICAgc2Vl
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUyCi0gICAgICAg
ICAgICBBU1NFUlQocGlubmVkUmVncy5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciAhPSBuZXdD
b250ZXh0SW5zdGFuY2UpOwotICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBwYXJhbXMuZ3BT
Y3JhdGNoKDApOwotCi0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRCb3VuZHNDaGVj
a2luZ1NpemUoKSksIHBpbm5lZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIpOyAvLyBN
ZW1vcnkgc2l6ZS4KLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVz
cyhuZXdDb250ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwg
YmFzZU1lbW9yeSk7IC8vIE1lbW9yeTo6dm9pZCouCi0KLSAgICAgICAgICAgIGppdC5jYWdlQ29u
ZGl0aW9uYWxseUFuZFVudGFnKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHBpbm5l
ZFJlZ3MuYm91bmRzQ2hlY2tpbmdTaXplUmVnaXN0ZXIsIHNjcmF0Y2gpOwotICAgICAgICB9KTsK
LSAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdDb250cm9sVmFsdWUobV9wcm9jLCBK
dW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKLQotICAgICAgICBtX2N1cnJlbnRCbG9jayA9
IGNvbnRpbnVhdGlvbjsKLSAgICB9Ci0KKyAgICBWYWx1ZSogb2Zmc2V0ID0gbV9jdXJyZW50Qmxv
Y2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBNdWwsIG9yaWdpbigpLAorICAgICAgICBjYWxs
ZWVJbmRleCwgY29uc3RhbnQocG9pbnRlclR5cGUoKSwgc2l6ZW9mKEluc3RhbmNlKikpKTsKKyAg
ICBWYWx1ZSogY2FsbGVlSW5zdGFuY2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3JpZ2luKCksIGlu
c3RhbmNlc0J1ZmZlciwgb2Zmc2V0KSk7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgb3JpZ2luKCksCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8
TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNhbGxh
YmxlRnVuY3Rpb24sCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQzMl90PihXYXNtVG9XYXNtSW1w
b3J0YWJsZUZ1bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSkpKTsKIAot
ICAgIEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlwZSgmc2lnbmF0dXJlKTsKLSAg
ICBFeHByZXNzaW9uVHlwZSBjYWxsUmVzdWx0ID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQobV9jdXJy
ZW50QmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCi0gICAgICAgIHNjb3BlZExhbWJk
YVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSopPihbPV0gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hw
b2ludCkgLT4gdm9pZCB7Ci0gICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bp
bm5lZCA9IHRydWU7Ci0gICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFs
IHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2Uu
Ci0gICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlJ3JlIGFsd2F5cyBj
YWxsaW5nIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZyBzbwotICAgICAgICAgICAg
Ly8gYmVjYXVzZSB0aGUgd2FzbS0+d2FzbSB0aHVuayB1bmNvbmRpdGlvbmFsbHkgb3ZlcnJpZGVz
IHRoZSBzaXplIHJlZ2lzdGVycy4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90
IGhhdmUgdG8gZG8gdGhpcywgYnV0IHRoZSB3YXNtLT53YXNtIHN0dWIgYXNzdW1lcyBpdCBjYW4K
LSAgICAgICAgICAgIC8vIHVzZSBhbGwgdGhlIHBpbm5lZCByZWdpc3RlcnMgYXMgc2NyYXRjaDog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQotICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1Nh
dmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICByZXR1cm4gZW1pdEluZGlyZWN0
Q2FsbChjYWxsZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRz
KTsKK30KIAotICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUNvZGUsIFZhbHVl
UmVwOjpTb21lUmVnaXN0ZXIpOwotICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgewotICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgICAgICBqaXQuY2FsbChwYXJhbXNb
cGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5UeXBlKV0uZ3ByKCksIFdhc21FbnRyeVB0
clRhZyk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSkpOworYXV0byBCM0lSR2VuZXJhdG9y
OjphZGRDYWxsUmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7Cisg
ICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlID0gYXJncy50YWtlTGFzdCgpOworICAgIEFTU0VSVChz
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKKyAgICBtX21ha2VzQ2Fs
bHMgPSB0cnVlOwogCi0gICAgc3dpdGNoIChyZXR1cm5UeXBlLmtpbmQoKSkgewotICAgIGNhc2Ug
QjM6OlZvaWQ6IHsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQjM6OlR1cGxlOiB7
Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxCMzo6VHlwZT4mIHR1cGxlID0gbV9wcm9jLnR1cGxlRm9y
VHlwZShyZXR1cm5UeXBlKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25h
dHVyZS5yZXR1cm5Db3VudCgpOyArK2kpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX2N1
cnJlbnRCbG9jay0+YXBwZW5kTmV3PEV4dHJhY3RWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgdHVw
bGVbaV0sIGNhbGxSZXN1bHQsIGkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1
bHQ6IHsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQoY2FsbFJlc3VsdCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICB9CisgICAgLy8gTm90ZTogY2FsbCByZWYgY2FuIGNhbGwgZWl0aGVyIFdl
YkFzc2VtYmx5RnVuY3Rpb24gb3IgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1c2UK
KyAgICAvLyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50byB0
aGUgZW1iZWRkZXIsIHdlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVjdHMK
KyAgICAvLyBjYW4gYmUgdG8gdGhlIGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2FsY3Vs
YXRpb24uCisgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21heE51bUpT
Q2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7CiAKLSAg
ICAvLyBUaGUgY2FsbCBjb3VsZCBoYXZlIGJlZW4gdG8gYW5vdGhlciBXZWJBc3NlbWJseSBpbnN0
YW5jZSwgYW5kIC8gb3IgY291bGQgaGF2ZSBtb2RpZmllZCBvdXIgTWVtb3J5LgotICAgIHJlc3Rv
cmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMsIG1f
aW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7Cisg
ICAgVmFsdWUqIGpzSW5zdGFuY2VPZmZzZXQgPSBjb25zdGFudChwb2ludGVyVHlwZSgpLCBzYWZl
Q2FzdDxpbnQzMl90PihXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZTo6b2Zmc2V0T2ZJbnN0YW5jZSgp
KSk7CisgICAgVmFsdWUqIGpzQ2FsbGVlSW5zdGFuY2UgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAor
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIEFkZCwgb3Jp
Z2luKCksIGNhbGxlZSwganNJbnN0YW5jZU9mZnNldCkpOwogCi0gICAgcmV0dXJuIHsgfTsKKyAg
ICBWYWx1ZSogaW5zdGFuY2VPZmZzZXQgPSBjb25zdGFudChwb2ludGVyVHlwZSgpLCBzYWZlQ2Fz
dDxpbnQzMl90PihKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mSW5zdGFuY2UoKSkpOwor
ICAgIFZhbHVlKiBjYWxsZWVJbnN0YW5jZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksCisgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywgQWRkLCBvcmlnaW4oKSwg
anNDYWxsZWVJbnN0YW5jZSwgaW5zdGFuY2VPZmZzZXQpKTsKKworICAgIEV4cHJlc3Npb25UeXBl
IGNhbGxlZUNvZGUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9y
aWdpbigpLCBjYWxsZWUsCisgICAgICAgICAgICBzYWZlQ2FzdDxpbnQzMl90PihXZWJBc3NlbWJs
eUZ1bmN0aW9uQmFzZTo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCkpKSk7CisKKyAg
ICByZXR1cm4gZW1pdEluZGlyZWN0Q2FsbChjYWxsZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2ln
bmF0dXJlLCBhcmdzLCByZXN1bHRzKTsKIH0KIAogdm9pZCBCM0lSR2VuZXJhdG9yOjp1bmlmeShj
b25zdCBFeHByZXNzaW9uVHlwZSBwaGksIGNvbnN0IEV4cHJlc3Npb25UeXBlIHNvdXJjZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXgg
ZGYwZTFjYWYzMDU2MjQ2Nzc2ZTAzMzk3ZDJhYWIxYzlkMjhlMTUzMy4uYjA1Nzc5MWZiOGYxMzY1
ZWM2ZTZmZDNhOWM1ZDY2OTUyNTgwNzc0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTEyNDgsNiArMTI0OCwzNyBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKIAogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KKworICAgIGNhc2UgQ2FsbFJlZjogeworICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVR5cGVkRnVuY3Rpb25SZWZlcmVuY2VzKCksICJm
dW5jdGlvbiByZWZlcmVuY2VzIGFyZSBub3QgZW5hYmxlZCIpOworICAgICAgICBXQVNNX1ZBTElE
QVRPUl9GQUlMX0lGKCFtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmlzVHlwZUlkeCgp
LCAibm9uLWZ1bmNyZWYgY2FsbF9yZWYgdmFsdWUgIiwgbV9leHByZXNzaW9uU3RhY2subGFzdCgp
LnR5cGUoKS5raW5kKTsKKworICAgICAgICBjb25zdCBTaWduYXR1cmVJbmRleCBjYWxsZWVTaWdu
YXR1cmVJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkuaW5kZXg7CisgICAg
ICAgIGNvbnN0IFNpZ25hdHVyZSYgY2FsbGVlU2lnbmF0dXJlID0gU2lnbmF0dXJlSW5mb3JtYXRp
b246OmdldChjYWxsZWVTaWduYXR1cmVJbmRleCk7CisgICAgICAgIHNpemVfdCBhcmd1bWVudENv
dW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2Fs
bGVlJ3MgdmFsdWUuCisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbGxfcmVmIGV4cGVjdHMgIiwgYXJndW1lbnRD
b3VudCwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50bHkgaG9s
ZHMgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOworCisgICAgICAgIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4gYXJnczsKKyAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRigh
YXJncy50cnlSZXNlcnZlQ2FwYWNpdHkoYXJndW1lbnRDb3VudCArIDEpLCAiY2FuJ3QgYWxsb2Nh
dGUgZW5vdWdoIG1lbW9yeSBmb3IgIiwgYXJndW1lbnRDb3VudCwgIiBjYWxsX2luZGlyZWN0IGFy
Z3VtZW50cyIpOworICAgICAgICBzaXplX3QgZmlyc3RBcmd1bWVudEluZGV4ID0gbV9leHByZXNz
aW9uU3RhY2suc2l6ZSgpIC0gYXJndW1lbnRDb3VudDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBUeXBlZEV4cHJlc3Npb24gYXJnID0gbV9leHByZXNzaW9uU3RhY2suYXQo
aSk7CisgICAgICAgICAgICBpZiAoaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIDEpCisg
ICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihhcmcudHlwZSgpICE9IGNhbGxl
ZVNpZ25hdHVyZS5hcmd1bWVudChpIC0gZmlyc3RBcmd1bWVudEluZGV4KSwgImFyZ3VtZW50IHR5
cGUgbWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZ290ICIsIGFyZy50eXBlKCkua2luZCwgIiwg
ZXhwZWN0ZWQgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50KGkgLSBmaXJzdEFyZ3VtZW50SW5k
ZXgpLmtpbmQpOworICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQoYXJnKTsKKyAgICAg
ICAgICAgIG1fY29udGV4dC5kaWRQb3BWYWx1ZUZyb21TdGFjaygpOworICAgICAgICB9CisgICAg
ICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3VtZW50SW5kZXgpOworCisgICAg
ICAgIFJlc3VsdExpc3QgcmVzdWx0czsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQo
YWRkQ2FsbFJlZihjYWxsZWVTaWduYXR1cmUsIGFyZ3MsIHJlc3VsdHMpKTsKKworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCk7ICsr
aSkKKyAgICAgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmNvbnN0cnVjdEFuZEFwcGVuZChjYWxs
ZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSwgcmVzdWx0c1tpXSk7CisKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisKICAgICBjYXNlIEJsb2NrOiB7CiAgICAgICAgIEJsb2NrU2lnbmF0dXJl
IGlubGluZVNpZ25hdHVyZTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VCbG9j
a1NpZ25hdHVyZShtX2luZm8sIGlubGluZVNpZ25hdHVyZSksICJjYW4ndCBnZXQgYmxvY2sncyBz
aWduYXR1cmUiKTsKQEAgLTE3MzksNiArMTc3MCw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAg
IC8vIG5vIGltbWVkaWF0ZSBjYXNlcwogICAgIEZPUl9FQUNIX1dBU01fQklOQVJZX09QKENSRUFU
RV9DQVNFKQogICAgIEZPUl9FQUNIX1dBU01fVU5BUllfT1AoQ1JFQVRFX0NBU0UpCisgICAgY2Fz
ZSBDYWxsUmVmOgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBOb3A6CiAgICAgY2Fz
ZSBSZXR1cm46CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2Vu
ZXJhdG9yLmNwcAppbmRleCAyYTE4MTExNjhhMDZkYjA5NzdkMTc0MGZmNDBmYjg0MTFlMDYwNmRj
Li5kNWY1MDdjZGE2MzM1YTYxNmEwOGM4ZWZlMjFlZDczMzQxZDQyZWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTI1Myw2
ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbHMKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1
cmUmLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5z
aWduZWQgdGFibGVJbmRleCwgY29uc3QgU2lnbmF0dXJlJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cyk7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VO
VVNFRF9SRVRVUk4gYWRkQ2FsbFJlZihjb25zdCBTaWduYXR1cmUmLCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdB
Uk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hQ
YXJzaW5nTG9jYWxzKCk7CkBAIC0xMTA0LDYgKzExMDUsMjEgQEAgYXV0byBMTEludEdlbmVyYXRv
cjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSYg
c2lnbmEKICAgICByZXR1cm4geyB9OwogfQogCithdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxs
UmVmKGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgRXhwcmVz
c2lvblR5cGUgY2FsbGVlID0gYXJncy50YWtlTGFzdCgpOworCisgICAgTExJbnRDYWxsSW5mb3Jt
YXRpb24gaW5mbyA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihzaWduYXR1cmUpOworICAgIHVu
aWZ5VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKKyAgICBpZiAoQ29udGV4
dDo6dXNlRmFzdFRMUygpKQorICAgICAgICBXYXNtQ2FsbFJlZjo6ZW1pdCh0aGlzLCBjYWxsZWUs
IG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwg
aW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKKyAgICBlbHNlCisgICAgICAgIFdhc21DYWxs
UmVmTm9UbHM6OmVtaXQodGhpcywgY2FsbGVlLCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNp
Z25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7
CisgICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOworCisgICAgcmV0dXJuIHsgfTsKK30K
KwogYXV0byBMTEludEdlbmVyYXRvcjo6YWRkUmVmSXNOdWxsKEV4cHJlc3Npb25UeXBlIHZhbHVl
LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgcmVzdWx0
ID0gcHVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNs
b3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNw
cAppbmRleCBhNjFkMGNjN2ZmMzI5ZGI1ZDYxOTRlZTY4NWJkNTI5MTljYmNkNDU5Li4wZjY1YTkw
ZjA0ZjQwMWRlNWFiYjFmZjk0ZTBjYjg0NmEzOGNhZjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIkJ5dGVjb2RlU3RydWN0cy5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1
ZGUgIldhc21CQlFQbGFuLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxlZS5oIgpAQCAtNDAsNiArNDEs
NyBAQAogI2luY2x1ZGUgIldhc21PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiV2FzbVNpZ25hdHVy
ZUlubGluZXMuaCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3QuaCIKKyNpbmNsdWRlICJXZWJBc3Nl
bWJseUZ1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewogCkBA
IC00OTgsNiArNTAwLDQwIEBAIFdBU01fU0xPV19QQVRIX0RFQ0woY2FsbF9pbmRpcmVjdF9ub190
bHMpCiAgICAgcmV0dXJuIGRvV2FzbUNhbGxJbmRpcmVjdChjYWxsRnJhbWUsIGluc3RhbmNlLCBm
dW5jdGlvbkluZGV4LCBpbnN0cnVjdGlvbi5tX3RhYmxlSW5kZXgsIGluc3RydWN0aW9uLm1fc2ln
bmF0dXJlSW5kZXgpOwogfQogCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRvV2FzbUNhbGxS
ZWYoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFdhc206Okluc3RhbmNlKiBjYWxsZXJJbnN0YW5jZSwg
SlNWYWx1ZSB0YXJnZXRSZWZlcmVuY2UsIHVuc2lnbmVkIHNpZ25hdHVyZUluZGV4KQoreworICAg
IFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOworCisgICAgQVNTRVJUKHRhcmdldFJlZmVyZW5jZS5p
c09iamVjdCgpKTsKKyAgICBKU09iamVjdCogcmVmZXJlbmNlQXNPYmplY3QgPSBqc0Nhc3Q8SlNP
YmplY3QqPih0YXJnZXRSZWZlcmVuY2UpOworCisgICAgQVNTRVJUKHJlZmVyZW5jZUFzT2JqZWN0
LT5pbmhlcml0czxXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZT4oY2FsbGVySW5zdGFuY2UtPm93bmVy
PEpTT2JqZWN0PigpLT52bSgpKSk7CisgICAgYXV0byogd2FzbUZ1bmN0aW9uID0ganNDYXN0PFdl
YkFzc2VtYmx5RnVuY3Rpb25CYXNlKj4ocmVmZXJlbmNlQXNPYmplY3QpOworICAgIFdhc206Oldh
c21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gZnVuY3Rpb24gPSB3YXNtRnVuY3Rpb24tPmltcG9y
dGFibGVGdW5jdGlvbigpOworICAgIFdhc206Okluc3RhbmNlKiBjYWxsZWVJbnN0YW5jZSA9ICZ3
YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPmluc3RhbmNlKCk7CisKKyAgICBpZiAoY2FsbGVlSW5z
dGFuY2UgIT0gY2FsbGVySW5zdGFuY2UpCisgICAgICAgIGNhbGxlZUluc3RhbmNlLT5zZXRDYWNo
ZWRTdGFja0xpbWl0KGNhbGxlckluc3RhbmNlLT5jYWNoZWRTdGFja0xpbWl0KCkpOworCisgICAg
QVNTRVJUKGZ1bmN0aW9uLnNpZ25hdHVyZUluZGV4ID09IFdhc206OlNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoQ09ERV9CTE9DSygpLT5zaWduYXR1cmUoc2lnbmF0dXJlSW5kZXgpKSk7CisgICAg
VU5VU0VEX1BBUkFNKHNpZ25hdHVyZUluZGV4KTsKKyAgICBXQVNNX0NBTExfUkVUVVJOKGNhbGxl
ZUluc3RhbmNlLCBmdW5jdGlvbi5lbnRyeXBvaW50TG9hZExvY2F0aW9uLT5leGVjdXRhYmxlQWRk
cmVzcygpLCBXYXNtRW50cnlQdHJUYWcpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNMKGNhbGxf
cmVmKQoreworICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbUNhbGxSZWYsIFdhc21P
cGNvZGVUcmFpdHM+KCk7CisgICAgSlNWYWx1ZSByZWZlcmVuY2UgPSBKU1ZhbHVlOjpkZWNvZGUo
UkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uUmVmZXJlbmNlKS5lbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihjYWxsRnJhbWUsIGluc3RhbmNlLCByZWZlcmVuY2Us
IGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOworfQorCitXQVNNX1NMT1dfUEFUSF9ERUNM
KGNhbGxfcmVmX25vX3RscykKK3sKKyAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21D
YWxsUmVmTm9UbHMsIFdhc21PcGNvZGVUcmFpdHM+KCk7CisgICAgSlNWYWx1ZSByZWZlcmVuY2Ug
PSBKU1ZhbHVlOjpkZWNvZGUoUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uUmVmZXJlbmNlKS5l
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gZG9XYXNtQ2FsbFJlZihjYWxsRnJhbWUsIGlu
c3RhbmNlLCByZWZlcmVuY2UsIGluc3RydWN0aW9uLm1fc2lnbmF0dXJlSW5kZXgpOworfQorCiBX
QVNNX1NMT1dfUEFUSF9ERUNMKHNldF9nbG9iYWxfcmVmKQogewogICAgIGF1dG8gaW5zdHJ1Y3Rp
b24gPSBwYy0+YXM8V2FzbVNldEdsb2JhbFJlZiwgV2FzbU9wY29kZVRyYWl0cz4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuaAppbmRleCBmOGFhY2EwOGQzMTI4
ODRhZjE3YmNiYmI3N2I3NmRlYmY0NjVkMzJhLi41YjJiOGYyODk1YTFlNmM4MmY0MDlmNmU1ZTg2
Y2NkZjBmZDUwNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRo
cy5oCkBAIC03Niw2ICs3Niw4IEBAIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNhbGwpOwog
V0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9ub190bHMpOwogV0FTTV9TTE9XX1BBVEhf
SElEREVOX0RFQ0woY2FsbF9pbmRpcmVjdCk7CiBXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChj
YWxsX2luZGlyZWN0X25vX3Rscyk7CitXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX3Jl
Zik7CitXQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTChjYWxsX3JlZl9ub190bHMpOwogV0FTTV9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2V0X2dsb2JhbF9yZWYpOwogV0FTTV9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2V0X2dsb2JhbF9yZWZfcG9ydGFibGVfYmluZGluZyk7CiBXQVNNX1NMT1dfUEFU
SF9ISURERU5fREVDTChtZW1vcnlfYXRvbWljX3dhaXQzMik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmNwcAppbmRleCA3ZWY3MzQ4
M2IyOGEwOGYyMWE2YzhhNTg0N2VjNjNkOTAwZDI4M2NjLi45OTdhZWQ1MmY1YTQ4OTU0MzM3NDI1
ZWIwOTY0ZWU5NTU3YTk5OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5jcHAKQEAgLTEwNSwxNSArMTA1LDcgQEAgdm9pZCBK
U1dlYkFzc2VtYmx5VGFibGU6OnNldCh1aW50MzJfdCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSkKICAg
ICBtX3RhYmxlLT5zZXQoaW5kZXgsIHZhbHVlKTsKIH0KIAotdm9pZCBKU1dlYkFzc2VtYmx5VGFi
bGU6OnNldCh1aW50MzJfdCBpbmRleCwgV2ViQXNzZW1ibHlGdW5jdGlvbiogZnVuY3Rpb24pCi17
Ci0gICAgUkVMRUFTRV9BU1NFUlQoaW5kZXggPCBsZW5ndGgoKSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQobV90YWJsZS0+YXNGdW5jcmVmVGFibGUoKSk7Ci0gICAgYXV0byYgc3ViVGhpcyA9ICpzdGF0
aWNfY2FzdDxXYXNtOjpGdW5jUmVmVGFibGUqPigmbV90YWJsZS5nZXQoKSk7Ci0gICAgc3ViVGhp
cy5zZXRGdW5jdGlvbihpbmRleCwgZnVuY3Rpb24sIGZ1bmN0aW9uLT5pbXBvcnRhYmxlRnVuY3Rp
b24oKSwgJmZ1bmN0aW9uLT5pbnN0YW5jZSgpLT5pbnN0YW5jZSgpKTsKLX0KLQotdm9pZCBKU1dl
YkFzc2VtYmx5VGFibGU6OnNldCh1aW50MzJfdCBpbmRleCwgV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24qIGZ1bmN0aW9uKQordm9pZCBKU1dlYkFzc2VtYmx5VGFibGU6OnNldCh1aW50MzJfdCBp
bmRleCwgV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UqIGZ1bmN0aW9uKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fdGFibGUtPmFz
RnVuY3JlZlRhYmxlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5VGFibGUuaAppbmRleCBmZDU5ZjIyNDRmY2UxNzBkNTA3ZDlhZjNmMWViYzM5
MTRkNTgwYzFiLi42ZjQxNjIyOWViYmY0Y2MwNmZlNTRhNzlmZDA0ZDdkNjcwZTYwYWQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUu
aApAQCAtNjAsOCArNjAsNyBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgYWxsb2NhdGVkTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV90YWJsZS0+YWxsb2NhdGVkTGVuZ3RoKGxlbmd0aCgpKTsgfQog
ICAgIGJvb2wgZ3Jvdyh1aW50MzJfdCBkZWx0YSwgSlNWYWx1ZSBkZWZhdWx0VmFsdWUpIFdBUk5f
VU5VU0VEX1JFVFVSTjsKICAgICBKU1ZhbHVlIGdldCh1aW50MzJfdCk7Ci0gICAgdm9pZCBzZXQo
dWludDMyX3QsIFdlYkFzc2VtYmx5RnVuY3Rpb24qKTsKLSAgICB2b2lkIHNldCh1aW50MzJfdCwg
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24qKTsKKyAgICB2b2lkIHNldCh1aW50MzJfdCwgV2Vi
QXNzZW1ibHlGdW5jdGlvbkJhc2UqKTsKICAgICB2b2lkIHNldCh1aW50MzJfdCwgSlNWYWx1ZSk7
CiAgICAgdm9pZCBjbGVhcih1aW50MzJfdCk7CiAgICAgSlNPYmplY3QqIHR5cGUoSlNHbG9iYWxP
YmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggZjM0OTRjOGZkZTU2ZDA1MzhkYzMyNDhmZTZmYWUxZjEz
MGYxYzY2OC4uNTkyMmMwYjg5ZjU4MGEwOGIwMjU3ZGM1ZjAyNjNlNGEyM2ZiZDEzZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAKQEAgLTQ1NCw5ICs0NTQsOCBAQCBTdHJ1Y3R1cmUqIFdlYkFzc2VtYmx5RnVuY3Rpb246
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogfQogCiBX
ZWJBc3NlbWJseUZ1bmN0aW9uOjpXZWJBc3NlbWJseUZ1bmN0aW9uKFZNJiB2bSwgTmF0aXZlRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFdhc206OkNhbGxlZSYganNFbnRyeXBvaW50LCBXYXNtOjpXYXNtVG9X
YXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gd2FzbVRvV2FzbUVudHJ5cG9pbnRM
b2FkTG9jYXRpb24sIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4KQotICAgIDog
QmFzZSB7IHZtLCBleGVjdXRhYmxlLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSB9CisgICAgOiBC
YXNlIHsgdm0sIGV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBXYXNtOjpXYXNt
VG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIHsgc2lnbmF0dXJlSW5kZXgsIHdhc21Ub1dhc21FbnRy
eXBvaW50TG9hZExvY2F0aW9uIH0gfQogICAgICwgbV9qc0VudHJ5cG9pbnQgeyBqc0VudHJ5cG9p
bnQuZW50cnlwb2ludCgpIH0KLSAgICAsIG1faW1wb3J0YWJsZUZ1bmN0aW9uIHsgc2lnbmF0dXJl
SW5kZXgsIHdhc21Ub1dhc21FbnRyeXBvaW50TG9hZExvY2F0aW9uIH0KIHsgfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBWaXNpdG9yPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCmluZGV4IDk3YjNjMTMxNWNmOGJlMmYzYjE1ZGVmOGI3
ZTFjNGYwNGFiY2YxZDMuLmY4NDNlMjliODVlNTgxM2M0MDdhNTVlMWFjMDJkMTk5NTQzNzhmMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmgKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKIGNsYXNzIFdlYkFzc2VtYmx5SW5zdGFu
Y2U7Ci11c2luZyBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOwogCiBjbGFzcyBX
ZWJBc3NlbWJseUZ1bmN0aW9uIGZpbmFsIDogcHVibGljIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNl
IHsKIHB1YmxpYzoKQEAgLTYxLDEwICs2MCw2IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgV2ViQXNzZW1ibHlGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiwgV2FzbTo6Q2FsbGVlJiBqc0VudHJ5cG9pbnQsIFdhc21Ub1dhc21JbXBvcnRhYmxl
RnVuY3Rpb246OkxvYWRMb2NhdGlvbiwgV2FzbTo6U2lnbmF0dXJlSW5kZXgpOwogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSk7CiAKLSAgICBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1faW1wb3J0YWJsZUZ1bmN0aW9uLnNpZ25hdHVyZUluZGV4OyB9Ci0gICAgV2FzbVRv
V2FzbUltcG9ydGFibGVGdW5jdGlvbjo6TG9hZExvY2F0aW9uIGVudHJ5cG9pbnRMb2FkTG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydGFibGVGdW5jdGlvbi5lbnRyeXBvaW50TG9hZExv
Y2F0aW9uOyB9Ci0gICAgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBpbXBvcnRhYmxlRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydGFibGVGdW5jdGlvbjsgfQotCiAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPFdhc21FbnRyeVB0clRhZz4ganNFbnRyeXBvaW50KEFyaXR5Q2hl
Y2tNb2RlIGFyaXR5KQogICAgIHsKICAgICAgICAgaWYgKGFyaXR5ID09IEFyaXR5Q2hlY2tOb3RS
ZXF1aXJlZCkKQEAgLTczLDggKzY4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9qc0Vu
dHJ5cG9pbnQ7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkVudHJ5cG9p
bnRMb2FkTG9jYXRpb24oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2ViQXNzZW1ibHlGdW5j
dGlvbiwgbV9pbXBvcnRhYmxlRnVuY3Rpb24pICsgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlv
bjo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9uKCk7IH0KLQogICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBqc0NhbGxFbnRyeXBvaW50KCkKICAgICB7CiAgICAg
ICAgIGlmIChtX2pzQ2FsbEVudHJ5cG9pbnQpCkBAIC05NSwxMSArODgsMTAgQEAgcHJpdmF0ZToK
IAogICAgIFJlZ2lzdGVyU2V0IGNhbGxlZVNhdmVzKCkgY29uc3Q7CiAKLSAgICAvLyBJdCdzIHNh
ZmUgdG8ganVzdCBob2xkIHRoZSByYXcgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbi9qc0Vu
dHJ5cG9pbnQgYmVjYXVzZSB3ZSBoYXZlIGEgcmVmZXJlbmNlCisgICAgLy8gSXQncyBzYWZlIHRv
IGp1c3QgaG9sZCB0aGUgcmF3IGpzRW50cnlwb2ludCBiZWNhdXNlIHdlIGhhdmUgYSByZWZlcmVu
Y2UKICAgICAvLyB0byBvdXIgSW5zdGFuY2UsIHdoaWNoIHBvaW50cyB0byB0aGUgTW9kdWxlIHRo
YXQgZXhwb3J0ZWQgdXMsIHdoaWNoCiAgICAgLy8gZW5zdXJlcyB0aGF0IHRoZSBhY3R1YWwgU2ln
bmF0dXJlL2NvZGUgZG9lc24ndCBnZXQgZGVhbGxvY2F0ZWQuCiAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPFdhc21FbnRyeVB0clRhZz4gbV9qc0VudHJ5cG9pbnQ7Ci0gICAgV2FzbVRvV2FzbUlt
cG9ydGFibGVGdW5jdGlvbiBtX2ltcG9ydGFibGVGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8
SlNUb1dhc21JQ0NhbGxlZT4gbV9qc1RvV2FzbUlDQ2FsbGVlOwogICAgIC8vIFVzZWQgZm9yIEpT
IGNhbGxpbmcgaW50byBXYXNtLgogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBtX2pzQ2FsbEVudHJ5cG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5jcHAKaW5kZXggZGFlN2JlMTI2
OGVhM2NhNmQ0ZDRiMGZlZTJiNTZjMzMxZTM4ZGEwOS4uYjUzMDZiMWZjMzhiZmEyNzMxZTkyMmI5
MzdmNzU4ZDI5MDEwNjIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmNwcApAQCAtMzcsOCArMzcsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNl
OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZSIsICZCYXNlOjpzX2luZm8sIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoV2ViQXNzZW1ibHlGdW5jdGlvbkJh
c2UpIH07CiAKLVdlYkFzc2VtYmx5RnVuY3Rpb25CYXNlOjpXZWJBc3NlbWJseUZ1bmN0aW9uQmFz
ZShWTSYgdm0sIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorV2ViQXNzZW1ibHlGdW5jdGlvbkJh
c2U6OldlYkFzc2VtYmx5RnVuY3Rpb25CYXNlKFZNJiB2bSwgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb24gaW1wb3J0YWJsZUZ1bmN0aW9uKQogICAg
IDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCisgICAgLCBt
X2ltcG9ydGFibGVGdW5jdGlvbihpbXBvcnRhYmxlRnVuY3Rpb24pCiB7IH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVmlzaXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25CYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oCmluZGV4IGQyYjIzNTRjZGEyNTY0Yzk5Y2Yz
YmE4YjcyMzlhY2M5NGNmNjhjMTQuLjAwODA4MjZlM2U4YWRjMTg5YjEyOTVlYzJhMTgxYWUzYWJh
ZDc0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb25CYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbkJhc2UuaApAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Cit1
c2luZyBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOwogCiBjbGFzcyBXZWJBc3Nl
bWJseUZ1bmN0aW9uQmFzZSA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKIHB1YmxpYzoKQEAgLTQzLDE0
ICs0NCwyNiBAQCBwdWJsaWM6CiAgICAgREVDTEFSRV9JTkZPOwogCiAgICAgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiBpbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0K
KworICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4KCkgY29uc3QgeyByZXR1
cm4gbV9pbXBvcnRhYmxlRnVuY3Rpb24uc2lnbmF0dXJlSW5kZXg7IH0KKyAgICBXYXNtVG9XYXNt
SW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faW1wb3J0YWJsZUZ1bmN0aW9uLmVudHJ5cG9pbnRMb2FkTG9jYXRp
b247IH0KKyAgICBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIGltcG9ydGFibGVGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faW1wb3J0YWJsZUZ1bmN0aW9uOyB9CisKICAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mSW5zdGFuY2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoV2Vi
QXNzZW1ibHlGdW5jdGlvbkJhc2UsIG1faW5zdGFuY2UpOyB9CiAKKyAgICBzdGF0aWMgcHRyZGlm
Zl90IG9mZnNldE9mRW50cnlwb2ludExvYWRMb2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZSwgbV9pbXBvcnRhYmxlRnVuY3Rpb24pICsgV2Fz
bVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjo6b2Zmc2V0T2ZFbnRyeXBvaW50TG9hZExvY2F0aW9u
KCk7IH0KKwogcHJvdGVjdGVkOgogICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5hdGl2ZUV4ZWN1dGFibGUqLCB1bnNpZ25lZCBsZW5ndGgs
IGNvbnN0IFN0cmluZyYgbmFtZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKik7Ci0gICAgV2ViQXNz
ZW1ibHlGdW5jdGlvbkJhc2UoVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqKTsKKyAgICBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZShWTSYsIE5hdGl2ZUV4
ZWN1dGFibGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFdhc21Ub1dhc21JbXBvcnRh
YmxlRnVuY3Rpb24pOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4g
bV9pbnN0YW5jZTsKKworICAgIC8vIEl0J3Mgc2FmZSB0byBqdXN0IGhvbGQgdGhlIHJhdyBXYXNt
VG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uIGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZmVyZW5jZQorICAg
IC8vIHRvIG91ciBJbnN0YW5jZSwgd2hpY2ggcG9pbnRzIHRvIHRoZSBDb2RlQmxvY2ssIHdoaWNo
IHBvaW50cyB0byB0aGUgTW9kdWxlCisgICAgLy8gdGhhdCBleHBvcnRlZCB1cywgd2hpY2ggZW5z
dXJlcyB0aGF0IHRoZSBhY3R1YWwgU2lnbmF0dXJlL2NvZGUgZG9lc24ndCBnZXQgZGVhbGxvY2F0
ZWQuCisgICAgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBtX2ltcG9ydGFibGVGdW5jdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwCmluZGV4
IDA0MzMzMTYxYTVhYWE1MjJkZGRiZmM0MjhmYTdhMGUxOWVmOGFmNGUuLmUzMmY0ZWNiYTQ2YmNl
MDQ0MjEyNDVlYjE4MTA3MDBhNjlhODY2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHAKQEAg
LTM5LDggKzM5LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
OjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGkKIHN0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKGNhbGxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbik7CiAKIFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbihWTSYgdm0s
IE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0
aW9uIGltcG9ydGFibGVGdW5jdGlvbikKLSAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKQotICAgICwgbV9pbXBvcnRhYmxlRnVuY3Rpb24oaW1wb3J0YWJs
ZUZ1bmN0aW9uKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIGltcG9ydGFibGVGdW5jdGlvbikKIHsgfQogCiBXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbiogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogZnVu
Y3Rpb24sIHVuc2lnbmVkIGltcG9ydEluZGV4LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3Rh
bmNlLCBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
bi5oCmluZGV4IGJmYmQzZDU3OGQzZmEzNWNjZTNiYzM1OTYzOWU5NmEwNWMwNDM0NmQuLjhjN2Fl
NmRlYzcyZTlmZjYwNzM0OGRlNWE1YzAwMGUzYTk0NmFmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24u
aApAQCAtMzIsOCArMzIsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdXNpbmcgV2FzbTo6V2Fz
bVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbjsKLQogY2xhc3MgV2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UgewogcHVibGljOgog
ICAgIHVzaW5nIEJhc2UgPSBXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZTsKQEAgLTUxLDkgKzQ5LDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBKU09iamVjdCosIHVuc2lnbmVkIGlt
cG9ydEluZGV4LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqLCBXYXNtOjpTaWduYXR1cmVJbmRleCk7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAotICAgIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRhYmxlRnVuY3Rpb24uc2lnbmF0dXJlSW5kZXg7IH0K
LSAgICBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gIGVudHJ5cG9p
bnRMb2FkTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydGFibGVGdW5jdGlvbi5lbnRy
eXBvaW50TG9hZExvY2F0aW9uOyB9Ci0gICAgV2FzbVRvV2FzbUltcG9ydGFibGVGdW5jdGlvbiBp
bXBvcnRhYmxlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydGFibGVGdW5jdGlvbjsg
fQogICAgIEpTT2JqZWN0KiBmdW5jdGlvbigpIHsgcmV0dXJuIG1fZnVuY3Rpb24uZ2V0KCk7IH0K
IAogcHJpdmF0ZToKQEAgLTYyLDEwICs1Nyw2IEBAIHByaXZhdGU6CiAgICAgREVDTEFSRV9WSVNJ
VF9DSElMRFJFTjsKIAogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gbV9mdW5jdGlvbjsKLSAg
ICAvLyBJdCdzIHNhZmUgdG8ganVzdCBob2xkIHRoZSByYXcgV2FzbVRvV2FzbUltcG9ydGFibGVG
dW5jdGlvbiBiZWNhdXNlIHdlIGhhdmUgYSByZWZlcmVuY2UKLSAgICAvLyB0byBvdXIgSW5zdGFu
Y2UsIHdoaWNoIHBvaW50cyB0byB0aGUgQ29kZUJsb2NrLCB3aGljaCBwb2ludHMgdG8gdGhlIE1v
ZHVsZQotICAgIC8vIHRoYXQgZXhwb3J0ZWQgdXMsIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGUgYWN0
dWFsIFNpZ25hdHVyZS9jb2RlIGRvZXNuJ3QgZ2V0IGRlYWxsb2NhdGVkLgotICAgIFdhc21Ub1dh
c21JbXBvcnRhYmxlRnVuY3Rpb24gbV9pbXBvcnRhYmxlRnVuY3Rpb247CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20u
anNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgppbmRleCAyYTcyODdk
OTYwOTAwMDE5ZmRhMTFjZDY3NGYyYTAxYjJkYmYxNTg4Li43OTQwOTJiNzZkZDcwZjQ3MjQzN2Y3
NjljYTQ3YjQ2NDVmZmNiODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCkBA
IC04NSw2ICs4NSw3IEBACiAgICAgICAgICJkYXRhLmRyb3AiOiAgICAgICAgICAgeyAiY2F0ZWdv
cnkiOiAiZXh0dGFibGUiLCAgICJ2YWx1ZSI6ICAyNTIsICJyZXR1cm4iOiBbXSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJzZWdtZW50X2luZGV4IiwgICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAic2hyaW5rcyB0aGUgc2l6ZSBvZiB0aGUgc2VnbWVudCB0byB6ZXJv
IiwgImV4dGVuZGVkT3AiOiA5IH0sCiAgICAgICAgICJjYWxsIjogICAgICAgICAgICAgICAgeyAi
Y2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAg
ICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwK
ICAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAg
ICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsi
bmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6
ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0s
CisgICAgICAgICJjYWxsX3JlZiI6ICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAg
ICAgICJ2YWx1ZSI6ICAyMCwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiY2FsbCBhIGZ1bmN0aW9uIHJlZmVyZW5jZSIgfSwKICAgICAgICAgImkzMi5sb2FkOF9zIjog
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJu
IjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIi
XSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwg
ICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBl
IjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAg
ICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAg
ICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRl
IjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5h
bWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlvbiI6ICJs
b2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQxNl9zIjogICAgICAgIHsgImNh
dGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1cm4iOiBbImkzMiJdLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAg
ICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlw
ZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMy
In1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGUwNTgxZDQ2YmY2MDRi
Yjc5NWFkM2E2MjE1MDllNDU5ZTdiZWE4MC4uZTZiYTRjYmY2ZDFhZDIxZDlhOTQ3YmJhYTk1OWI4
ZWMzNzUzZGYwMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0yOSAgRG1pdHJ5IEJlemhldHNrb3Yg
IDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXQVNNLUZ1bmN0aW9uLVJlZmVy
ZW5jZXNdIEFkZCBjYWxsX3JlZiBpbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyOTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGJhc2ljIHRlc3RzIGZvciBuZXcgY2FsbF9yZWYg
aW5zdHJ1Y3Rpb246CisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9mdW5j
dGlvbi1yZWZlcmVuY2VzL2Jsb2IvbWFzdGVyL3Byb3Bvc2Fscy9mdW5jdGlvbi1yZWZlcmVuY2Vz
L092ZXJ2aWV3Lm1kLgorICAgICAgICBBZGQgdGVzdHMgZm9yIGNhbGxpbmcgc2FtZS1pbnN0YW5j
ZSB3YXNtIGZ1bmN0aW9uLCBmb3JlaWduLWluc3RhbmNlCisgICAgICAgIHdhc20gZnVuY3Rpb24g
YW5kIGZvciBjYWxsaW5nIGltcG9ydGVkIGpzIGZ1bmN0aW9uLgorCisgICAgICAgICogd2FzbS55
YW1sOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tcmVmZXJlbmNlcy9jYWxsX3JlZi5qczogQWRk
ZWQuCisgICAgICAgIChtb2R1bGUpOgorICAgICAgICAoYXN5bmMgYmFzaWNzKToKKyAgICAgICAg
KGFzeW5jIGluZGlyZWN0Q2FsbCk6CisgICAgICAgIChhc3luYyBpbXBvcnRIb3N0Q2FsbCk6Cisg
ICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjEtMDQtMjggIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBleGNlcHRpb24gYXNzZXJ0aW9ucyBpbiBsaWdo
dCBvZiB0aGUgVGVybWluYXRpb25FeGNlcHRpb24uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20u
eWFtbCBiL0pTVGVzdHMvd2FzbS55YW1sCmluZGV4IGRlYTJhMWI3NTZjNTE0MGRhM2VmZTYwOWVi
MDFlM2Y4M2IzOTViNGEuLjJlY2I2MzRkYmY1YjJiZWU3MmNkZDEzYzQwMTc5YmYyZjVlOTRiYzEg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55YW1sCisrKyBiL0pTVGVzdHMvd2FzbS55YW1sCkBA
IC0zMyw2ICszMyw4IEBACiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3MgcGFyc2VS
dW5Db21tYW5kcwogLSBwYXRoOiB3YXNtL3JlZmVyZW5jZXMKICAgY21kOiBydW5XZWJBc3NlbWJs
eVN1aXRlIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCistIHBhdGg6IHdhc20vZnVuY3Rpb24tcmVm
ZXJlbmNlcworICBjbWQ6IHJ1bldlYkFzc2VtYmx5U3VpdGUgdW5sZXNzIHBhcnNlUnVuQ29tbWFu
ZHMKIC0gcGF0aDogd2FzbS9mdXp6CiAgIGNtZDogcnVuV2ViQXNzZW1ibHlTdWl0ZSB1bmxlc3Mg
cGFyc2VSdW5Db21tYW5kcwogLSBwYXRoOiB3YXNtL2xvd0V4ZWN1dGFibGVNZW1vcnkKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzL2NhbGxfcmVmLmpzIGIvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXJlZmVyZW5jZXMvY2FsbF9yZWYuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQy
YjJhZGNkMmI0NmUxOTU5OWQ1ODQ2MzU2NzU4OTA1ZTdlOGM0NQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvd2FzbS9mdW5jdGlvbi1yZWZlcmVuY2VzL2NhbGxfcmVmLmpzCkBAIC0wLDAgKzEs
NzUgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdlYkFzc2VtYmx5VHlwZWRGdW5j
dGlvblJlZmVyZW5jZXM9dHJ1ZSIpCitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0
LmpzJzsKK2ltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSAiLi4vd2FidC13cmFwcGVyLmpzIjsK
KworZnVuY3Rpb24gbW9kdWxlKGJ5dGVzLCB2YWxpZCA9IHRydWUpIHsKKyAgbGV0IGJ1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpOworICBsZXQgdmlldyA9IG5ldyBVaW50OEFy
cmF5KGJ1ZmZlcik7CisgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsK
KyAgICB2aWV3W2ldID0gYnl0ZXMuY2hhckNvZGVBdChpKTsKKyAgfQorICByZXR1cm4gbmV3IFdl
YkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpOworfQorCithc3luYyBmdW5jdGlvbiBjYWxsRnVuY3Rp
b25Gcm9tVGhlU2FtZUluc3RhbmNlKCkgeworICAvKgorICAobW9kdWxlCisgICAgKGVsZW0gZGVj
bGFyZSBmdW5jcmVmIChyZWYuZnVuYyAkZm9vKSkKKyAgICAoZnVuYyAkZm9vIChwYXJhbSAkeCBp
MzIpIChyZXN1bHQgaTMyKQorICAgICAgKGkzMi5hZGQgKGxvY2FsLmdldCAkeCkKKyAgICAgICAg
ICAgICAgIChpMzIuY29uc3QgMTkpCisgICAgICApCisgICAgKQorICAgIChmdW5jIChleHBvcnQg
Im1haW4iKSAocmVzdWx0IGkzMikKKyAgICAgIChjYWxsX3JlZiAoaTMyLmNvbnN0IDEwKSAocmVm
LmZ1bmMgJGZvbykpCisgICAgKQorICApCisgICovCisgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJB
c3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4MGFceDAyXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdmXHgwM1x4MDNc
eDAyXHgwMFx4MDFceDA3XHgwOFx4MDFceDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwOVx4
MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4MGFceDExXHgwMlx4MDdceDAwXHgyMFx4MDBceDQxXHgx
M1x4NmFceDBiXHgwN1x4MDBceDQxXHgwYVx4ZDJceDAwXHgxNFx4MGIiKSk7CisgIGFzc2VydC5l
cShpbnN0YW5jZS5leHBvcnRzLm1haW4oKSwgMjkpOworfQorCithc3luYyBmdW5jdGlvbiBjYWxs
RnVuY3Rpb25Gcm9tVGhlRGlmZmVyZW50SW5zdGFuY2UoKSB7CisgIGxldCB3YXQgPSBgCisgICht
b2R1bGUKKyAgICAoZnVuYyAoZXhwb3J0ICJiYXIiKSAocGFyYW0gJHggaTMyKSAocmVzdWx0IGkz
MikKKyAgICAgIChpMzIuYWRkIChsb2NhbC5nZXQgJHgpCisgICAgICAgICAgICAgICAoaTMyLmNv
bnN0IDE5KSkKKyAgICApCisgIClgOworICBjb25zdCBiYXJQcm92aWRlciA9IGF3YWl0IGluc3Rh
bnRpYXRlKHdhdCwge30sIHtyZWZlcmVuY2VfdHlwZXM6IHRydWV9KTsKKworICAvKgorICAobW9k
dWxlCisgICAgKGltcG9ydCAiZXhwb3J0cyIgImJhciIgKGZ1bmMgJGJhciAocGFyYW0gaTMyKSAo
cmVzdWx0IGkzMikpKQorICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgJGJhcikp
CisgICAgKGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAgKGNhbGxfcmVm
IChpMzIuY29uc3QgMTApIChyZWYuZnVuYyAkYmFyKSkKKyAgICApCisgICkKKyAgKi8KKyAgbGV0
IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAorICAgIG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMVx4N2ZceDAxXHg3
Zlx4NjBceDAwXHgwMVx4N2ZceDAyXHgwZlx4MDFceDA3XHg2NVx4NzhceDcwXHg2Zlx4NzJceDc0
XHg3M1x4MDNceDYyXHg2MVx4NzJceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4MDFc
eDA0XHg2ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwOVx4MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4
MGFceDA5XHgwMVx4MDdceDAwXHg0MVx4MGFceGQyXHgwMFx4MTRceDBiIiksCisgICAgYmFyUHJv
dmlkZXIpOworICBhc3NlcnQuZXEoaW5zdGFuY2UuZXhwb3J0cy5tYWluKCksIDI5KTsKK30KKwor
YXN5bmMgZnVuY3Rpb24gY2FsbEZ1bmN0aW9uRnJvbUpTKCkgeworICAvKgorICAobW9kdWxlCisg
ICAgKGltcG9ydCAiZXhwb3J0cyIgImJhciIgKGZ1bmMgJGJhciAocGFyYW0gaTMyKSAocmVzdWx0
IGkzMikpKQorICAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgJGJhcikpCisgICAg
KGZ1bmMgKGV4cG9ydCAibWFpbiIpIChyZXN1bHQgaTMyKQorICAgICAgKGNhbGxfcmVmIChpMzIu
Y29uc3QgMTApIChyZWYuZnVuYyAkYmFyKSkKKyAgICApCisgICkKKyAgKi8KKyAgbGV0IGluc3Rh
bmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAorICAgIG1vZHVsZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHgwYVx4MDJceDYwXHgwMVx4N2ZceDAxXHg3Zlx4NjBc
eDAwXHgwMVx4N2ZceDAyXHgwZlx4MDFceDA3XHg2NVx4NzhceDcwXHg2Zlx4NzJceDc0XHg3M1x4
MDNceDYyXHg2MVx4NzJceDAwXHgwMFx4MDNceDAyXHgwMVx4MDFceDA3XHgwOFx4MDFceDA0XHg2
ZFx4NjFceDY5XHg2ZVx4MDBceDAxXHgwOVx4MDVceDAxXHgwM1x4MDBceDAxXHgwMFx4MGFceDA5
XHgwMVx4MDdceDAwXHg0MVx4MGFceGQyXHgwMFx4MTRceDBiIiksCisgICAge2V4cG9ydHM6IHti
YXIgOiB4ID0+IHggKyAxOX19KTsKKyAgYXNzZXJ0LmVxKGluc3RhbmNlLmV4cG9ydHMubWFpbigp
LCAyOSk7Cit9CisKK2Fzc2VydC5hc3luY1Rlc3QoY2FsbEZ1bmN0aW9uRnJvbVRoZVNhbWVJbnN0
YW5jZSgpKTsKK2Fzc2VydC5hc3luY1Rlc3QoY2FsbEZ1bmN0aW9uRnJvbVRoZURpZmZlcmVudElu
c3RhbmNlKCkpOworYXNzZXJ0LmFzeW5jVGVzdChjYWxsRnVuY3Rpb25Gcm9tSlMoKSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgpp
bmRleCAyYTcyODdkOTYwOTAwMDE5ZmRhMTFjZDY3NGYyYTAxYjJkYmYxNTg4Li43OTQwOTJiNzZk
ZDcwZjQ3MjQzN2Y3NjljYTQ3YjQ2NDVmZmNiODAxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
d2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTg1LDYgKzg1LDcgQEAK
ICAgICAgICAgImRhdGEuZHJvcCI6ICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJleHR0YWJsZSIs
ICAgInZhbHVlIjogIDI1MiwgInJldHVybiI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlh
dGUiOiBbeyJuYW1lIjogInNlZ21lbnRfaW5kZXgiLCAgInR5cGUiOiAidmFydWludDMyIn1dLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJzaHJpbmtzIHRoZSBzaXplIG9mIHRoZSBzZWdtZW50IHRvIHplcm8iLCAiZXh0ZW5kZWRPcCI6
IDkgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxs
IiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJp
bW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWludDMy
In1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAogICAgICAgICAiY2FsbF9p
bmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcs
ICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6
IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAi
dHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInRhYmxlX2lu
ZGV4IiwidHlwZSI6ICJ2YXJ1aW50MzIifV0sImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlv
biBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKKyAgICAgICAgImNhbGxf
cmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIw
LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIi
OiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rp
b24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVn
b3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1d
LCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2Fk
OF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAi
cmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
ImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZs
YWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnki
IH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5
IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsiaTMyIl0sICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAib2Zmc2V0IiwgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlwdGlv
biI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>